Vulnerabilities > CVE-2016-4300 - Integer Overflow or Wraparound vulnerability in multiple products
Attack vector
LOCAL Attack complexity
LOW Privileges required
NONE Confidentiality impact
HIGH Integrity impact
HIGH Availability impact
HIGH Summary
Integer overflow in the read_SubStreamsInfo function in archive_read_support_format_7zip.c in libarchive before 3.2.1 allows remote attackers to execute arbitrary code via a 7zip file with a large number of substreams, which triggers a heap-based buffer overflow.
Vulnerable Configurations
Common Weakness Enumeration (CWE)
Common Attack Pattern Enumeration and Classification (CAPEC)
- Forced Integer Overflow This attack forces an integer variable to go out of range. The integer variable is often used as an offset such as size of memory allocation or similarly. The attacker would typically control the value of such variable and try to get it out of range. For instance the integer in question is incremented past the maximum possible value, it may wrap to become a very small, or negative number, therefore providing a very incorrect value which can lead to unexpected behavior. At worst the attacker can execute arbitrary code.
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 7zip read_SubStreamsInfo functionality of libarchive. A specially crafted 7zip file can cause a integer overflow resulting in memory corruption that can lead to code execution. An attacker can send a malformed file to trigger this vulnerability. ### TESTED VERSIONS libarchive 3.1.2 ### 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 ### DETAILS Vulnerable code exists in 7zip support format module: libarchive\archivereadsupportformat7zip.c: ``` (...) #define UMAX_ENTRY ARCHIVE_LITERAL_ULL(100000000) (...) Line 2129 static int Line 2130 read_SubStreamsInfo(struct archive_read *a, struct _7z_substream_info *ss, Line 2131 struct _7z_folder *f, size_t numFolders) Line 2132 { Line 2133 const unsigned char *p; Line 2134 uint64_t *usizes; Line 2135 size_t unpack_streams; Line 2136 int type; Line 2137 unsigned i; Line 2138 uint32_t numDigests; (...) Line 2149 if (type == kNumUnPackStream) { Line 2150 unpack_streams = 0; Line 2151 for (i = 0; i < numFolders; i++) { Line 2152 if (parse_7zip_uint64(a, &(f[i].numUnpackStreams)) < 0) Line 2153 return (-1); Line 2154 if (UMAX_ENTRY < f[i].numUnpackStreams) Line 2155 return (-1); Line 2156 unpack_streams += (size_t)f[i].numUnpackStreams; // <---- INTEGER OVERFLOW Line 2157 } Line 2158 if ((p = header_bytes(a, 1)) == NULL) Line 2159 return (-1); Line 2160 type = *p; Line 2161 } else Line 2162 unpack_streams = numFolders; Line 2163 Line 2164 ss->unpack_streams = unpack_streams; Line 2165 if (unpack_streams) { Line 2166 ss->unpackSizes = calloc(unpack_streams, // <----- ALLOCATION BASED ON OVERFLOWED INT Line 2167 sizeof(*ss->unpackSizes)); Line 2168 ss->digestsDefined = calloc(unpack_streams, Line 2169 sizeof(*ss->digestsDefined)); Line 2170 ss->digests = calloc(unpack_streams, Line 2171 sizeof(*ss->digests)); Line 2172 if (ss->unpackSizes == NULL || ss->digestsDefined == NULL || Line 2173 ss->digests == NULL) Line 2174 return (-1); Line 2175 } Line 2176 Line 2177 usizes = ss->unpackSizes; Line 2178 for (i = 0; i < numFolders; i++) { Line 2179 unsigned pack; Line 2180 uint64_t sum; Line 2181 Line 2182 if (f[i].numUnpackStreams == 0) Line 2183 continue; Line 2184 Line 2185 sum = 0; Line 2186 if (type == kSize) { Line 2187 for (pack = 1; pack < f[i].numUnpackStreams; pack++) { Line 2188 if (parse_7zip_uint64(a, usizes) < 0) // <--- BUFFER OVERFLOW Line 2189 return (-1); Line 2190 sum += *usizes++; Line 2191 } Line 2192 } Line 2193 *usizes++ = folder_uncompressed_size(&f[i]) - sum; Line 2194 } ``` In lines 2149-2157 we can see that for all "folders" is calculated sum of "numUnpackStreams" which result is stored in "unpackstreams" variable. This variable is sizet what means that on x86 platform will be 32bit unsigned int. Maxium value of of "numUnpackStreams" is equal to UMAXENTRY. To overflow "unpackstreams" variable we need to have 7zip file with number of folders "numFolders" bigger than 42 and "numUnpackStreams" with sufficient values. The overflowed value is also used as size parameter in calloc in lines 2166-2171. Interesting buffer allocated there for us is "ss->unpackSizes". Later in lines 2187-2194 based on "numFolders" and "numUnpackStreams" of each folder, a 64bit unsigned integer (maximum) is read from the file and stored into buffer "usizes" which is indeed "ss->unpackSizes" ( line 2177 ) causing a heap based buffer overflow after some iterations. At this point the attacker controls the length and contents of the memory corruption. ### CRASH INFORMATION ``` valgrind output: ==33167== Memcheck, a memory error detector ==33167== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al. ==33167== Using Valgrind-3.10.0.SVN and LibVEX; rerun with -h for copyright info ==33167== ==33167== Invalid write of size 4 ==33167== at 0x805A459: parse_7zip_uint64 (archive_read_support_format_7zip.c:1666) ==33167== by 0x805B9C0: read_SubStreamsInfo (archive_read_support_format_7zip.c:2191) ==33167== by 0x805BF42: read_StreamsInfo (archive_read_support_format_7zip.c:2320) ==33167== by 0x805C0ED: read_Header (archive_read_support_format_7zip.c:2390) ==33167== by 0x805D5DE: slurp_central_directory (archive_read_support_format_7zip.c:2927) ==33167== by 0x805834F: archive_read_format_7zip_read_header (archive_read_support_format_7zip.c:640) ==33167== by 0x804E3C6: _archive_read_next_header2 (archive_read.c:645) ==33167== by 0x804E47A: _archive_read_next_header (archive_read.c:683) ==33167== by 0x8088A06: archive_read_next_header (archive_virtual.c:148) ==33167== by 0x804A178: extract (ext.c:55) ==33167== by 0x804A271: main (ext.c:83) ==33167== Address 0x445cd28 is 0 bytes after a block of size 8 alloc'd ==33167== at 0x402C109: calloc (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so) ==33167== by 0x805B8FA: read_SubStreamsInfo (archive_read_support_format_7zip.c:2169) ==33167== by 0x805BF42: read_StreamsInfo (archive_read_support_format_7zip.c:2320) ==33167== by 0x805C0ED: read_Header (archive_read_support_format_7zip.c:2390) ==33167== by 0x805D5DE: slurp_central_directory (archive_read_support_format_7zip.c:2927) ==33167== by 0x805834F: archive_read_format_7zip_read_header (archive_read_support_format_7zip.c:640) ==33167== by 0x804E3C6: _archive_read_next_header2 (archive_read.c:645) ==33167== by 0x804E47A: _archive_read_next_header (archive_read.c:683) ==33167== by 0x8088A06: archive_read_next_header (archive_virtual.c:148) ==33167== by 0x804A178: extract (ext.c:55) ==33167== by 0x804A271: main (ext.c:83) ==33167== ==33167== Invalid write of size 4 ==33167== at 0x805A45F: parse_7zip_uint64 (archive_read_support_format_7zip.c:1666) ==33167== by 0x805B9C0: read_SubStreamsInfo (archive_read_support_format_7zip.c:2191) ==33167== by 0x805BF42: read_StreamsInfo (archive_read_support_format_7zip.c:2320) ==33167== by 0x805C0ED: read_Header (archive_read_support_format_7zip.c:2390) ==33167== by 0x805D5DE: slurp_central_directory (archive_read_support_format_7zip.c:2927) ==33167== by 0x805834F: archive_read_format_7zip_read_header (archive_read_support_format_7zip.c:640) ==33167== by 0x804E3C6: _archive_read_next_header2 (archive_read.c:645) ==33167== by 0x804E47A: _archive_read_next_header (archive_read.c:683) ==33167== by 0x8088A06: archive_read_next_header (archive_virtual.c:148) ==33167== by 0x804A178: extract (ext.c:55) ==33167== by 0x804A271: main (ext.c:83) ==33167== Address 0x445cd2c is 4 bytes after a block of size 8 alloc'd ==33167== at 0x402C109: calloc (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so) ==33167== by 0x805B8FA: read_SubStreamsInfo (archive_read_support_format_7zip.c:2169) ==33167== by 0x805BF42: read_StreamsInfo (archive_read_support_format_7zip.c:2320) ==33167== by 0x805C0ED: read_Header (archive_read_support_format_7zip.c:2390) ==33167== by 0x805D5DE: slurp_central_directory (archive_read_support_format_7zip.c:2927) ==33167== by 0x805834F: archive_read_format_7zip_read_header (archive_read_support_format_7zip.c:640) ==33167== by 0x804E3C6: _archive_read_next_header2 (archive_read.c:645) ==33167== by 0x804E47A: _archive_read_next_header (archive_read.c:683) ==33167== by 0x8088A06: archive_read_next_header (archive_virtual.c:148) ==33167== by 0x804A178: extract (ext.c:55) ==33167== by 0x804A271: main (ext.c:83) ==33167== ==33167== Invalid read of size 4 ==33167== at 0x805A512: parse_7zip_uint64 (archive_read_support_format_7zip.c:1675) ==33167== by 0x805B9C0: read_SubStreamsInfo (archive_read_support_format_7zip.c:2191) ==33167== by 0x805BF42: read_StreamsInfo (archive_read_support_format_7zip.c:2320) ==33167== by 0x805C0ED: read_Header (archive_read_support_format_7zip.c:2390) ==33167== by 0x805D5DE: slurp_central_directory (archive_read_support_format_7zip.c:2927) ==33167== by 0x805834F: archive_read_format_7zip_read_header (archive_read_support_format_7zip.c:640) ==33167== by 0x804E3C6: _archive_read_next_header2 (archive_read.c:645) ==33167== by 0x804E47A: _archive_read_next_header (archive_read.c:683) ==33167== by 0x8088A06: archive_read_next_header (archive_virtual.c:148) ==33167== by 0x804A178: extract (ext.c:55) ==33167== by 0x804A271: main (ext.c:83) ==33167== Address 0x445cd28 is 0 bytes after a block of size 8 alloc'd ==33167== at 0x402C109: calloc (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so) ==33167== by 0x805B8FA: read_SubStreamsInfo (archive_read_support_format_7zip.c:2169) ==33167== by 0x805BF42: read_StreamsInfo (archive_read_support_format_7zip.c:2320) ==33167== by 0x805C0ED: read_Header (archive_read_support_format_7zip.c:2390) ==33167== by 0x805D5DE: slurp_central_directory (archive_read_support_format_7zip.c:2927) ==33167== by 0x805834F: archive_read_format_7zip_read_header (archive_read_support_format_7zip.c:640) ==33167== by 0x804E3C6: _archive_read_next_header2 (archive_read.c:645) ==33167== by 0x804E47A: _archive_read_next_header (archive_read.c:683) ==33167== by 0x8088A06: archive_read_next_header (archive_virtual.c:148) ==33167== by 0x804A178: extract (ext.c:55) ==33167== by 0x804A271: main (ext.c:83) ==33167== ==33167== Invalid read of size 4 ==33167== at 0x805A514: parse_7zip_uint64 (archive_read_support_format_7zip.c:1675) ==33167== by 0x805B9C0: read_SubStreamsInfo (archive_read_support_format_7zip.c:2191) ==33167== by 0x805BF42: read_StreamsInfo (archive_read_support_format_7zip.c:2320) ==33167== by 0x805C0ED: read_Header (archive_read_support_format_7zip.c:2390) ==33167== by 0x805D5DE: slurp_central_directory (archive_read_support_format_7zip.c:2927) ==33167== by 0x805834F: archive_read_format_7zip_read_header (archive_read_support_format_7zip.c:640) ==33167== by 0x804E3C6: _archive_read_next_header2 (archive_read.c:645) ==33167== by 0x804E47A: _archive_read_next_header (archive_read.c:683) ==33167== by 0x8088A06: archive_read_next_header (archive_virtual.c:148) ==33167== by 0x804A178: extract (ext.c:55) ==33167== by 0x804A271: main (ext.c:83) ==33167== Address 0x445cd2c is 4 bytes after a block of size 8 alloc'd ==33167== at 0x402C109: calloc (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so) ==33167== by 0x805B8FA: read_SubStreamsInfo (archive_read_support_format_7zip.c:2169) ==33167== by 0x805BF42: read_StreamsInfo (archive_read_support_format_7zip.c:2320) ==33167== by 0x805C0ED: read_Header (archive_read_support_format_7zip.c:2390) ==33167== by 0x805D5DE: slurp_central_directory (archive_read_support_format_7zip.c:2927) ==33167== by 0x805834F: archive_read_format_7zip_read_header (archive_read_support_format_7zip.c:640) ==33167== by 0x804E3C6: _archive_read_next_header2 (archive_read.c:645) ==33167== by 0x804E47A: _archive_read_next_header (archive_read.c:683) ==33167== by 0x8088A06: archive_read_next_header (archive_virtual.c:148) ==33167== by 0x804A178: extract (ext.c:55) ==33167== by 0x804A271: main (ext.c:83) ==33167== ==33167== Invalid write of size 4 ==33167== at 0x805A540: parse_7zip_uint64 (archive_read_support_format_7zip.c:1675) ==33167== by 0x805B9C0: read_SubStreamsInfo (archive_read_support_format_7zip.c:2191) ==33167== by 0x805BF42: read_StreamsInfo (archive_read_support_format_7zip.c:2320) ==33167== by 0x805C0ED: read_Header (archive_read_support_format_7zip.c:2390) ==33167== by 0x805D5DE: slurp_central_directory (archive_read_support_format_7zip.c:2927) ==33167== by 0x805834F: archive_read_format_7zip_read_header (archive_read_support_format_7zip.c:640) ==33167== by 0x804E3C6: _archive_read_next_header2 (archive_read.c:645) ==33167== by 0x804E47A: _archive_read_next_header (archive_read.c:683) ==33167== by 0x8088A06: archive_read_next_header (archive_virtual.c:148) ==33167== by 0x804A178: extract (ext.c:55) ==33167== by 0x804A271: main (ext.c:83) ==33167== Address 0x445cd28 is 0 bytes after a block of size 8 alloc'd ==33167== at 0x402C109: calloc (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so) ==33167== by 0x805B8FA: read_SubStreamsInfo (archive_read_support_format_7zip.c:2169) ==33167== by 0x805BF42: read_StreamsInfo (archive_read_support_format_7zip.c:2320) ==33167== by 0x805C0ED: read_Header (archive_read_support_format_7zip.c:2390) ==33167== by 0x805D5DE: slurp_central_directory (archive_read_support_format_7zip.c:2927) ==33167== by 0x805834F: archive_read_format_7zip_read_header (archive_read_support_format_7zip.c:640) ==33167== by 0x804E3C6: _archive_read_next_header2 (archive_read.c:645) ==33167== by 0x804E47A: _archive_read_next_header (archive_read.c:683) ==33167== by 0x8088A06: archive_read_next_header (archive_virtual.c:148) ==33167== by 0x804A178: extract (ext.c:55) ==33167== by 0x804A271: main (ext.c:83) ==33167== ==33167== Invalid write of size 4 ==33167== at 0x805A542: parse_7zip_uint64 (archive_read_support_format_7zip.c:1675) ==33167== by 0x805B9C0: read_SubStreamsInfo (archive_read_support_format_7zip.c:2191) ==33167== by 0x805BF42: read_StreamsInfo (archive_read_support_format_7zip.c:2320) ==33167== by 0x805C0ED: read_Header (archive_read_support_format_7zip.c:2390) ==33167== by 0x805D5DE: slurp_central_directory (archive_read_support_format_7zip.c:2927) ==33167== by 0x805834F: archive_read_format_7zip_read_header (archive_read_support_format_7zip.c:640) ==33167== by 0x804E3C6: _archive_read_next_header2 (archive_read.c:645) ==33167== by 0x804E47A: _archive_read_next_header (archive_read.c:683) ==33167== by 0x8088A06: archive_read_next_header (archive_virtual.c:148) ==33167== by 0x804A178: extract (ext.c:55) ==33167== by 0x804A271: main (ext.c:83) ==33167== Address 0x445cd2c is 4 bytes after a block of size 8 alloc'd ==33167== at 0x402C109: calloc (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so) ==33167== by 0x805B8FA: read_SubStreamsInfo (archive_read_support_format_7zip.c:2169) ==33167== by 0x805BF42: read_StreamsInfo (archive_read_support_format_7zip.c:2320) ==33167== by 0x805C0ED: read_Header (archive_read_support_format_7zip.c:2390) ==33167== by 0x805D5DE: slurp_central_directory (archive_read_support_format_7zip.c:2927) ==33167== by 0x805834F: archive_read_format_7zip_read_header (archive_read_support_format_7zip.c:640) ==33167== by 0x804E3C6: _archive_read_next_header2 (archive_read.c:645) ==33167== by 0x804E47A: _archive_read_next_header (archive_read.c:683) ==33167== by 0x8088A06: archive_read_next_header (archive_virtual.c:148) ==33167== by 0x804A178: extract (ext.c:55) ==33167== by 0x804A271: main (ext.c:83) ==33167== ==33167== Invalid read of size 4 ==33167== at 0x805B9D8: read_SubStreamsInfo (archive_read_support_format_7zip.c:2193) ==33167== by 0x805BF42: read_StreamsInfo (archive_read_support_format_7zip.c:2320) ==33167== by 0x805C0ED: read_Header (archive_read_support_format_7zip.c:2390) ==33167== by 0x805D5DE: slurp_central_directory (archive_read_support_format_7zip.c:2927) ==33167== by 0x805834F: archive_read_format_7zip_read_header (archive_read_support_format_7zip.c:640) ==33167== by 0x804E3C6: _archive_read_next_header2 (archive_read.c:645) ==33167== by 0x804E47A: _archive_read_next_header (archive_read.c:683) ==33167== by 0x8088A06: archive_read_next_header (archive_virtual.c:148) ==33167== by 0x804A178: extract (ext.c:55) ==33167== by 0x804A271: main (ext.c:83) ==33167== Address 0x445cd2c is 4 bytes after a block of size 8 alloc'd ==33167== at 0x402C109: calloc (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so) ==33167== by 0x805B8FA: read_SubStreamsInfo (archive_read_support_format_7zip.c:2169) ==33167== by 0x805BF42: read_StreamsInfo (archive_read_support_format_7zip.c:2320) ==33167== by 0x805C0ED: read_Header (archive_read_support_format_7zip.c:2390) ==33167== by 0x805D5DE: slurp_central_directory (archive_read_support_format_7zip.c:2927) ==33167== by 0x805834F: archive_read_format_7zip_read_header (archive_read_support_format_7zip.c:640) ==33167== by 0x804E3C6: _archive_read_next_header2 (archive_read.c:645) ==33167== by 0x804E47A: _archive_read_next_header (archive_read.c:683) ==33167== by 0x8088A06: archive_read_next_header (archive_virtual.c:148) ==33167== by 0x804A178: extract (ext.c:55) ==33167== by 0x804A271: main (ext.c:83) ==33167== ==33167== Invalid read of size 4 ==33167== at 0x805B9DB: read_SubStreamsInfo (archive_read_support_format_7zip.c:2193) ==33167== by 0x805BF42: read_StreamsInfo (archive_read_support_format_7zip.c:2320) ==33167== by 0x805C0ED: read_Header (archive_read_support_format_7zip.c:2390) ==33167== by 0x805D5DE: slurp_central_directory (archive_read_support_format_7zip.c:2927) ==33167== by 0x805834F: archive_read_format_7zip_read_header (archive_read_support_format_7zip.c:640) ==33167== by 0x804E3C6: _archive_read_next_header2 (archive_read.c:645) ==33167== by 0x804E47A: _archive_read_next_header (archive_read.c:683) ==33167== by 0x8088A06: archive_read_next_header (archive_virtual.c:148) ==33167== by 0x804A178: extract (ext.c:55) ==33167== by 0x804A271: main (ext.c:83) ==33167== Address 0x445cd28 is 0 bytes after a block of size 8 alloc'd ==33167== at 0x402C109: calloc (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so) ==33167== by 0x805B8FA: read_SubStreamsInfo (archive_read_support_format_7zip.c:2169) ==33167== by 0x805BF42: read_StreamsInfo (archive_read_support_format_7zip.c:2320) ==33167== by 0x805C0ED: read_Header (archive_read_support_format_7zip.c:2390) ==33167== by 0x805D5DE: slurp_central_directory (archive_read_support_format_7zip.c:2927) ==33167== by 0x805834F: archive_read_format_7zip_read_header (archive_read_support_format_7zip.c:640) ==33167== by 0x804E3C6: _archive_read_next_header2 (archive_read.c:645) ==33167== by 0x804E47A: _archive_read_next_header (archive_read.c:683) ==33167== by 0x8088A06: archive_read_next_header (archive_virtual.c:148) ==33167== by 0x804A178: extract (ext.c:55) ==33167== by 0x804A271: main (ext.c:83) ==33167== Damaged 7-Zip archive ==33167== ==33167== HEAP SUMMARY: ==33167== in use at exit: 169,758 bytes in 199 blocks ==33167== total heap usage: 199 allocs, 0 frees, 169,758 bytes allocated ==33167== ==33167== LEAK SUMMARY: ==33167== definitely lost: 0 bytes in 0 blocks ==33167== indirectly lost: 0 bytes in 0 blocks ==33167== possibly lost: 0 bytes in 0 blocks ==33167== still reachable: 169,758 bytes in 199 blocks ==33167== suppressed: 0 bytes in 0 blocks ==33167== Rerun with --leak-check=full to see details of leaked memory ==33167== ==33167== For counts of detected and suppressed errors, rerun with: -v ==33167== ERROR SUMMARY: 564 errors from 8 contexts (suppressed: 0 from 0) ``` ### TIMELINE * 2016-04-19 - Vendor Disclosure * 2016-06-18 - Public Release |
id | SSV:96754 |
last seen | 2017-11-19 |
modified | 2017-10-20 |
published | 2017-10-20 |
reporter | Root |
title | Libarchive 7zip read_SubStreamsInfo Code Execution Vulnerability(CVE-2016-4300) |
Talos
id | TALOS-2016-0152 |
last seen | 2019-05-29 |
published | 2016-06-19 |
reporter | Talos Intelligence |
source | http://www.talosintelligence.com/vulnerability_reports/TALOS-2016-0152 |
title | Libarchive 7zip read_SubStreamsInfo Code Execution Vulnerability |
References
- https://github.com/libarchive/libarchive/commit/e79ef306afe332faf22e9b442a2c6b59cb175573
- http://rhn.redhat.com/errata/RHSA-2016-1844.html
- http://www.talosintel.com/reports/TALOS-2016-0152/
- http://blog.talosintel.com/2016/06/the-poisoned-archives.html
- https://github.com/libarchive/libarchive/issues/718
- http://www.securityfocus.com/bid/91326
- https://bugzilla.redhat.com/show_bug.cgi?id=1348439
- http://www.oracle.com/technetwork/topics/security/linuxbulletinjul2016-3090544.html
- http://www.oracle.com/technetwork/topics/security/bulletinjul2016-3090568.html
- https://security-center.intel.com/advisory.aspx?intelid=INTEL-SA-00062&languageid=en-fr
- https://security.gentoo.org/glsa/201701-03
- http://www.debian.org/security/2016/dsa-3657