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
Uint32Array
and aUint8Array
to get a overflow in anArrayBuffer
and proceed to convert this to arbitrary read-write and execute shellcode.