cbcvebase.
CVE-2014-8636
published 2015-01-14

CVE-2014-8636: The XrayWrapper implementation in Mozilla Firefox before 35.0 and SeaMonkey before 2.32 does not properly interact with a DOM object that has a named getter…

PriorityP275high7.5CVSS 2.0
AVNACLAuNCPIPAP
ITWEXPLOITVulnCheck KEV
Exploited in the wild
EPSS
65.66%
99.2th percentile
The XrayWrapper implementation in Mozilla Firefox before 35.0 and SeaMonkey before 2.32 does not properly interact with a DOM object that has a named getter, which might allow remote attackers to execute arbitrary JavaScript code with chrome privileges via unspecified vectors.

Affected

4 ranges
VendorProductVersion rangeFixed in
mozillafirefox<= 34.0.5
mozillafirefox>= 0 < 35.0.1+build1-0ubuntu0.14.04.135.0.1+build1-0ubuntu0.14.04.1
mozillafirefox>= 0 < 35.0+build3-0ubuntu0.14.04.235.0+build3-0ubuntu0.14.04.2
mozillaseamonkey<= 2.31

Detection & IOCsextracted from sources · hover to see the quote

urlchrome://browser/content/browser.xul
commandx.messageManager.loadFrameScript('data:,'+key, false);
commandObject.setPrototypeOf(document, Proxy.create(props));
commandx.messageManager.loadFrameScript('data:,throw Components.utils', false);
snort
alert http $EXTERNAL_NET any -> $HOME_NET any (msg:"ET WEB_CLIENT Firefox Proxy Prototype RCE Attempt (CVE-2014-8636)"; flow:established,to_client; file.data; content:"chrome|3a 2f 2f|"; nocase; content:"open"; nocase; pcre:"/^\s*?\(\s*?[\x22\x27]chrome\x3a\/\//Ri"; content:"messageManager.loadFrameScript"; nocase; content:"Proxy.create"; nocase; reference:url,community.rapid7.com/community/metasploit/blog/2015/03/23/r7-2015-04-disclosure-mozilla-firefox-proxy-prototype-rce-cve-2014-8636; reference:cve,2014-8636; classtype:attempted-user; sid:2020756; rev:3; metadata:affected_product Web_Browsers, affected_product Web_Browser_Plugins, attack_target Client_Endpoint, created_at 2015_03_26, cve CVE_2014_8636, deployment Perimeter, confidence Medium, signature_severity Major, tag Web_Client_Attacks, updated_at 2024_03_14;)
bytes
chrome|3a 2f 2f|
  • Exploit targets Firefox versions 31–34 exclusively; UA string filtering for Firefox with major version between 31 and 34 can identify targeted clients
  • Exploit payload opens a chrome:// privileged window with off-screen coordinates to hide it from the user; look for window.open calls with chrome:// URLs and negative top/left coordinates
  • Exploit requires a user click anywhere on the page to trigger; the Proxy.create trap fires on DOM property access (specifically 'nodeType') triggered by user interaction
  • The attack chain uses messageManager.loadFrameScript with a data: URI to inject privileged JavaScript; detect HTTP responses containing both 'Proxy.create' and 'messageManager.loadFrameScript' in the same script block
  • The PoC/exploit sets document.__proto__ or Object.setPrototypeOf(document, ...) to a Proxy object; JavaScript static analysis or CSP violations on prototype manipulation of document can flag this
  • Payload is delivered via a data: URI loaded into the chrome window via loadFrameScript; monitor for data: URI navigations originating from chrome-privileged contexts
  • ·The exploit only affects Firefox 31–34; Firefox 35+ and ESR 31 (with specific patches) are not vulnerable to the full RCE chain, though ESR 31 may still be vulnerable to the underlying __proto__ hooking DoS
  • ·The Metasploit module's JavaScript payload is obfuscated via jsobfu, so static string matching on exact JS tokens may miss obfuscated variants; behavioral/heuristic detection is preferred
  • ·The mozbrowser iframe attribute is required for the RCE chain to succeed; without it, messageManager.childCount returns 0 and the frame script has no effect

CVSS provenance

nvdv2.07.5HIGHAV:N/AC:L/Au:N/C:P/I:P/A:P
osv7.5HIGH
vulncheck7.5HIGH
vendor_redhat7.5HIGH
vendor_ubuntu7.5HIGH
CVEs like this are exactly what “Exploited This Week” covers.

Every Monday: what got weaponized or added to CISA KEV in the last seven days — each CVE cross-linked to its PoC, Nuclei template, and detection rule. Free, one email a week, unsubscribe in one click.