tl;dr
- Exploit code for a vulnerability in Firefox, found by saelo and coinbase security.
- IonMonkey does not check for indexed elements on the current element’s prototypes, and only checks on ArrayPrototype. This leads to type-confusion after inlining
Array.pop. - We confuse a
Uint32Arrayand aUint8Arrayto get a overflow in anArrayBufferand proceed to convert this to arbitrary read-write and execute shellcode.