I found that opening a new window, saving a reference to opener in Math, and then enumerating the window object with for..in in a setTimeout just as the server redirect fired caused a crash rated...
IE10 Sandbox Bypass: Triggering a Download and Going Back Removes Sandbox Flags
I found that a sandboxed window could escape its sandbox by triggering a file download (.zip, .exe, .wmv, etc.) and then calling history.back(). After the back navigation, the page loaded without...
IE10 Sandbox Bypass: Flash getURL with javascript: Target Reaches Sandboxed Window
After Win8 Release Preview re-enabled javascript: URLs in sandboxed iframes (having disabled them in Win8 Consumer Preview), I found that Flash's getURL method could reach a named sandboxed window...
IE10 UXSS: Sandbox Paradox — javascript: URL in Sandboxed iframe Gives Cross-Origin DOM Access
I found that loading a cross-origin URL inside a sandboxed iframe and then setting window[0].location to a javascript: URI gave the attacker script execution in the iframe's context with access to...
IE10: X-Frame-Options Header Bypassed via mhtml: Protocol in Sandboxed iframe
I found that loading an MHTML file inside a sandboxed iframe using the mhtml: protocol prefix, and then navigating the inner iframe twice to the target URL, bypassed the X-Frame-Options: DENY or...
IE10 DoS: Cached document.links Collection After Redirect Crashes in jscript9 CrossSite Marshal
I found that injecting elements into a window before its server redirect and caching the document.links collection caused a crash when the cached collection was accessed after the redirect, as...
IE10 DoS: pushState to mhtml: URL Then window.open Crashes in urlmon StrCmpCW
Setting an mhtml: prefix on the current URL via history.pushState and then opening a new window caused a null pointer dereference in KERNELBASE!StrCmpCW during urlmon's redirect security check,...
IE10 UXSS: pushState + Redirect + history.back() Retains Cross-Origin DOM Access
I found that pushing a redirect URL into an iframe's history with pushState, reloading to complete the redirect, then calling history.back() on the top window left the iframe appearing to belong to...
IE10 Metro: Loading mhtml from Sandboxed iframe Breaks Out to Top Window Without Showing Address Bar
I found that in IE10 Metro, navigating a fully sandboxed iframe to an MHTML file caused the MHTML content to open in the top window rather than stay contained in the iframe. This bypassed the sandbox...
IE10 Metro: Back Gesture Can Be Spoofed with Oversized Scrollable Div and iframe
I found that an evil page could trick touch-screen users who performed the back swipe gesture (moving a finger right to go back) by creating an oversized horizontally-scrollable container with the...
UXSS: Meta-Refresh to about:blank Inherits Parent Domain Instead of iframe Domain
I found that when an iframe used a <meta http-equiv="refresh"> tag to navigate itself to about:blank, the resulting about:blank inherited the domain of the parent page rather than the iframe's own...
IE10 Metro: Page Reload with Server Redirect Does Not Show Address Bar
In IE10 Metro, navigating to a new URL briefly showed the address bar so the user could see where they were going. I found that using location.reload() with a server-side redirect to a different URL...
IE10: Content and Address Bar Spoof via onunload Sync XMLHttpRequest Freeze
I found that an onunload handler could replace the page's content and then freeze the browser thread using a synchronous XMLHttpRequest to a never-responding server endpoint. This left the address...
IE10 UXSS: Caching document.all from New Window Before Server Redirect
I found another variant of the document.all caching technique, this time using window.open rather than a modeless dialog. Saving a reference to document.all from a newly opened window before its...
IE10: msSetPointerCapture Allows iframe to Intercept Clicks Outside Its Bounds
I found that msSetPointerCapture combined with setCapture inside an iframe continued delivering pointer events — including mouse coordinates and click events — even when the user's pointer was...
IE10 DoS: msSetPointerCapture on Destroyed Element Crashes on Scrollbar Mouseover
Calling msSetPointerCapture on an element and then destroying that element via outerHTML = '' caused a crash when the user moused over any scrollbar afterward. The fault occurred in...
IE10 DoS: Script Element Appended to createHTMLDocument Crashes Browser
Appending a script element with innerText set to a value into a document created via document.implementation.createHTMLDocument("") caused a crash in...
IE10: Referrer Spoofing via history.replaceState + Server Redirect + Reload
I found that using history.replaceState to point the current history entry at a redirect URL, then calling location.reload(), caused IE10 to load the redirect target while preserving the original...
IE10: Rendering Almost Any File as HTML via pushState + Server Redirect + Reload
I found that using history.pushState to inject a redirect URL into the navigation history, followed by history.go(0) to reload, caused IE10 to render the redirect target using the previous page's...
EoP: Flash innerHTML Random Crash is PROBABLY_EXPLOITABLE
I found that repeatedly reloading a Flash object via innerHTML in a tight onkeypress loop caused a crash in Flash11f rated PROBABLY_EXPLOITABLE. Each keypress replaced the DOM with a new Flash object...
IE10 EoP: history.pushState Redirect to Blob URL then Reload is EXPLOITABLE
I found that pushing a server-redirect URL pointing at blob: into the history stack with history.pushState, then reloading with history.go(0), caused a crash rated EXPLOITABLE in...
IE10: Blob Image URLs Cross Sandbox Boundaries via postMessage
I found that blob URLs created by the parent page could be sent to a sandboxed iframe via postMessage, and the sandboxed iframe could load them as image sources and even read the pixel data via...
IE10 DoS: Loading HTC Behavior from Blob URL via Server Redirect Crashes Browser
I found that creating a blob with HTML content that referenced an HTC behavior (style="behavior:url(1)") and then navigating to it via a server redirect caused a crash in...
IE10 DoS: Blob URL in showModalDialog Creates Invisible Modal That Locks the Browser
Passing "blob:" as the URL to showModalDialog() opened an invisible modal window — one that was present but not rendered — making the entire browser unusable until the process was killed.
IE10 EoP: Invalid Content-Type on Blob URL Server Redirect is PROBABLY_EXPLOITABLE
Building on the blob-redirect technique, I found that using an invalid content type string (like "INVALID") when creating the blob caused a crash rated PROBABLY_EXPLOITABLE when the server redirected...
IE10: Rendering HTML Blob Content via Server Redirect Bypasses Blob URL Restriction
Blob URLs were not supposed to be usable as iframe src or browser navigation targets — they were intended only for images, scripts, CSS, and workers. I found that this restriction could be bypassed...
IE10 EoP: window.open in Destroyed iframe Triggers EXPLOITABLE DEP Violation
I found that if window.open("javascript:1", "_self") was called inside an iframe while an error notification dialog was pending — and the parent simultaneously destroyed that iframe — IE10 crashed...
IE10 UXSS: XMLHTTP in Redirected iframe with designMode Accesses Cross-Origin Content
I found that setting document.designMode = "Off" inside an iframe before a server redirect triggered a convenient reload, and that ActiveXObject("Microsoft.XMLHTTP") created during that window...
IE10 UXSS: createPopup document.write in Redirected iframe Changes Popup Origin
I found that if a cross-origin redirecting iframe used createPopup().document.write() on the parent, the resulting popup's URL became that of the iframe's post-redirect origin. Since the popup's...
UXSS: Caching Modal External Object and Sharing document via returnValue
I found two related issues in how modal/modeless dialogs handled returnValue and the external object across cross-origin redirects. The first allowed cooperative cross-origin sharing — the opener...
IE10 UXSS: Caching document.all Collection Survives Server Redirect
I noticed that saving a reference to document.all from inside a modeless dialog, before the dialog's page redirected to a different origin, preserved cross-origin access to the redirected document....
IE10 UXSS: Caching Window Reference via HTC in Math Object Survives Redirect
I found that a window reference stored inside a native JavaScript object like Math survived a cross-origin server redirect. The key insight was that storing a reference in a plain variable did not...
IE10 EoP: htmlFile ActiveX Reload + setTimeout document.open/close is PROBABLY_EXPLOITABLE
Creating an htmlFile ActiveX object, refreshing its document, and then triggering a document.open(); document.close() pair via an injected image error handler inside a setTimeout caused a crash rated...
IE10 DoS: Injected iFrame Redirect + Calling Non-Existent Method Triggers Stack Buffer Overrun
Injecting an iframe that immediately redirected, and then calling a non-existent method inside that iframe via execScript after the redirect completed, caused a stack buffer overrun...
IE10 UXSS: Cached XHR Object Retains Cross-Origin Access After Redirect
By capturing an XMLHttpRequest object from a newly opened window before the window redirected to a different domain, the cached XHR reference retained the ability to make requests in the context of...
IE10 DoS: createPopup setInterval Crashes Browser After Redirect
Opening a new window that would soon redirect, injecting an iframe into it, creating a createPopup from that iframe, and then calling setInterval from the popup's window caused a crash after the...
IE10 UXSS: Blob URL Entropy Is Low Enough to Brute-Force Cross-Origin Image Data
IE10's URL.createObjectURL() generated Blob URLs with insufficient randomness. Image blob URLs were readable by any domain in the same window — including cross-origin iframes. The only protection was...
IE10 DoS: Web Worker Sending XHR to a Blob URL Crashes the Browser
Creating a Blob URL in the main page and then spawning a Web Worker that sent an XHR to any blob URL — even just "blob:" — caused IE10 to crash.
IE10 DoS: document.normalize() Crashes the Browser
Calling document.normalize() on a complex DOM in IE10 Preview 4 caused a crash. The crash was found while a W3C spec page loaded and called the method as part of its own script.
DoS: Serving Different MIME Types to PresentationHost Crashes XBAP Loading
When loading an XBAP file, IE requests it twice: once to verify the MIME type and once as an argument to PresentationHost.exe. If the server returns a different content type on the second request,...
DoS: Setting designMode on a Non-HTML Window Crashes the Browser
Opening a new window that loaded non-HTML content (feeds, Flash, XAML, etc.) and immediately setting designMode on its document caused a crash — reliably on IE9 and intermittently on IE10.
Protected Mode Bypass via vsjitdebugger.exe Accepting Binary Arguments
This finding built on an existing technique for escaping Low Rights IE (LoRIE) by abusing vsjitdebugger.exe — the Visual Studio just-in-time debugger — which accepts a binary path as a command-line...
IE10 Sandbox HTTP Headers Bypass via Cached Document Object
The IE10 sandbox could be applied not just through the sandbox HTML attribute but also via the X-Content-Security-Policy HTTP header. This bypass worked by capturing the new window's document object...
IE8 EoP: Framed Cross-Domain Flash GetURL Triggers Exploitable Crash on Reload
Loading a Flash file from a different domain inside an iframe — where the Flash called GetURL with a javascript: target — and then reloading the main page twice caused an exploitable crash in IE8....
iframe security=restricted Bypass via New Window opener.setTimeout
The security="restricted" attribute on an iframe is meant to prevent script execution inside it. But if a link inside the restricted frame opens a new window, and that new window calls...
IE10 DoS: Setting designMode in an HTC Behavior Crashes Browser
Setting document.designMode = "On" from inside an HTC behavior file caused IE10 to crash.
Address Bar Spoof via Redirect, iFrame Hijack, and document.write
This technique allowed spoofing the address bar of any website that had at least one iframe. By opening the target site in a new window, hijacking one of its iframes using Flash's GetURL to point it...
IE10 DoS: Calling document.open/close on Keypress in a Textarea Crashes Browser
Opening and closing the document from a textarea's onkeypress event caused IE10 to crash on the first keystroke.
IE10 Sandbox Bypass via Non-HTML Navigation and history.back()
This was an interesting multi-step sandbox escape. A sandboxed iframe opened a new window, navigated it through a chain that included loading non-renderable content (RSS feed, SWF, MHT, ZIP, etc.),...
IE10 Sandbox Bypass via New Window opener.parent location with JavaScript
With both allow-scripts and ms-allow-popups set, a sandboxed iframe could open a new window and then use that window's opener.parent.location to execute JavaScript in the parent's context —...