Vulnerabilities > CVE-2016-4302 - Improper Restriction of Operations within the Bounds of a Memory Buffer vulnerability in multiple products
Attack vector
LOCAL Attack complexity
LOW Privileges required
NONE Confidentiality impact
HIGH Integrity impact
HIGH Availability impact
HIGH Summary
Heap-based buffer overflow in the parse_codes function in archive_read_support_format_rar.c in libarchive before 3.2.1 allows remote attackers to execute arbitrary code via a RAR file with a zero-sized dictionary.
Vulnerable Configurations
Common Weakness Enumeration (CWE)
Common Attack Pattern Enumeration and Classification (CAPEC)
- Buffer Overflow via Environment Variables This attack pattern involves causing a buffer overflow through manipulation of environment variables. Once the attacker finds that they can modify an environment variable, they may try to overflow associated buffers. This attack leverages implicit trust often placed in environment variables.
- Overflow Buffers Buffer Overflow attacks target improper or missing bounds checking on buffer operations, typically triggered by input injected by an attacker. As a consequence, an attacker is able to write past the boundaries of allocated buffer regions in memory, causing a program crash or potentially redirection of execution as per the attackers' choice.
- Client-side Injection-induced Buffer Overflow This type of attack exploits a buffer overflow vulnerability in targeted client software through injection of malicious content from a custom-built hostile service.
- Filter Failure through Buffer Overflow In this attack, the idea is to cause an active filter to fail by causing an oversized transaction. An attacker may try to feed overly long input strings to the program in an attempt to overwhelm the filter (by causing a buffer overflow) and hoping that the filter does not fail securely (i.e. the user input is let into the system unfiltered).
- MIME Conversion An attacker exploits a weakness in the MIME conversion routine to cause a buffer overflow and gain control over the mail server machine. The MIME system is designed to allow various different information formats to be interpreted and sent via e-mail. Attack points exist when data are converted to MIME compatible format and back.
Nessus
NASL family Scientific Linux Local Security Checks NASL id SL_20160912_LIBARCHIVE_ON_SL7_X.NASL description Security Fix(es) : - A flaw was found in the way libarchive handled hardlink archive entries of non-zero size. Combined with flaws in libarchive last seen 2020-03-18 modified 2016-09-13 plugin id 93454 published 2016-09-13 reporter This script is Copyright (C) 2016-2020 and is owned by Tenable, Inc. or an Affiliate thereof. source https://www.tenable.com/plugins/nessus/93454 title Scientific Linux Security Update : libarchive on SL7.x x86_64 (20160912) code # # (C) Tenable Network Security, Inc. # # The descriptive text is (C) Scientific Linux. # include("compat.inc"); if (description) { script_id(93454); script_version("2.6"); script_set_attribute(attribute:"plugin_modification_date", value:"2020/02/25"); script_cve_id("CVE-2015-8916", "CVE-2015-8917", "CVE-2015-8919", "CVE-2015-8920", "CVE-2015-8921", "CVE-2015-8922", "CVE-2015-8923", "CVE-2015-8924", "CVE-2015-8925", "CVE-2015-8926", "CVE-2015-8928", "CVE-2015-8930", "CVE-2015-8931", "CVE-2015-8932", "CVE-2015-8934", "CVE-2016-1541", "CVE-2016-4300", "CVE-2016-4302", "CVE-2016-4809", "CVE-2016-5418", "CVE-2016-5844", "CVE-2016-6250", "CVE-2016-7166"); script_name(english:"Scientific Linux Security Update : libarchive on SL7.x x86_64 (20160912)"); script_summary(english:"Checks rpm output for the updated packages"); script_set_attribute( attribute:"synopsis", value: "The remote Scientific Linux host is missing one or more security updates." ); script_set_attribute( attribute:"description", value: "Security Fix(es) : - A flaw was found in the way libarchive handled hardlink archive entries of non-zero size. Combined with flaws in libarchive's file system sandboxing, this issue could cause an application using libarchive to overwrite arbitrary files with arbitrary data from the archive. (CVE-2016-5418) - Multiple out-of-bounds write flaws were found in libarchive. Specially crafted ZIP, 7ZIP, or RAR files could cause a heap overflow, potentially allowing code execution in the context of the application using libarchive. (CVE-2016-1541, CVE-2016-4300, CVE-2016-4302) - Multiple out-of-bounds read flaws were found in libarchive. Specially crafted LZA/LZH, AR, MTREE, ZIP, TAR, or RAR files could cause the application to read data out of bounds, potentially disclosing a small amount of application memory, or causing an application crash. (CVE-2015-8919, CVE-2015-8920, CVE-2015-8921, CVE-2015-8923, CVE-2015-8924, CVE-2015-8925, CVE-2015-8926, CVE-2015-8928, CVE-2015-8934) - Multiple NULL pointer dereference flaws were found in libarchive. Specially crafted RAR, CAB, or 7ZIP files could cause an application using libarchive to crash. (CVE-2015-8916, CVE-2015-8917, CVE-2015-8922) - Multiple infinite loop / resource exhaustion flaws were found in libarchive. Specially crafted GZIP or ISO files could cause the application to consume an excessive amount of resources, eventually leading to a crash on memory exhaustion. (CVE-2016-7166, CVE-2015-8930) - A denial of service vulnerability was found in libarchive. A specially crafted CPIO archive containing a symbolic link to a large target path could cause memory allocation to fail, causing an application using libarchive that attempted to view or extract such archive to crash. (CVE-2016-4809) - An integer overflow flaw, leading to a buffer overflow, was found in libarchive's construction of ISO9660 volumes. Attempting to create an ISO9660 volume with 2 GB or 4 GB file names could cause the application to attempt to allocate 20 GB of memory. If this were to succeed, it could lead to an out of bounds write on the heap and potential code execution. (CVE-2016-6250) - Multiple instances of undefined behavior due to arithmetic overflow were found in libarchive. Specially crafted MTREE archives, Compress streams, or ISO9660 volumes could potentially cause the application to fail to read the archive, or to crash. (CVE-2015-8931, CVE-2015-8932, CVE-2016-5844)" ); # https://listserv.fnal.gov/scripts/wa.exe?A2=ind1609&L=scientific-linux-errata&F=&S=&P=1167 script_set_attribute( attribute:"see_also", value:"http://www.nessus.org/u?a3fd90f0" ); script_set_attribute(attribute:"solution", value:"Update the affected packages."); script_set_cvss_base_vector("CVSS2#AV:N/AC:L/Au:N/C:P/I:P/A:P"); script_set_cvss3_base_vector("CVSS:3.0/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H"); script_set_attribute(attribute:"plugin_type", value:"local"); script_set_attribute(attribute:"cpe", value:"p-cpe:/a:fermilab:scientific_linux:bsdcpio"); script_set_attribute(attribute:"cpe", value:"p-cpe:/a:fermilab:scientific_linux:bsdtar"); script_set_attribute(attribute:"cpe", value:"p-cpe:/a:fermilab:scientific_linux:libarchive"); script_set_attribute(attribute:"cpe", value:"p-cpe:/a:fermilab:scientific_linux:libarchive-debuginfo"); script_set_attribute(attribute:"cpe", value:"p-cpe:/a:fermilab:scientific_linux:libarchive-devel"); script_set_attribute(attribute:"cpe", value:"x-cpe:/o:fermilab:scientific_linux"); script_set_attribute(attribute:"vuln_publication_date", value:"2016/05/07"); script_set_attribute(attribute:"patch_publication_date", value:"2016/09/12"); script_set_attribute(attribute:"plugin_publication_date", value:"2016/09/13"); script_set_attribute(attribute:"generated_plugin", value:"current"); script_end_attributes(); script_category(ACT_GATHER_INFO); script_copyright(english:"This script is Copyright (C) 2016-2020 and is owned by Tenable, Inc. or an Affiliate thereof."); script_family(english:"Scientific Linux Local Security Checks"); script_dependencies("ssh_get_info.nasl"); script_require_keys("Host/local_checks_enabled", "Host/cpu", "Host/RedHat/release", "Host/RedHat/rpm-list"); exit(0); } include("audit.inc"); include("global_settings.inc"); include("misc_func.inc"); include("rpm.inc"); if (!get_kb_item("Host/local_checks_enabled")) audit(AUDIT_LOCAL_CHECKS_NOT_ENABLED); release = get_kb_item("Host/RedHat/release"); if (isnull(release) || "Scientific Linux " >!< release) audit(AUDIT_HOST_NOT, "running Scientific Linux"); os_ver = pregmatch(pattern: "Scientific Linux.*release ([0-9]+(\.[0-9]+)?)", string:release); if (isnull(os_ver)) audit(AUDIT_UNKNOWN_APP_VER, "Scientific Linux"); os_ver = os_ver[1]; if (! preg(pattern:"^7([^0-9]|$)", string:os_ver)) audit(AUDIT_OS_NOT, "Scientific Linux 7.x", "Scientific Linux " + os_ver); if (!get_kb_item("Host/RedHat/rpm-list")) audit(AUDIT_PACKAGE_LIST_MISSING); cpu = get_kb_item("Host/cpu"); if (isnull(cpu)) audit(AUDIT_UNKNOWN_ARCH); if (cpu >!< "x86_64" && cpu !~ "^i[3-6]86$") audit(AUDIT_LOCAL_CHECKS_NOT_IMPLEMENTED, "Scientific Linux", cpu); if ("x86_64" >!< cpu) audit(AUDIT_ARCH_NOT, "x86_64", cpu); flag = 0; if (rpm_check(release:"SL7", cpu:"x86_64", reference:"bsdcpio-3.1.2-10.el7_2")) flag++; if (rpm_check(release:"SL7", cpu:"x86_64", reference:"bsdtar-3.1.2-10.el7_2")) flag++; if (rpm_check(release:"SL7", cpu:"x86_64", reference:"libarchive-3.1.2-10.el7_2")) flag++; if (rpm_check(release:"SL7", cpu:"x86_64", reference:"libarchive-debuginfo-3.1.2-10.el7_2")) flag++; if (rpm_check(release:"SL7", cpu:"x86_64", reference:"libarchive-devel-3.1.2-10.el7_2")) flag++; if (flag) { security_report_v4( port : 0, severity : SECURITY_HOLE, extra : rpm_report_get() ); exit(0); } else { tested = pkg_tests_get(); if (tested) audit(AUDIT_PACKAGE_NOT_AFFECTED, tested); else audit(AUDIT_PACKAGE_NOT_INSTALLED, "bsdcpio / bsdtar / libarchive / libarchive-debuginfo / etc"); }
NASL family SuSE Local Security Checks NASL id SUSE_SU-2016-1909-1.NASL description libarchive was updated to fix 20 security issues. These security issues were fixed : - CVE-2015-8918: Overlapping memcpy in CAB parser (bsc#985698). - CVE-2015-8919: Heap out of bounds read in LHA/LZH parser (bsc#985697). - CVE-2015-8920: Stack out of bounds read in ar parser (bsc#985675). - CVE-2015-8921: Global out of bounds read in mtree parser (bsc#985682). - CVE-2015-8922: NULL pointer access in 7z parser (bsc#985685). - CVE-2015-8923: Unclear crashes in ZIP parser (bsc#985703). - CVE-2015-8924: Heap buffer read overflow in tar (bsc#985609). - CVE-2015-8925: Unclear invalid memory read in mtree parser (bsc#985706). - CVE-2015-8926: NULL pointer access in RAR parser (bsc#985704). - CVE-2015-8928: Heap out of bounds read in mtree parser (bsc#985679). - CVE-2015-8929: Memory leak in tar parser (bsc#985669). - CVE-2015-8930: Endless loop in ISO parser (bsc#985700). - CVE-2015-8931: Undefined behavior / signed integer overflow in mtree parser (bsc#985689). - CVE-2015-8932: Compress handler left shifting larger than int size (bsc#985665). - CVE-2015-8933: Undefined behavior / signed integer overflow in TAR parser (bsc#985688). - CVE-2015-8934: Out of bounds read in RAR (bsc#985673). - CVE-2016-4300: Heap buffer overflow vulnerability in the 7zip read_SubStreamsInfo (bsc#985832). - CVE-2016-4301: Stack buffer overflow in the mtree parse_device (bsc#985826). - CVE-2016-4302: Heap buffer overflow in the Rar decompression functionality (bsc#985835). - CVE-2016-4809: Memory allocate error with symbolic links in cpio archives (bsc#984990). Note that Tenable Network Security has extracted the preceding description block directly from the SUSE security advisory. Tenable has attempted to automatically clean and format it as much as possible without introducing additional issues. last seen 2020-06-01 modified 2020-06-02 plugin id 93185 published 2016-08-29 reporter This script is Copyright (C) 2016-2019 and is owned by Tenable, Inc. or an Affiliate thereof. source https://www.tenable.com/plugins/nessus/93185 title SUSE SLED12 / SLES12 Security Update : libarchive (SUSE-SU-2016:1909-1) code # # (C) Tenable Network Security, Inc. # # The descriptive text and package checks in this plugin were # extracted from SUSE update advisory SUSE-SU-2016:1909-1. # The text itself is copyright (C) SUSE. # include("compat.inc"); if (description) { script_id(93185); script_version("2.9"); script_cvs_date("Date: 2019/09/11 11:22:13"); script_cve_id("CVE-2015-8918", "CVE-2015-8919", "CVE-2015-8920", "CVE-2015-8921", "CVE-2015-8922", "CVE-2015-8923", "CVE-2015-8924", "CVE-2015-8925", "CVE-2015-8926", "CVE-2015-8928", "CVE-2015-8929", "CVE-2015-8930", "CVE-2015-8931", "CVE-2015-8932", "CVE-2015-8933", "CVE-2015-8934", "CVE-2016-4300", "CVE-2016-4301", "CVE-2016-4302", "CVE-2016-4809"); script_name(english:"SUSE SLED12 / SLES12 Security Update : libarchive (SUSE-SU-2016:1909-1)"); script_summary(english:"Checks rpm output for the updated packages."); script_set_attribute( attribute:"synopsis", value:"The remote SUSE host is missing one or more security updates." ); script_set_attribute( attribute:"description", value: "libarchive was updated to fix 20 security issues. These security issues were fixed : - CVE-2015-8918: Overlapping memcpy in CAB parser (bsc#985698). - CVE-2015-8919: Heap out of bounds read in LHA/LZH parser (bsc#985697). - CVE-2015-8920: Stack out of bounds read in ar parser (bsc#985675). - CVE-2015-8921: Global out of bounds read in mtree parser (bsc#985682). - CVE-2015-8922: NULL pointer access in 7z parser (bsc#985685). - CVE-2015-8923: Unclear crashes in ZIP parser (bsc#985703). - CVE-2015-8924: Heap buffer read overflow in tar (bsc#985609). - CVE-2015-8925: Unclear invalid memory read in mtree parser (bsc#985706). - CVE-2015-8926: NULL pointer access in RAR parser (bsc#985704). - CVE-2015-8928: Heap out of bounds read in mtree parser (bsc#985679). - CVE-2015-8929: Memory leak in tar parser (bsc#985669). - CVE-2015-8930: Endless loop in ISO parser (bsc#985700). - CVE-2015-8931: Undefined behavior / signed integer overflow in mtree parser (bsc#985689). - CVE-2015-8932: Compress handler left shifting larger than int size (bsc#985665). - CVE-2015-8933: Undefined behavior / signed integer overflow in TAR parser (bsc#985688). - CVE-2015-8934: Out of bounds read in RAR (bsc#985673). - CVE-2016-4300: Heap buffer overflow vulnerability in the 7zip read_SubStreamsInfo (bsc#985832). - CVE-2016-4301: Stack buffer overflow in the mtree parse_device (bsc#985826). - CVE-2016-4302: Heap buffer overflow in the Rar decompression functionality (bsc#985835). - CVE-2016-4809: Memory allocate error with symbolic links in cpio archives (bsc#984990). Note that Tenable Network Security has extracted the preceding description block directly from the SUSE security advisory. Tenable has attempted to automatically clean and format it as much as possible without introducing additional issues." ); script_set_attribute( attribute:"see_also", value:"https://bugzilla.suse.com/show_bug.cgi?id=984990" ); script_set_attribute( attribute:"see_also", value:"https://bugzilla.suse.com/show_bug.cgi?id=985609" ); script_set_attribute( attribute:"see_also", value:"https://bugzilla.suse.com/show_bug.cgi?id=985665" ); script_set_attribute( attribute:"see_also", value:"https://bugzilla.suse.com/show_bug.cgi?id=985669" ); script_set_attribute( attribute:"see_also", value:"https://bugzilla.suse.com/show_bug.cgi?id=985673" ); script_set_attribute( attribute:"see_also", value:"https://bugzilla.suse.com/show_bug.cgi?id=985675" ); script_set_attribute( attribute:"see_also", value:"https://bugzilla.suse.com/show_bug.cgi?id=985679" ); script_set_attribute( attribute:"see_also", value:"https://bugzilla.suse.com/show_bug.cgi?id=985682" ); script_set_attribute( attribute:"see_also", value:"https://bugzilla.suse.com/show_bug.cgi?id=985685" ); script_set_attribute( attribute:"see_also", value:"https://bugzilla.suse.com/show_bug.cgi?id=985688" ); script_set_attribute( attribute:"see_also", value:"https://bugzilla.suse.com/show_bug.cgi?id=985689" ); script_set_attribute( attribute:"see_also", value:"https://bugzilla.suse.com/show_bug.cgi?id=985697" ); script_set_attribute( attribute:"see_also", value:"https://bugzilla.suse.com/show_bug.cgi?id=985698" ); script_set_attribute( attribute:"see_also", value:"https://bugzilla.suse.com/show_bug.cgi?id=985700" ); script_set_attribute( attribute:"see_also", value:"https://bugzilla.suse.com/show_bug.cgi?id=985703" ); script_set_attribute( attribute:"see_also", value:"https://bugzilla.suse.com/show_bug.cgi?id=985704" ); script_set_attribute( attribute:"see_also", value:"https://bugzilla.suse.com/show_bug.cgi?id=985706" ); script_set_attribute( attribute:"see_also", value:"https://bugzilla.suse.com/show_bug.cgi?id=985826" ); script_set_attribute( attribute:"see_also", value:"https://bugzilla.suse.com/show_bug.cgi?id=985832" ); script_set_attribute( attribute:"see_also", value:"https://bugzilla.suse.com/show_bug.cgi?id=985835" ); script_set_attribute( attribute:"see_also", value:"https://www.suse.com/security/cve/CVE-2015-8918/" ); script_set_attribute( attribute:"see_also", value:"https://www.suse.com/security/cve/CVE-2015-8919/" ); script_set_attribute( attribute:"see_also", value:"https://www.suse.com/security/cve/CVE-2015-8920/" ); script_set_attribute( attribute:"see_also", value:"https://www.suse.com/security/cve/CVE-2015-8921/" ); script_set_attribute( attribute:"see_also", value:"https://www.suse.com/security/cve/CVE-2015-8922/" ); script_set_attribute( attribute:"see_also", value:"https://www.suse.com/security/cve/CVE-2015-8923/" ); script_set_attribute( attribute:"see_also", value:"https://www.suse.com/security/cve/CVE-2015-8924/" ); script_set_attribute( attribute:"see_also", value:"https://www.suse.com/security/cve/CVE-2015-8925/" ); script_set_attribute( attribute:"see_also", value:"https://www.suse.com/security/cve/CVE-2015-8926/" ); script_set_attribute( attribute:"see_also", value:"https://www.suse.com/security/cve/CVE-2015-8928/" ); script_set_attribute( attribute:"see_also", value:"https://www.suse.com/security/cve/CVE-2015-8929/" ); script_set_attribute( attribute:"see_also", value:"https://www.suse.com/security/cve/CVE-2015-8930/" ); script_set_attribute( attribute:"see_also", value:"https://www.suse.com/security/cve/CVE-2015-8931/" ); script_set_attribute( attribute:"see_also", value:"https://www.suse.com/security/cve/CVE-2015-8932/" ); script_set_attribute( attribute:"see_also", value:"https://www.suse.com/security/cve/CVE-2015-8933/" ); script_set_attribute( attribute:"see_also", value:"https://www.suse.com/security/cve/CVE-2015-8934/" ); script_set_attribute( attribute:"see_also", value:"https://www.suse.com/security/cve/CVE-2016-4300/" ); script_set_attribute( attribute:"see_also", value:"https://www.suse.com/security/cve/CVE-2016-4301/" ); script_set_attribute( attribute:"see_also", value:"https://www.suse.com/security/cve/CVE-2016-4302/" ); script_set_attribute( attribute:"see_also", value:"https://www.suse.com/security/cve/CVE-2016-4809/" ); # https://www.suse.com/support/update/announcement/2016/suse-su-20161909-1/ script_set_attribute( attribute:"see_also", value:"http://www.nessus.org/u?62166a5b" ); script_set_attribute( attribute:"solution", value: "To install this SUSE Security Update use YaST online_update. Alternatively you can run the command listed for your product : SUSE Linux Enterprise Software Development Kit 12-SP1:zypper in -t patch SUSE-SLE-SDK-12-SP1-2016-1123=1 SUSE Linux Enterprise Server 12-SP1:zypper in -t patch SUSE-SLE-SERVER-12-SP1-2016-1123=1 SUSE Linux Enterprise Desktop 12-SP1:zypper in -t patch SUSE-SLE-DESKTOP-12-SP1-2016-1123=1 To bring your system up-to-date, use 'zypper patch'." ); script_set_cvss_base_vector("CVSS2#AV:N/AC:M/Au:N/C:P/I:P/A:P"); script_set_cvss_temporal_vector("CVSS2#E:U/RL:OF/RC:C"); script_set_cvss3_base_vector("CVSS:3.0/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H"); script_set_cvss3_temporal_vector("CVSS:3.0/E:U/RL:O/RC:C"); script_set_attribute(attribute:"exploitability_ease", value:"No known exploits are available"); script_set_attribute(attribute:"exploit_available", value:"false"); script_set_attribute(attribute:"plugin_type", value:"local"); script_set_attribute(attribute:"cpe", value:"p-cpe:/a:novell:suse_linux:libarchive-debugsource"); script_set_attribute(attribute:"cpe", value:"p-cpe:/a:novell:suse_linux:libarchive13"); script_set_attribute(attribute:"cpe", value:"p-cpe:/a:novell:suse_linux:libarchive13-debuginfo"); script_set_attribute(attribute:"cpe", value:"cpe:/o:novell:suse_linux:12"); script_set_attribute(attribute:"vuln_publication_date", value:"2016/09/20"); script_set_attribute(attribute:"patch_publication_date", value:"2016/07/29"); script_set_attribute(attribute:"plugin_publication_date", value:"2016/08/29"); script_set_attribute(attribute:"generated_plugin", value:"current"); script_end_attributes(); script_category(ACT_GATHER_INFO); script_copyright(english:"This script is Copyright (C) 2016-2019 and is owned by Tenable, Inc. or an Affiliate thereof."); script_family(english:"SuSE Local Security Checks"); script_dependencies("ssh_get_info.nasl"); script_require_keys("Host/local_checks_enabled", "Host/cpu", "Host/SuSE/release", "Host/SuSE/rpm-list"); exit(0); } include("audit.inc"); include("global_settings.inc"); include("rpm.inc"); if (!get_kb_item("Host/local_checks_enabled")) audit(AUDIT_LOCAL_CHECKS_NOT_ENABLED); release = get_kb_item("Host/SuSE/release"); if (isnull(release) || release !~ "^(SLED|SLES)") audit(AUDIT_OS_NOT, "SUSE"); os_ver = pregmatch(pattern: "^(SLE(S|D)\d+)", string:release); if (isnull(os_ver)) audit(AUDIT_UNKNOWN_APP_VER, "SUSE"); os_ver = os_ver[1]; if (! preg(pattern:"^(SLED12|SLES12)$", string:os_ver)) audit(AUDIT_OS_NOT, "SUSE SLED12 / SLES12", "SUSE " + os_ver); if (!get_kb_item("Host/SuSE/rpm-list")) audit(AUDIT_PACKAGE_LIST_MISSING); cpu = get_kb_item("Host/cpu"); if (isnull(cpu)) audit(AUDIT_UNKNOWN_ARCH); if (cpu !~ "^i[3-6]86$" && "x86_64" >!< cpu && "s390x" >!< cpu) audit(AUDIT_LOCAL_CHECKS_NOT_IMPLEMENTED, "SUSE " + os_ver, cpu); sp = get_kb_item("Host/SuSE/patchlevel"); if (isnull(sp)) sp = "0"; if (os_ver == "SLES12" && (! preg(pattern:"^(1)$", string:sp))) audit(AUDIT_OS_NOT, "SLES12 SP1", os_ver + " SP" + sp); if (os_ver == "SLED12" && (! preg(pattern:"^(1)$", string:sp))) audit(AUDIT_OS_NOT, "SLED12 SP1", os_ver + " SP" + sp); flag = 0; if (rpm_check(release:"SLES12", sp:"1", reference:"libarchive-debugsource-3.1.2-22.1")) flag++; if (rpm_check(release:"SLES12", sp:"1", reference:"libarchive13-3.1.2-22.1")) flag++; if (rpm_check(release:"SLES12", sp:"1", reference:"libarchive13-debuginfo-3.1.2-22.1")) flag++; if (rpm_check(release:"SLED12", sp:"1", cpu:"x86_64", reference:"libarchive-debugsource-3.1.2-22.1")) flag++; if (rpm_check(release:"SLED12", sp:"1", cpu:"x86_64", reference:"libarchive13-3.1.2-22.1")) flag++; if (rpm_check(release:"SLED12", sp:"1", cpu:"x86_64", reference:"libarchive13-debuginfo-3.1.2-22.1")) flag++; if (flag) { if (report_verbosity > 0) security_warning(port:0, extra:rpm_report_get()); else security_warning(0); exit(0); } else { tested = pkg_tests_get(); if (tested) audit(AUDIT_PACKAGE_NOT_AFFECTED, tested); else audit(AUDIT_PACKAGE_NOT_INSTALLED, "libarchive"); }
NASL family PhotonOS Local Security Checks NASL id PHOTONOS_PHSA-2017-0010.NASL description An update of [binutils,ntp,libarchive] packages for PhotonOS has been released. last seen 2019-02-21 modified 2019-02-07 plugin id 111859 published 2018-08-17 reporter Tenable source https://www.tenable.com/plugins/index.php?view=single&id=111859 title Photon OS 1.0: Binutils / Libarchive / Ntp PHSA-2017-0010 (deprecated) code # # (C) Tenable Network Security, Inc. # # @DEPRECATED@ # # Disabled on 2/7/2019 # # The descriptive text and package checks in this plugin were # extracted from VMware Security Advisory PHSA-2017-0010. The text # itself is copyright (C) VMware, Inc. include("compat.inc"); if (description) { script_id(111859); script_version("1.2"); script_cvs_date("Date: 2019/02/07 18:59:50"); script_cve_id( "CVE-2014-9939", "CVE-2015-8933", "CVE-2016-4300", "CVE-2016-4301", "CVE-2016-4302", "CVE-2016-4809", "CVE-2016-5418", "CVE-2016-5844", "CVE-2016-6250", "CVE-2016-7166", "CVE-2016-8687", "CVE-2016-8688", "CVE-2016-8689", "CVE-2017-5601", "CVE-2017-6451", "CVE-2017-6452", "CVE-2017-6455", "CVE-2017-6458", "CVE-2017-6460", "CVE-2017-6462", "CVE-2017-6463", "CVE-2017-6464", "CVE-2017-6969" ); script_name(english:"Photon OS 1.0: Binutils / Libarchive / Ntp PHSA-2017-0010 (deprecated)"); script_summary(english:"Checks the rpm output for the updated packages."); script_set_attribute(attribute:"synopsis", value: "This plugin has been deprecated."); script_set_attribute(attribute:"description", value: "An update of [binutils,ntp,libarchive] packages for PhotonOS has been released."); # https://github.com/vmware/photon/wiki/Security-Updates-34 script_set_attribute(attribute:"see_also", value:"http://www.nessus.org/u?5b02cf41"); script_set_attribute(attribute:"solution", value:"n/a."); script_set_cvss_base_vector("CVSS2#AV:N/AC:L/Au:N/C:P/I:P/A:P"); script_set_cvss3_base_vector("CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H"); script_set_attribute(attribute:"cvss_score_source", value:"CVE-2014-9939"); script_set_attribute(attribute:"patch_publication_date", value:"2017/04/12"); script_set_attribute(attribute:"plugin_publication_date", value:"2018/08/17"); script_set_attribute(attribute:"plugin_type", value:"local"); script_set_attribute(attribute:"cpe", value:"p-cpe:/a:vmware:photonos:binutils"); script_set_attribute(attribute:"cpe", value:"p-cpe:/a:vmware:photonos:libarchive"); script_set_attribute(attribute:"cpe", value:"p-cpe:/a:vmware:photonos:ntp"); script_set_attribute(attribute:"cpe", value:"cpe:/o:vmware:photonos:1.0"); script_end_attributes(); script_category(ACT_GATHER_INFO); script_family(english:"PhotonOS Local Security Checks"); script_copyright(english:"This script is Copyright (C) 2018-2019 and is owned by Tenable, Inc. or an Affiliate thereof."); script_dependencies("ssh_get_info.nasl"); script_require_keys("Host/local_checks_enabled", "Host/PhotonOS/release", "Host/PhotonOS/rpm-list"); exit(0); } exit(0, "This plugin has been deprecated."); include("audit.inc"); include("global_settings.inc"); include("rpm.inc"); if (!get_kb_item("Host/local_checks_enabled")) audit(AUDIT_LOCAL_CHECKS_NOT_ENABLED); release = get_kb_item("Host/PhotonOS/release"); if (isnull(release) || release !~ "^VMware Photon") audit(AUDIT_OS_NOT, "PhotonOS"); if (release !~ "^VMware Photon (?:Linux|OS) 1\.0(\D|$)") audit(AUDIT_OS_NOT, "PhotonOS 1.0"); if (!get_kb_item("Host/PhotonOS/rpm-list")) audit(AUDIT_PACKAGE_LIST_MISSING); cpu = get_kb_item("Host/cpu"); if (isnull(cpu)) audit(AUDIT_UNKNOWN_ARCH); if ("x86_64" >!< cpu && cpu !~ "^i[3-6]86$") audit(AUDIT_LOCAL_CHECKS_NOT_IMPLEMENTED, "PhotonOS", cpu); flag = 0; pkgs = [ "binutils-2.25.1-4.ph1", "binutils-debuginfo-2.25.1-4.ph1", "binutils-devel-2.25.1-4.ph1", "libarchive-3.3.1-1.ph1", "libarchive-debuginfo-3.3.1-1.ph1", "libarchive-devel-3.3.1-1.ph1", "ntp-4.2.8p10-1.ph1", "ntp-debuginfo-4.2.8p10-1.ph1" ]; foreach (pkg in pkgs) if (rpm_check(release:"PhotonOS-1.0", reference:pkg)) flag++; if (flag) { security_report_v4( port : 0, severity : SECURITY_HOLE, extra : rpm_report_get() ); exit(0); } else { tested = pkg_tests_get(); if (tested) audit(AUDIT_PACKAGE_NOT_AFFECTED, tested); else audit(AUDIT_PACKAGE_NOT_INSTALLED, "binutils / libarchive / ntp"); }
NASL family FreeBSD Local Security Checks NASL id FREEBSD_PKG_4A0D9B53395D11E6B3C814DAE9D210B8.NASL description Hanno Bock and Cisco Talos report : - Out of bounds heap read in RAR parser - Signed integer overflow in ISO parser - TALOS-2016-0152 [CVE-2016-4300]: 7-Zip read_SubStreamsInfo Integer Overflow - TALOS-2016-0153 [CVE-2016-4301]: mtree parse_device Stack Based Buffer Overflow - TALOS-2016-0154 [CVE-2016-4302]: Libarchive Rar RestartModel Heap Overflow last seen 2020-06-01 modified 2020-06-02 plugin id 91791 published 2016-06-24 reporter This script is Copyright (C) 2016-2018 and is owned by Tenable, Inc. or an Affiliate thereof. source https://www.tenable.com/plugins/nessus/91791 title FreeBSD : libarchive -- multiple vulnerabilities (4a0d9b53-395d-11e6-b3c8-14dae9d210b8) code # # (C) Tenable Network Security, Inc. # # The descriptive text and package checks in this plugin were # extracted from the FreeBSD VuXML database : # # Copyright 2003-2018 Jacques Vidrine and contributors # # Redistribution and use in source (VuXML) and 'compiled' forms (SGML, # HTML, PDF, PostScript, RTF and so forth) with or without modification, # are permitted provided that the following conditions are met: # 1. Redistributions of source code (VuXML) must retain the above # copyright notice, this list of conditions and the following # disclaimer as the first lines of this file unmodified. # 2. Redistributions in compiled form (transformed to other DTDs, # published online in any format, converted to PDF, PostScript, # RTF and other formats) must reproduce the above copyright # notice, this list of conditions and the following disclaimer # in the documentation and/or other materials provided with the # distribution. # # THIS DOCUMENTATION IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS "AS IS" # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, # THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, # OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT # OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR # BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE # OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS DOCUMENTATION, # EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # include("compat.inc"); if (description) { script_id(91791); script_version("2.6"); script_cvs_date("Date: 2018/12/19 13:21:18"); script_cve_id("CVE-2015-8934", "CVE-2016-4300", "CVE-2016-4301", "CVE-2016-4302"); script_name(english:"FreeBSD : libarchive -- multiple vulnerabilities (4a0d9b53-395d-11e6-b3c8-14dae9d210b8)"); script_summary(english:"Checks for updated package in pkg_info output"); script_set_attribute( attribute:"synopsis", value:"The remote FreeBSD host is missing a security-related update." ); script_set_attribute( attribute:"description", value: "Hanno Bock and Cisco Talos report : - Out of bounds heap read in RAR parser - Signed integer overflow in ISO parser - TALOS-2016-0152 [CVE-2016-4300]: 7-Zip read_SubStreamsInfo Integer Overflow - TALOS-2016-0153 [CVE-2016-4301]: mtree parse_device Stack Based Buffer Overflow - TALOS-2016-0154 [CVE-2016-4302]: Libarchive Rar RestartModel Heap Overflow" ); # http://openwall.com/lists/oss-security/2016/06/23/6 script_set_attribute( attribute:"see_also", value:"https://www.openwall.com/lists/oss-security/2016/06/23/6" ); script_set_attribute( attribute:"see_also", value:"https://github.com/libarchive/libarchive/issues/521" ); script_set_attribute( attribute:"see_also", value:"https://github.com/libarchive/libarchive/issues/717#event-697151157" ); # http://blog.talosintel.com/2016/06/the-poisoned-archives.html script_set_attribute( attribute:"see_also", value:"http://blog.talosintelligence.com/2016/06/the-poisoned-archives.html" ); # https://vuxml.freebsd.org/freebsd/4a0d9b53-395d-11e6-b3c8-14dae9d210b8.html script_set_attribute( attribute:"see_also", value:"http://www.nessus.org/u?4fc4afda" ); script_set_attribute(attribute:"solution", value:"Update the affected package."); script_set_cvss_base_vector("CVSS2#AV:N/AC:M/Au:N/C:P/I:P/A:P"); script_set_cvss3_base_vector("CVSS:3.0/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H"); script_set_attribute(attribute:"plugin_type", value:"local"); script_set_attribute(attribute:"cpe", value:"p-cpe:/a:freebsd:freebsd:libarchive"); script_set_attribute(attribute:"cpe", value:"cpe:/o:freebsd:freebsd"); script_set_attribute(attribute:"vuln_publication_date", value:"2016/06/23"); script_set_attribute(attribute:"patch_publication_date", value:"2016/06/23"); script_set_attribute(attribute:"plugin_publication_date", value:"2016/06/24"); script_end_attributes(); script_category(ACT_GATHER_INFO); script_copyright(english:"This script is Copyright (C) 2016-2018 and is owned by Tenable, Inc. or an Affiliate thereof."); script_family(english:"FreeBSD Local Security Checks"); script_dependencies("ssh_get_info.nasl"); script_require_keys("Host/local_checks_enabled", "Host/FreeBSD/release", "Host/FreeBSD/pkg_info"); exit(0); } include("audit.inc"); include("freebsd_package.inc"); if (!get_kb_item("Host/local_checks_enabled")) audit(AUDIT_LOCAL_CHECKS_NOT_ENABLED); if (!get_kb_item("Host/FreeBSD/release")) audit(AUDIT_OS_NOT, "FreeBSD"); if (!get_kb_item("Host/FreeBSD/pkg_info")) audit(AUDIT_PACKAGE_LIST_MISSING); flag = 0; if (pkg_test(save_report:TRUE, pkg:"libarchive<3.2.1,1")) flag++; if (flag) { if (report_verbosity > 0) security_warning(port:0, extra:pkg_report_get()); else security_warning(0); exit(0); } else audit(AUDIT_HOST_NOT, "affected");
NASL family Huawei Local Security Checks NASL id EULEROS_SA-2019-1470.NASL description According to the versions of the libarchive package installed, the EulerOS Virtualization installation on the remote host is affected by the following vulnerabilities : - A vulnerability was found in libarchive. A specially crafted MTREE file could cause a small out-of-bounds read, potentially disclosing a small amount of application memory.(CVE-2015-8925) - A vulnerability was found in libarchive. An attempt to create an ISO9660 volume with 2GB or 4GB filenames could cause the application to crash.(CVE-2016-6250) - A vulnerability was found in libarchive. A specially crafted RAR file could cause the application to read memory beyond the end of the decompression buffer.(CVE-2015-8934) - A vulnerability was found in libarchive last seen 2020-06-01 modified 2020-06-02 plugin id 124794 published 2019-05-13 reporter This script is Copyright (C) 2019-2020 and is owned by Tenable, Inc. or an Affiliate thereof. source https://www.tenable.com/plugins/nessus/124794 title EulerOS Virtualization 3.0.1.0 : libarchive (EulerOS-SA-2019-1470) NASL family Debian Local Security Checks NASL id DEBIAN_DSA-3657.NASL description Hanno Boeck and Marcin Noga discovered multiple vulnerabilities in libarchive; processing malformed archives may result in denial of service or the execution of arbitrary code. last seen 2020-06-01 modified 2020-06-02 plugin id 93238 published 2016-08-31 reporter This script is Copyright (C) 2016-2019 and is owned by Tenable, Inc. or an Affiliate thereof. source https://www.tenable.com/plugins/nessus/93238 title Debian DSA-3657-1 : libarchive - security update NASL family Huawei Local Security Checks NASL id EULEROS_SA-2016-1045.NASL description According to the versions of the libarchive package installed, the EulerOS installation on the remote host is affected by the following vulnerabilities : - A flaw was found in the way libarchive handled hardlink archive entries of non-zero size. Combined with flaws in libarchive last seen 2020-05-06 modified 2017-05-01 plugin id 99808 published 2017-05-01 reporter This script is Copyright (C) 2017-2020 and is owned by Tenable, Inc. or an Affiliate thereof. source https://www.tenable.com/plugins/nessus/99808 title EulerOS 2.0 SP1 : libarchive (EulerOS-SA-2016-1045) NASL family Debian Local Security Checks NASL id DEBIAN_DLA-554.NASL description Several vulnerabilities were discovered in libarchive, a library for reading and writing archives in various formats. An attacker can take advantage of these flaws to cause a denial of service against an application using the libarchive library (application crash), or potentially execute arbitrary code with the privileges of the user running the application. For Debian 7 last seen 2020-03-17 modified 2016-07-22 plugin id 92500 published 2016-07-22 reporter This script is Copyright (C) 2016-2020 and is owned by Tenable, Inc. or an Affiliate thereof. source https://www.tenable.com/plugins/nessus/92500 title Debian DLA-554-1 : libarchive security update NASL family PhotonOS Local Security Checks NASL id PHOTONOS_PHSA-2017-0010_LIBARCHIVE.NASL description An update of the libarchive package has been released. last seen 2020-03-17 modified 2019-02-07 plugin id 121677 published 2019-02-07 reporter This script is Copyright (C) 2019-2020 and is owned by Tenable, Inc. or an Affiliate thereof. source https://www.tenable.com/plugins/nessus/121677 title Photon OS 1.0: Libarchive PHSA-2017-0010 NASL family Red Hat Local Security Checks NASL id REDHAT-RHSA-2016-1844.NASL description An update for libarchive is now available for Red Hat Enterprise Linux 7. Red Hat Product Security has rated this update as having a security impact of Important. A Common Vulnerability Scoring System (CVSS) base score, which gives a detailed severity rating, is available for each vulnerability from the CVE link(s) in the References section. The libarchive programming library can create and read several different streaming archive formats, including GNU tar, cpio, and ISO 9660 CD-ROM images. Libarchive is used notably in the bsdtar utility, scripting language bindings such as python-libarchive, and several popular desktop file managers. Security Fix(es) : * A flaw was found in the way libarchive handled hardlink archive entries of non-zero size. Combined with flaws in libarchive last seen 2020-06-01 modified 2020-06-02 plugin id 93450 published 2016-09-13 reporter This script is Copyright (C) 2016-2019 and is owned by Tenable, Inc. or an Affiliate thereof. source https://www.tenable.com/plugins/nessus/93450 title RHEL 7 : libarchive (RHSA-2016:1844) NASL family Oracle Linux Local Security Checks NASL id ORACLELINUX_ELSA-2016-1844.NASL description From Red Hat Security Advisory 2016:1844 : An update for libarchive is now available for Red Hat Enterprise Linux 7. Red Hat Product Security has rated this update as having a security impact of Important. A Common Vulnerability Scoring System (CVSS) base score, which gives a detailed severity rating, is available for each vulnerability from the CVE link(s) in the References section. The libarchive programming library can create and read several different streaming archive formats, including GNU tar, cpio, and ISO 9660 CD-ROM images. Libarchive is used notably in the bsdtar utility, scripting language bindings such as python-libarchive, and several popular desktop file managers. Security Fix(es) : * A flaw was found in the way libarchive handled hardlink archive entries of non-zero size. Combined with flaws in libarchive last seen 2020-06-01 modified 2020-06-02 plugin id 93446 published 2016-09-13 reporter This script is Copyright (C) 2016-2019 and is owned by Tenable, Inc. or an Affiliate thereof. source https://www.tenable.com/plugins/nessus/93446 title Oracle Linux 7 : libarchive (ELSA-2016-1844) NASL family Ubuntu Local Security Checks NASL id UBUNTU_USN-3033-1.NASL description Hanno Bock discovered that libarchive contained multiple security issues when processing certain malformed archive files. A remote attacker could use this issue to cause libarchive to crash, resulting in a denial of service, or possibly execute arbitrary code. (CVE-2015-8916, CVE-2015-8917 CVE-2015-8919, CVE-2015-8920, CVE-2015-8921, CVE-2015-8922, CVE-2015-8923, CVE-2015-8924, CVE-2015-8925, CVE-2015-8926, CVE-2015-8928, CVE-2015-8930, CVE-2015-8931, CVE-2015-8932, CVE-2015-8933, CVE-2015-8934, CVE-2016-5844) Marcin last seen 2020-06-01 modified 2020-06-02 plugin id 92312 published 2016-07-15 reporter Ubuntu Security Notice (C) 2016-2019 Canonical, Inc. / NASL script (C) 2016-2019 and is owned by Tenable, Inc. or an Affiliate thereof. source https://www.tenable.com/plugins/nessus/92312 title Ubuntu 12.04 LTS / 14.04 LTS / 15.10 / 16.04 LTS : libarchive vulnerabilities (USN-3033-1) NASL family SuSE Local Security Checks NASL id OPENSUSE-2016-969.NASL description libarchive was updated to fix 20 security issues. These security issues were fixed : - CVE-2015-8918: Overlapping memcpy in CAB parser (bsc#985698). - CVE-2015-8919: Heap out of bounds read in LHA/LZH parser (bsc#985697). - CVE-2015-8920: Stack out of bounds read in ar parser (bsc#985675). - CVE-2015-8921: Global out of bounds read in mtree parser (bsc#985682). - CVE-2015-8922: NULL pointer access in 7z parser (bsc#985685). - CVE-2015-8923: Unclear crashes in ZIP parser (bsc#985703). - CVE-2015-8924: Heap buffer read overflow in tar (bsc#985609). - CVE-2015-8925: Unclear invalid memory read in mtree parser (bsc#985706). - CVE-2015-8926: NULL pointer access in RAR parser (bsc#985704). - CVE-2015-8928: Heap out of bounds read in mtree parser (bsc#985679). - CVE-2015-8929: Memory leak in tar parser (bsc#985669). - CVE-2015-8930: Endless loop in ISO parser (bsc#985700). - CVE-2015-8931: Undefined behavior / signed integer overflow in mtree parser (bsc#985689). - CVE-2015-8932: Compress handler left shifting larger than int size (bsc#985665). - CVE-2015-8933: Undefined behavior / signed integer overflow in TAR parser (bsc#985688). - CVE-2015-8934: Out of bounds read in RAR (bsc#985673). - CVE-2016-4300: Heap buffer overflow vulnerability in the 7zip read_SubStreamsInfo (bsc#985832). - CVE-2016-4301: Stack-based buffer overflow in the mtree parse_device (bsc#985826). - CVE-2016-4302: Heap buffer overflow in the Rar decompression functionality (bsc#985835). - CVE-2016-4809: Memory allocate error with symbolic links in cpio archives (bsc#984990). This update was imported from the SUSE:SLE-12:Update update project. last seen 2020-06-05 modified 2016-08-16 plugin id 92975 published 2016-08-16 reporter This script is Copyright (C) 2016-2020 Tenable Network Security, Inc. source https://www.tenable.com/plugins/nessus/92975 title openSUSE Security Update : libarchive (openSUSE-2016-969) NASL family CentOS Local Security Checks NASL id CENTOS_RHSA-2016-1844.NASL description An update for libarchive is now available for Red Hat Enterprise Linux 7. Red Hat Product Security has rated this update as having a security impact of Important. A Common Vulnerability Scoring System (CVSS) base score, which gives a detailed severity rating, is available for each vulnerability from the CVE link(s) in the References section. The libarchive programming library can create and read several different streaming archive formats, including GNU tar, cpio, and ISO 9660 CD-ROM images. Libarchive is used notably in the bsdtar utility, scripting language bindings such as python-libarchive, and several popular desktop file managers. Security Fix(es) : * A flaw was found in the way libarchive handled hardlink archive entries of non-zero size. Combined with flaws in libarchive last seen 2020-06-01 modified 2020-06-02 plugin id 93541 published 2016-09-16 reporter This script is Copyright (C) 2016-2020 and is owned by Tenable, Inc. or an Affiliate thereof. source https://www.tenable.com/plugins/nessus/93541 title CentOS 7 : libarchive (CESA-2016:1844) NASL family Gentoo Local Security Checks NASL id GENTOO_GLSA-201701-03.NASL description The remote host is affected by the vulnerability described in GLSA-201701-03 (libarchive: Multiple vulnerabilities) Multiple vulnerabilities have been discovered in libarchive. Please review the CVE identifiers referenced below for details. Impact : A remote attacker could entice a user to open a specially crafted archive file possibly resulting in the execution of arbitrary code with the privileges of the process or a Denial of Service condition. Workaround : There is no known workaround at this time. last seen 2020-06-01 modified 2020-06-02 plugin id 96234 published 2017-01-03 reporter This script is Copyright (C) 2017 Tenable Network Security, Inc. source https://www.tenable.com/plugins/nessus/96234 title GLSA-201701-03 : libarchive: Multiple vulnerabilities NASL family Amazon Linux Local Security Checks NASL id ALA_ALAS-2016-743.NASL description A flaw was found in the way libarchive handled hardlink archive entries of non-zero size. Combined with flaws in libarchive last seen 2020-06-01 modified 2020-06-02 plugin id 93744 published 2016-09-28 reporter This script is Copyright (C) 2016-2019 and is owned by Tenable, Inc. or an Affiliate thereof. source https://www.tenable.com/plugins/nessus/93744 title Amazon Linux AMI : libarchive (ALAS-2016-743)
Redhat
advisories |
| ||||
rpms |
|
Seebug
bulletinFamily | exploit |
description | ### SUMMARY An exploitable heap overflow vulnerability exists in the Rar decompression functionality of libarchive. A specially crafted Rar file can cause a heap corruption eventually leading to code execution. An attacker can send a malformed file to trigger this vulnerability. ### TESTED VERSIONS libarchive git version on date 02.12.2015 Platform : x86/x64 ### PRODUCT URLs https://github.com/libarchive/libarchive ### CVSSv3 SCORE 7.8 - CVSS:3.0/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H CVSSv3 Calculator: https://www.first.org/cvss/calculator/3.0 ### DETAILS Here we see the execution flow leading to heap corruption: ``` archive_read_next_header archive_read_format_rar_read_header head_type : 0x72 head_type : 0x73 head_type : 0x74 read_header rar->packed_size : 0x1 rar->dictionary_size = 0; archive_format_name : RAR archive_read_extract rar->compression_method : 0x31 read_data_compressed archive_read_format_rar_read_header head_type : 0x7a read_header parse_codes if (ppmd_flags & 0x20) archive_read_format_rar_read_header head_type : 0x7b archive_read_format_rar_read_header head_type : 0x74 read_header rar->packed_size : 0x1 rar->dictionary_size = 0; archive_read_format_rar_read_header head_type : 0x7a read_header rar->dictionary_size : 0x10000000 archive_read_format_rar_read_header head_type : 0x7b archive_read_format_rar_read_header head_type : 0x74 read_header rar->packed_size : 0x1 rar->dictionary_size = 0; archive_read_format_rar_read_header archive_read_format_rar_read_header __archive_ppmd7_functions.PpmdRAR_RangeDec_CreateVTable(&rar->range_dec); ppmd_alloc : 0 archive_read_format_rar_read_header archive_read_format_rar_read_header archive_read_format_rar_read_header archive_read_format_rar_read_header archive_read_format_rar_read_header archive_read_format_rar_read_header archive_read_format_rar_read_header archive_read_format_rar_read_header Ppmd7_Init RestartModel *** Heap corruption *** ``` Let's focus on extraction phase, so everyting below archive_read_extract. The key variable/field here is rar->dictionary_size. First we see that its value is set to: ``` rar->dictionary_size : 0x10000000 libarchive\archive_read_support_format_rar.c Line 2073 /* Memory is allocated in MB */ Line 2074 if (ppmd_flags & 0x20) Line 2075 { Line 2076 if (!rar_br_read_ahead(a, br, 8)) Line 2077 goto truncated_data; Line 2078 rar->dictionary_size = (rar_br_bits(br, 8) + 1) << 20; Line 2079 rar_br_consume(br, 8); Line 2080 } ``` Next, because of small value of "packed_size": ``` rar->packed_size : 0x1 ``` Another portion of data is read from file and parsed like during "reading phase" in archive_read_next_header by calling archive_read_format_rar_read_header and read_header functions. During one of these calls, we see that value of dictionary_size is set to zero. Next allocation for Ppmd context depends on the value of dictionary_size: ``` libarchive\archive_read_support_format_rar.c Line 2115 if ( !__archive_ppmd7_functions.Ppmd7_Alloc(&rar->ppmd7_context,rar->dictionary_size, &g_szalloc) ) libarchive\archive_ppmd7.c Line 125 static Bool Ppmd7_Alloc(CPpmd7 *p, UInt32 size, ISzAlloc *alloc) Line 126 { Line 127 if (p->Base == 0 || p->Size != size) Line 128 { Line 129 Ppmd7_Free(p, alloc); Line 130 p->AlignOffset = Line 131 #ifdef PPMD_32BIT Line 132 (4 - size) & 3; Line 133 #else Line 134 4 - (size & 3); Line 135 #endif Line 136 if ((p->Base = (Byte *)alloc->Alloc(alloc, p->AlignOffset + size Line 137 #ifndef PPMD_32BIT Line 138 + UNIT_SIZE Line 139 #endif Line 140 )) == 0) Line 141 return False; Line 142 p->Size = size; Line 143 } Line 144 return True; Line 145 } ``` As we can see for dictionary_size equal 0 we will have allocation made for 0 bytes: ``` python import gdbheap p p->Base $5 = (Byte *) 0x80e2480 " \b\r\brn" heap select size==16 Reading in symbols for malloc.c...done. Start End Domain Kind Detail Hexdump ---------- ---------- ------------- ----------- -------- ---------------------------------------------------------------------------------- 0x080d0798 0x080d07a7 uncategorized 16 bytes a8 07 0d 08 03 00 00 00 57 4d 54 00 19 00 00 00 c0 07 0d 08 |........WMT.........| 0x080d07c0 0x080d07cf uncategorized 16 bytes d0 07 0d 08 03 00 00 00 43 45 54 00 19 00 00 00 e8 07 0d 08 |........CET.........| 0x080d07e8 0x080d07f7 uncategorized 16 bytes 00 00 00 00 03 00 00 00 45 45 54 00 21 00 00 00 72 61 72 2d |........EET.!...rar-| 0x080d0818 0x080d0827 uncategorized 16 bytes 00 00 00 00 50 a4 d8 f7 00 00 00 00 11 00 00 00 50 70 6d 64 |....P...........Ppmd| 0x080d0828 0x080d0837 C string data 50 70 6d 64 37 5f 49 6e 69 74 0a 00 21 00 00 00 44 00 00 00 |Ppmd7_Init..!...D...| 0x080d0cd8 0x080d0ce7 uncategorized 16 bytes e8 0c 0d 08 00 00 00 00 00 00 00 00 f9 01 00 00 c5 b0 01 c0 |....................| 0x080e2470 0x080e247f uncategorized 16 bytes 00 69 62 61 32 2e 68 74 6d 6c c0 cc 11 00 00 00 20 08 0d 08 |.iba2.html...... ...| 0x080e2480 0x080e248f C string data 20 08 0d 08 72 6e 00 00 00 00 00 00 21 00 00 00 72 61 72 2d | ...rn......!...rar-| ``` Finally we land in RestartModel function: ``` libarchive\archive_ppmd7.c Line 314 static void RestartModel(CPpmd7 *p) Line 315 { Line 316 unsigned i, k, m; Line 317 Line 318 memset(p->FreeList, 0, sizeof(p->FreeList)); Line 319 p->Text = p->Base + p->AlignOffset; Line 320 p->HiUnit = p->Text + p->Size; Line 321 p->LoUnit = p->UnitsStart = p->HiUnit - p->Size / 8 / UNIT_SIZE * 7 * UNIT_SIZE; Line 322 p->GlueCount = 0; Line 323 Line 324 p->OrderFall = p->MaxOrder; Line 325 p->RunLength = p->InitRL = -(Int32)((p->MaxOrder < 12) ? p->MaxOrder : 12) - 1; Line 326 p->PrevSuccess = 0; Line 327 Line 328 p->MinContext = p->MaxContext = (CTX_PTR)(p->HiUnit -= UNIT_SIZE); /* AllocContext(p); */ Line 329 p->MinContext->Suffix = 0; Line 330 p->MinContext->NumStats = 256; Line 331 p->MinContext->SummFreq = 256 + 1; Line 332 p->FoundState = (CPpmd_State *)p->LoUnit; /* AllocUnits(p, PPMD_NUM_INDEXES - 1); */ Line 333 p->LoUnit += U2B(256 / 2); Line 334 p->MinContext->Stats = REF(p->FoundState); ``` The key values here are: ``` p p->AlignOffset $6 = 0 p p->Size $7 = 0 ``` As we can see above both equal 0 which has consequences in line 328 where UNIT_SIZE (12) is subtracted from p->HiUnit pointer and assigned to p->MinContext: When everything is correct p->HiUnit first is set at the end of allocated space for Ppmd context, but because AlignOffset and Size is equal 0 it still points to the beginning. In result of this substraction p->MinContext is set to the inside of previous heap chunk space. ``` p p->MinContext $8 = (CPpmd7_Context *) 0x80e2474 heap: 0x080e2470 0x080e247f uncategorized 16 bytes 00 69 62 61 32 2e 68 74 6d 6c c0 cc 11 00 00 00 20 08 0d 08 |.iba2.html...... ...| 0x080e2480 0x080e248f C string data 20 08 0d 08 72 6e 00 00 00 00 00 00 21 00 00 00 72 61 72 2d | ...rn......!...rar-| ``` Further writes to this structure overwrite heap chunks: ``` Heap check before execution of line 329: python from heap.glibc import * python print MChunkPtr(gdb.Value(0x080e2480-8).cast(MChunkPtr.gdb_type())) <MChunkPtr chunk=0x80e2478 mem=0x80e2480 PREV_INUSE inuse chunksize=16 memsize=8> After execution: python print MChunkPtr(gdb.Value(0x080e2480-8).cast(MChunkPtr.gdb_type())) <MChunkPtr chunk=0x80e2478 mem=0x80e2480 prev_size=3435162733 free chunksize=0 memsize=-8> ``` ### CRASH INFORMATION ``` Valgrind Output: ==13328== Memcheck, a memory error detector ==13328== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al. ==13328== Using Valgrind-3.10.0.SVN and LibVEX; rerun with -h for copyright info ==13328== Command: libarchive-pure32/bin/ext /home/icewall/samples/rar/pmd7.rar rar ==13328== ==13328== Invalid write of size 4 ==13328== at 0x809C4D4: RestartModel (archive_ppmd7.c:329) ==13328== by 0x809C693: Ppmd7_Init (archive_ppmd7.c:364) ==13328== by 0x807C20F: parse_codes (archive_read_support_format_rar.c:2128) ==13328== by 0x807B8CA: read_data_compressed (archive_read_support_format_rar.c:1919) ==13328== by 0x8079049: archive_read_format_rar_read_data (archive_read_support_format_rar.c:1025) ==13328== by 0x804ED6B: _archive_read_data_block (archive_read.c:982) ==13328== by 0x8091B3B: archive_read_data_block (archive_virtual.c:161) ==13328== by 0x805083C: copy_data (archive_read_extract2.c:139) ==13328== by 0x8050770: archive_read_extract2 (archive_read_extract2.c:101) ==13328== by 0x80505CE: archive_read_extract (archive_read_extract.c:59) ==13328== by 0x804A3E2: extract (ext.c:63) ==13328== by 0x804A45A: main (ext.c:85) ==13328== Address 0x445c06c is 4 bytes before a block of size 0 alloc'd ==13328== at 0x402A17C: malloc (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so) ==13328== by 0x80783CC: ppmd_alloc (archive_read_support_format_rar.c:611) ==13328== by 0x809BD73: Ppmd7_Alloc (archive_ppmd7.c:136) ==13328== by 0x807C190: parse_codes (archive_read_support_format_rar.c:2115) ==13328== by 0x807B8CA: read_data_compressed (archive_read_support_format_rar.c:1919) ==13328== by 0x8079049: archive_read_format_rar_read_data (archive_read_support_format_rar.c:1025) ==13328== by 0x804ED6B: _archive_read_data_block (archive_read.c:982) ==13328== by 0x8091B3B: archive_read_data_block (archive_virtual.c:161) ==13328== by 0x805083C: copy_data (archive_read_extract2.c:139) ==13328== by 0x8050770: archive_read_extract2 (archive_read_extract2.c:101) ==13328== by 0x80505CE: archive_read_extract (archive_read_extract.c:59) ==13328== by 0x804A3E2: extract (ext.c:63) ==13328== ==13328== Invalid write of size 2 ==13328== at 0x809C4E0: RestartModel (archive_ppmd7.c:330) ==13328== by 0x809C693: Ppmd7_Init (archive_ppmd7.c:364) ==13328== by 0x807C20F: parse_codes (archive_read_support_format_rar.c:2128) ==13328== by 0x807B8CA: read_data_compressed (archive_read_support_format_rar.c:1919) ==13328== by 0x8079049: archive_read_format_rar_read_data (archive_read_support_format_rar.c:1025) ==13328== by 0x804ED6B: _archive_read_data_block (archive_read.c:982) ==13328== by 0x8091B3B: archive_read_data_block (archive_virtual.c:161) ==13328== by 0x805083C: copy_data (archive_read_extract2.c:139) ==13328== by 0x8050770: archive_read_extract2 (archive_read_extract2.c:101) ==13328== by 0x80505CE: archive_read_extract (archive_read_extract.c:59) ==13328== by 0x804A3E2: extract (ext.c:63) ==13328== by 0x804A45A: main (ext.c:85) ==13328== Address 0x445c064 is 12 bytes before a block of size 0 alloc'd ==13328== at 0x402A17C: malloc (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so) ==13328== by 0x80783CC: ppmd_alloc (archive_read_support_format_rar.c:611) ==13328== by 0x809BD73: Ppmd7_Alloc (archive_ppmd7.c:136) ==13328== by 0x807C190: parse_codes (archive_read_support_format_rar.c:2115) ==13328== by 0x807B8CA: read_data_compressed (archive_read_support_format_rar.c:1919) ==13328== by 0x8079049: archive_read_format_rar_read_data (archive_read_support_format_rar.c:1025) ==13328== by 0x804ED6B: _archive_read_data_block (archive_read.c:982) ==13328== by 0x8091B3B: archive_read_data_block (archive_virtual.c:161) ==13328== by 0x805083C: copy_data (archive_read_extract2.c:139) ==13328== by 0x8050770: archive_read_extract2 (archive_read_extract2.c:101) ==13328== by 0x80505CE: archive_read_extract (archive_read_extract.c:59) ==13328== by 0x804A3E2: extract (ext.c:63) ==13328== ==13328== Invalid write of size 2 ==13328== at 0x809C4EA: RestartModel (archive_ppmd7.c:331) ==13328== by 0x809C693: Ppmd7_Init (archive_ppmd7.c:364) ==13328== by 0x807C20F: parse_codes (archive_read_support_format_rar.c:2128) ==13328== by 0x807B8CA: read_data_compressed (archive_read_support_format_rar.c:1919) ==13328== by 0x8079049: archive_read_format_rar_read_data (archive_read_support_format_rar.c:1025) ==13328== by 0x804ED6B: _archive_read_data_block (archive_read.c:982) ==13328== by 0x8091B3B: archive_read_data_block (archive_virtual.c:161) ==13328== by 0x805083C: copy_data (archive_read_extract2.c:139) ==13328== by 0x8050770: archive_read_extract2 (archive_read_extract2.c:101) ==13328== by 0x80505CE: archive_read_extract (archive_read_extract.c:59) ==13328== by 0x804A3E2: extract (ext.c:63) ==13328== by 0x804A45A: main (ext.c:85) ==13328== Address 0x445c066 is 10 bytes before a block of size 0 alloc'd ==13328== at 0x402A17C: malloc (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so) ==13328== by 0x80783CC: ppmd_alloc (archive_read_support_format_rar.c:611) ==13328== by 0x809BD73: Ppmd7_Alloc (archive_ppmd7.c:136) ==13328== by 0x807C190: parse_codes (archive_read_support_format_rar.c:2115) ==13328== by 0x807B8CA: read_data_compressed (archive_read_support_format_rar.c:1919) ==13328== by 0x8079049: archive_read_format_rar_read_data (archive_read_support_format_rar.c:1025) ==13328== by 0x804ED6B: _archive_read_data_block (archive_read.c:982) ==13328== by 0x8091B3B: archive_read_data_block (archive_virtual.c:161) ==13328== by 0x805083C: copy_data (archive_read_extract2.c:139) ==13328== by 0x8050770: archive_read_extract2 (archive_read_extract2.c:101) ==13328== by 0x80505CE: archive_read_extract (archive_read_extract.c:59) ==13328== by 0x804A3E2: extract (ext.c:63) ==13328== ==13328== Invalid write of size 4 ==13328== at 0x809C519: RestartModel (archive_ppmd7.c:334) ==13328== by 0x809C693: Ppmd7_Init (archive_ppmd7.c:364) ==13328== by 0x807C20F: parse_codes (archive_read_support_format_rar.c:2128) ==13328== by 0x807B8CA: read_data_compressed (archive_read_support_format_rar.c:1919) ==13328== by 0x8079049: archive_read_format_rar_read_data (archive_read_support_format_rar.c:1025) ==13328== by 0x804ED6B: _archive_read_data_block (archive_read.c:982) ==13328== by 0x8091B3B: archive_read_data_block (archive_virtual.c:161) ==13328== by 0x805083C: copy_data (archive_read_extract2.c:139) ==13328== by 0x8050770: archive_read_extract2 (archive_read_extract2.c:101) ==13328== by 0x80505CE: archive_read_extract (archive_read_extract.c:59) ==13328== by 0x804A3E2: extract (ext.c:63) ==13328== by 0x804A45A: main (ext.c:85) ==13328== Address 0x445c068 is 8 bytes before a block of size 0 alloc'd ==13328== at 0x402A17C: malloc (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so) ==13328== by 0x80783CC: ppmd_alloc (archive_read_support_format_rar.c:611) ==13328== by 0x809BD73: Ppmd7_Alloc (archive_ppmd7.c:136) ==13328== by 0x807C190: parse_codes (archive_read_support_format_rar.c:2115) ==13328== by 0x807B8CA: read_data_compressed (archive_read_support_format_rar.c:1919) ==13328== by 0x8079049: archive_read_format_rar_read_data (archive_read_support_format_rar.c:1025) ==13328== by 0x804ED6B: _archive_read_data_block (archive_read.c:982) ==13328== by 0x8091B3B: archive_read_data_block (archive_virtual.c:161) ==13328== by 0x805083C: copy_data (archive_read_extract2.c:139) ==13328== by 0x8050770: archive_read_extract2 (archive_read_extract2.c:101) ==13328== by 0x80505CE: archive_read_extract (archive_read_extract.c:59) ==13328== by 0x804A3E2: extract (ext.c:63) ==13328== ==13328== Invalid write of size 1 ==13328== at 0x809C543: RestartModel (archive_ppmd7.c:338) ==13328== by 0x809C693: Ppmd7_Init (archive_ppmd7.c:364) ==13328== by 0x807C20F: parse_codes (archive_read_support_format_rar.c:2128) ==13328== by 0x807B8CA: read_data_compressed (archive_read_support_format_rar.c:1919) ==13328== by 0x8079049: archive_read_format_rar_read_data (archive_read_support_format_rar.c:1025) ==13328== by 0x804ED6B: _archive_read_data_block (archive_read.c:982) ==13328== by 0x8091B3B: archive_read_data_block (archive_virtual.c:161) ==13328== by 0x805083C: copy_data (archive_read_extract2.c:139) ==13328== by 0x8050770: archive_read_extract2 (archive_read_extract2.c:101) ==13328== by 0x80505CE: archive_read_extract (archive_read_extract.c:59) ==13328== by 0x804A3E2: extract (ext.c:63) ==13328== by 0x804A45A: main (ext.c:85) ==13328== Address 0x445c070 is 0 bytes after a block of size 0 alloc'd ==13328== at 0x402A17C: malloc (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so) ==13328== by 0x80783CC: ppmd_alloc (archive_read_support_format_rar.c:611) ==13328== by 0x809BD73: Ppmd7_Alloc (archive_ppmd7.c:136) ==13328== by 0x807C190: parse_codes (archive_read_support_format_rar.c:2115) ==13328== by 0x807B8CA: read_data_compressed (archive_read_support_format_rar.c:1919) ==13328== by 0x8079049: archive_read_format_rar_read_data (archive_read_support_format_rar.c:1025) ==13328== by 0x804ED6B: _archive_read_data_block (archive_read.c:982) ==13328== by 0x8091B3B: archive_read_data_block (archive_virtual.c:161) ==13328== by 0x805083C: copy_data (archive_read_extract2.c:139) ==13328== by 0x8050770: archive_read_extract2 (archive_read_extract2.c:101) ==13328== by 0x80505CE: archive_read_extract (archive_read_extract.c:59) ==13328== by 0x804A3E2: extract (ext.c:63) ==13328== ==13328== Invalid write of size 1 ==13328== at 0x809C548: RestartModel (archive_ppmd7.c:339) ==13328== by 0x809C693: Ppmd7_Init (archive_ppmd7.c:364) ==13328== by 0x807C20F: parse_codes (archive_read_support_format_rar.c:2128) ==13328== by 0x807B8CA: read_data_compressed (archive_read_support_format_rar.c:1919) ==13328== by 0x8079049: archive_read_format_rar_read_data (archive_read_support_format_rar.c:1025) ==13328== by 0x804ED6B: _archive_read_data_block (archive_read.c:982) ==13328== by 0x8091B3B: archive_read_data_block (archive_virtual.c:161) ==13328== by 0x805083C: copy_data (archive_read_extract2.c:139) ==13328== by 0x8050770: archive_read_extract2 (archive_read_extract2.c:101) ==13328== by 0x80505CE: archive_read_extract (archive_read_extract.c:59) ==13328== by 0x804A3E2: extract (ext.c:63) ==13328== by 0x804A45A: main (ext.c:85) ==13328== Address 0x445c071 is 1 bytes after a block of size 0 alloc'd ==13328== at 0x402A17C: malloc (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so) ==13328== by 0x80783CC: ppmd_alloc (archive_read_support_format_rar.c:611) ==13328== by 0x809BD73: Ppmd7_Alloc (archive_ppmd7.c:136) ==13328== by 0x807C190: parse_codes (archive_read_support_format_rar.c:2115) ==13328== by 0x807B8CA: read_data_compressed (archive_read_support_format_rar.c:1919) ==13328== by 0x8079049: archive_read_format_rar_read_data (archive_read_support_format_rar.c:1025) ==13328== by 0x804ED6B: _archive_read_data_block (archive_read.c:982) ==13328== by 0x8091B3B: archive_read_data_block (archive_virtual.c:161) ==13328== by 0x805083C: copy_data (archive_read_extract2.c:139) ==13328== by 0x8050770: archive_read_extract2 (archive_read_extract2.c:101) ==13328== by 0x80505CE: archive_read_extract (archive_read_extract.c:59) ==13328== by 0x804A3E2: extract (ext.c:63) ==13328== ==13328== Invalid write of size 2 ==13328== at 0x809C3CC: SetSuccessor (archive_ppmd7.c:310) ==13328== by 0x809C55E: RestartModel (archive_ppmd7.c:340) ==13328== by 0x809C693: Ppmd7_Init (archive_ppmd7.c:364) ==13328== by 0x807C20F: parse_codes (archive_read_support_format_rar.c:2128) ==13328== by 0x807B8CA: read_data_compressed (archive_read_support_format_rar.c:1919) ==13328== by 0x8079049: archive_read_format_rar_read_data (archive_read_support_format_rar.c:1025) ==13328== by 0x804ED6B: _archive_read_data_block (archive_read.c:982) ==13328== by 0x8091B3B: archive_read_data_block (archive_virtual.c:161) ==13328== by 0x805083C: copy_data (archive_read_extract2.c:139) ==13328== by 0x8050770: archive_read_extract2 (archive_read_extract2.c:101) ==13328== by 0x80505CE: archive_read_extract (archive_read_extract.c:59) ==13328== by 0x804A3E2: extract (ext.c:63) ==13328== Address 0x445c072 is 2 bytes after a block of size 0 alloc'd ==13328== at 0x402A17C: malloc (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so) ==13328== by 0x80783CC: ppmd_alloc (archive_read_support_format_rar.c:611) ==13328== by 0x809BD73: Ppmd7_Alloc (archive_ppmd7.c:136) ==13328== by 0x807C190: parse_codes (archive_read_support_format_rar.c:2115) ==13328== by 0x807B8CA: read_data_compressed (archive_read_support_format_rar.c:1919) ==13328== by 0x8079049: archive_read_format_rar_read_data (archive_read_support_format_rar.c:1025) ==13328== by 0x804ED6B: _archive_read_data_block (archive_read.c:982) ==13328== by 0x8091B3B: archive_read_data_block (archive_virtual.c:161) ==13328== by 0x805083C: copy_data (archive_read_extract2.c:139) ==13328== by 0x8050770: archive_read_extract2 (archive_read_extract2.c:101) ==13328== by 0x80505CE: archive_read_extract (archive_read_extract.c:59) ==13328== by 0x804A3E2: extract (ext.c:63) ==13328== ==13328== Invalid write of size 2 ==13328== at 0x809C3DB: SetSuccessor (archive_ppmd7.c:311) ==13328== by 0x809C55E: RestartModel (archive_ppmd7.c:340) ==13328== by 0x809C693: Ppmd7_Init (archive_ppmd7.c:364) ==13328== by 0x807C20F: parse_codes (archive_read_support_format_rar.c:2128) ==13328== by 0x807B8CA: read_data_compressed (archive_read_support_format_rar.c:1919) ==13328== by 0x8079049: archive_read_format_rar_read_data (archive_read_support_format_rar.c:1025) ==13328== by 0x804ED6B: _archive_read_data_block (archive_read.c:982) ==13328== by 0x8091B3B: archive_read_data_block (archive_virtual.c:161) ==13328== by 0x805083C: copy_data (archive_read_extract2.c:139) ==13328== by 0x8050770: archive_read_extract2 (archive_read_extract2.c:101) ==13328== by 0x80505CE: archive_read_extract (archive_read_extract.c:59) ==13328== by 0x804A3E2: extract (ext.c:63) ==13328== Address 0x445c074 is 4 bytes after a block of size 0 alloc'd ==13328== at 0x402A17C: malloc (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so) ==13328== by 0x80783CC: ppmd_alloc (archive_read_support_format_rar.c:611) ==13328== by 0x809BD73: Ppmd7_Alloc (archive_ppmd7.c:136) ==13328== by 0x807C190: parse_codes (archive_read_support_format_rar.c:2115) ==13328== by 0x807B8CA: read_data_compressed (archive_read_support_format_rar.c:1919) ==13328== by 0x8079049: archive_read_format_rar_read_data (archive_read_support_format_rar.c:1025) ==13328== by 0x804ED6B: _archive_read_data_block (archive_read.c:982) ==13328== by 0x8091B3B: archive_read_data_block (archive_virtual.c:161) ==13328== by 0x805083C: copy_data (archive_read_extract2.c:139) ==13328== by 0x8050770: archive_read_extract2 (archive_read_extract2.c:101) ==13328== by 0x80505CE: archive_read_extract (archive_read_extract.c:59) ==13328== by 0x804A3E2: extract (ext.c:63) ==13328== ``` ### TIMELINE * 2016-04-19 - Vendor Disclosure * 2016-06-18 - Public Release |
id | SSV:96753 |
last seen | 2017-11-19 |
modified | 2017-10-20 |
published | 2017-10-20 |
reporter | Root |
title | Libarchive Rar RestartModel Code Execution Vulnerability(CVE-2016-4302) |
Talos
id | TALOS-2016-0154 |
last seen | 2019-05-29 |
published | 2016-06-19 |
reporter | Talos Intelligence |
source | http://www.talosintelligence.com/vulnerability_reports/TALOS-2016-0154 |
title | Libarchive Rar RestartModel Code Execution Vulnerability |
References
- http://rhn.redhat.com/errata/RHSA-2016-1844.html
- https://github.com/libarchive/libarchive/issues/719
- http://www.talosintel.com/reports/TALOS-2016-0154/
- http://blog.talosintel.com/2016/06/the-poisoned-archives.html
- http://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=1348444
- http://www.securityfocus.com/bid/91331
- https://github.com/libarchive/libarchive/commit/05caadc7eedbef471ac9610809ba683f0c698700
- http://www.oracle.com/technetwork/topics/security/linuxbulletinjul2016-3090544.html
- http://www.oracle.com/technetwork/topics/security/bulletinjul2016-3090568.html
- https://security.gentoo.org/glsa/201701-03
- http://www.debian.org/security/2016/dsa-3657