Broken Browser
  • Menu ▾
    • Browser Workshop
    • Musings
    • About
  • Browser Workshop
  • Musings
  • About

Pop-up Blocker Bypass via iFrame htmlFile ActiveX Chain

2013-12-11 :: browser-workshop :: popup-bypass

Another variation on the htmlFile pop-up blocker bypass, this time using a destroyed iFrame's ActiveX object as the carrier. Creating the htmlFile inside an iFrame and then navigating the iFrame away...

[Read more]

Clickjacking via createPopup and setCapture

2013-12-06 :: browser-workshop :: misc

Combining createPopup and setCapture produced a clean clickjacking setup. The popup appeared over the target iFrame as a visible overlay, but because setCapture redirected mouse input to the main...

[Read more]

DoS: document.open/close on createHTMLDocument or XHR Response Document

2013-11-22 :: browser-workshop :: dos

A brief crash report. Calling open() and close() on a document created either by document.implementation.createHTMLDocument() or obtained as an XHR responseType="document" caused a null pointer...

[Read more]

UXSS via XSLT Script and Base Href Origin Confusion

2013-11-20 :: browser-workshop :: uxss

This one surprised me. MSXML's XSLT <xsl:script> block ran with the origin of the page's <base href>, not the actual page origin. By setting a <base href> to a target domain and embedding script in a...

[Read more]

IE11 Sandbox Bypass via Accelerator URLs

2013-11-15 :: browser-workshop :: sandbox-bypass

I was lucky to find this one while testing the HTML5 sandbox implementation. IE11 had a list of default accelerator URLs — like bing.com and live.com — that were treated as trusted redirectors....

[Read more]

Persistent Keylogger via Resident createPopup

2013-11-13 :: browser-workshop :: resident

This one combined several of the techniques I had been exploring — a cached iFrame open reference, a background navigation, and a createPopup — into a persistent in-tab keylogger. The popup would...

[Read more]

Resident Script via htmlFile ActiveXObject in New Tab

2013-11-12 :: browser-workshop :: resident

This variant used an htmlFile ActiveX object to keep script alive across navigations in a new tab. A helper page in the new tab created the htmlFile and saved a reference back to the opener, then...

[Read more]

UXSS on IE11: Domainless about:blank Full Cross-Origin Access

2013-11-12 :: browser-workshop :: uxss

This was a port of an earlier UXSS chain (originally found on IE10) updated to reproduce on IE11 RTM. The technique used a server-side redirect, a cached ActiveXObject reference, and a domainless...

[Read more]

Resident Script via Web Worker Spawned in onpagehide

2013-11-08 :: browser-workshop :: resident

This variation on the resident-script theme used a Web Worker to stay alive across navigations. By spawning the Worker inside the onpagehide handler, the Worker thread kept running long after the...

[Read more]

Referrer Spoof via Server Redirect and Cached Location Object

2013-11-04 :: browser-workshop :: address-bar-spoof

After playing around for a while with how IE handles redirect chains inside iFrames, I found a way to fake the HTTP Referer header sent to a destination page. The technique could be used to fully...

[Read more]

DoS: Accessing Destroyed Intl Object After iFrame Navigation

2013-10-29 :: browser-workshop :: dos

A brief crash report. Saving a reference to an iFrame's Intl object and then navigating the iFrame to about:blank caused a null pointer dereference in jscript9!ArenaAllocator::AllocZero when the...

[Read more]

DoS: Loading MHTML Protocol URL in an iFrame

2013-10-28 :: browser-workshop :: dos

A brief crash report. Setting an iFrame's location to a mhtml: URL — including a bare mhtml: with no path — triggered an assertion failure in urlmon!CBSCHolder::RemoveNode, the same root cause as the...

[Read more]

DoS: modelessDialog Redirect with Simultaneous Alert

2013-10-28 :: browser-workshop :: dos

A brief crash report. Opening a modeless dialog pointed at a server-side redirect and then immediately scheduling an alert inside that dialog produced an assertion failure in...

[Read more]

IE11 Sandbox Too Tight: Pop-up Inherits Sandbox Restrictions

2013-10-28 :: browser-workshop :: sandbox-bypass

This one was a logic issue rather than a crash. When a sandboxed iFrame with allow-popups opened a new window and the user then typed a different URL in that new window's address bar, the new URL...

[Read more]

DoS: Loading an MP3 Inside a Sandboxed iFrame

2013-10-21 :: browser-workshop :: dos

A brief crash report. Loading an MP3 file into a sandboxed iFrame triggered an assertion failure in urlmon!CINetHttp::LastRequestHandleClosed.

[Read more]

DoS: designMode + document.open from iFrame Crashes Browser

2013-10-17 :: browser-workshop :: dos

A brief crash report. Enabling designMode in an iFrame and then calling top.document.open() from that iFrame caused a null pointer dereference in MSHTML!CJScript9Holder::ClearHostObjects.

[Read more]

UXSS via Cached External Object in modelessDialog

2013-10-11 :: browser-workshop :: uxss

After playing around with showModelessDialog and its external property, I found that caching a reference to the dialog's external object before navigating it away allowed continued access to the...

[Read more]

DoS: Loading Any URL via the MHTML Protocol Handler

2013-10-10 :: browser-workshop :: dos

A brief crash report. Navigating to any URL prefixed with the mhtml: protocol scheme crashed IE11 with an assertion failure in urlmon!CBSCHolder::RemoveNode.

[Read more]

DoS: Opening and Immediately Closing an RSS Feed Window

2013-10-09 :: browser-workshop :: dos

A brief crash report. Opening a new window with RSS feed XML content and closing it immediately triggered an assertion failure in MSHTML!CDwnCrit::Enter.

[Read more]

EoP: Crash Changing iFrame URL from RSS Feed

2013-10-04 :: browser-workshop :: eop-rce

A brief crash report, though this one was classified as PROBABLY_EXPLOITABLE. Loading an RSS feed XML in a named iframe and then calling window.open("about:blank", "iFrame") to retarget that frame...

[Read more]

UXSS via Domainless about:blank and htmlFile ActiveX

2013-09-30 :: browser-workshop :: uxss

This was one of the more involved UXSS chains I worked on. It combined a server-side redirect, a cached ActiveXObject reference, and a "domainless" about:blank window to ultimately execute script...

[Read more]

Resident Script via HTML Object External Reference

2013-09-20 :: browser-workshop :: resident

This variation on resident script execution used an HTML <object> element and an external window to keep a script context alive after the user navigated away. By holding a reference to the object's...

[Read more]

Pop-up Blocker Bypass via htmlFile ActiveX in createPopup

2013-09-18 :: browser-workshop :: popup-bypass

While playing around with createPopup again, a variation of an older pop-up blocker bypass surfaced. The trick involved instantiating an htmlFile ActiveX object inside a createPopup, destroying the...

[Read more]

Dialog Spoof Across Tabs via Back Navigation

2013-09-13 :: browser-workshop :: misc

After playing around with back-navigation timing, I found that a tab returning from a history.back() could display dialogs that appeared to originate from whatever tab had focus at the time —...

[Read more]

createPopup Overlay Spoof Across Tabs

2013-09-06 :: browser-workshop :: address-bar-spoof

IE11 failed to hide createPopup windows when the user switched to a different tab. A popup created in one tab would remain visible over every other tab, allowing an attacker to overlay arbitrary...

[Read more]

DoS: createPopup screenLeft Null Pointer

2013-09-06 :: browser-workshop :: dos

A brief crash report. Reading the screenLeft property on a hidden createPopup's parentWindow caused a null pointer dereference in MSHTML!CInPlace::ClientToScreen.

[Read more]

Address Bar Spoof via Non-Responding URL

2013-09-03 :: browser-workshop :: address-bar-spoof

By navigating to a URL that never responds (a server-side Thread.Sleep), and then letting the user type a new address, the browser would update the address bar to show the new URL while keeping the...

[Read more]

Browser Window Close via onbeforeunload Location Race

2013-09-03 :: browser-workshop :: misc

This one surprised me. Setting location inside onbeforeunload while the user simultaneously types a new URL in the address bar caused the entire browser window to close — and sometimes left an...

[Read more]

Resident Script Execution via onpagehide

2013-08-29 :: browser-workshop :: resident

Similar in spirit to the onbeforeunload variant, this one used the onpagehide event on document.body to keep script running after the user had navigated away. Setting the handler on the body element...

[Read more]

Resident Plugin Execution via Background Navigation Caching

2013-08-28 :: browser-workshop :: resident

IE11 introduced background navigation caching, which was meant to freeze and hide a page when the user navigated away. I was lucky to find that this freeze didn't apply to plugins running inside...

[Read more]

DoS: execCommand CreateLink on Mixed-Style Selection

2013-08-20 :: browser-workshop :: dos

A brief crash report. Calling execCommand("CreateLink") on a text range that spanned both styled and unstyled text triggered a null pointer dereference in...

[Read more]

DoS: window.open on a Closed Window

2013-08-14 :: browser-workshop :: dos

A brief crash report. Calling open() on a window object after it had already been closed caused IE11 to access a null pointer and crash the tab.

[Read more]

Resident Script Execution via onbeforeunload/onunload

2013-08-14 :: browser-workshop :: resident

This one surprised me. By assigning any object (rather than a function) to window.onbeforeunload, and then using window.onunload for the real payload, script from the original page continued...

[Read more]

BlueHat Challenges for BlackHat

2013-08-05 :: browser-workshop :: misc

I was lucky to put together a set of JavaScript puzzle challenges for a BlueHat/BlackHat session. Each challenge explored a quirk or edge case in Internet Explorer that required creative thinking...

[Read more]

F12 DevTools Memory Panel Elevation of Privilege

2013-08-02 :: browser-workshop :: misc

I was lucky to find this one while looking at how the F12 memory profiler initialized its console object. The vulnerable code in perftools/memory/remote.js wrote directly to realWindow.console, and a...

[Read more]

F12 DevTools selectorText.split Elevation of Privilege

2013-08-02 :: browser-workshop :: misc

After playing around for a while with the F12 DOM Explorer, I found another spot where the tools consumed page-controlled data without proper isolation. This time the vulnerable line was in...

[Read more]

F12 DevTools querySelectorAll Elevation of Privilege

2013-08-01 :: browser-workshop :: misc

After playing around with IE's F12 developer tools for a while, I noticed that the DOM Explorer ran certain operations with elevated privileges. This one surprised me — by intercepting...

[Read more]

F12 DevTools DOM Explorer UXSS via Select Element

2013-08-01 :: browser-workshop :: uxss

This one surprised me. While exploring how the F12 DOM Explorer stored selected elements, I realized that elements from cross-origin iframes were being placed into a shared array on the top window....

[Read more]

MSRC Variations Collection

2013-06-26 :: browser-workshop :: misc

At the end of this research cycle I compiled a collection of variations on previously reported bugs — techniques that were close enough to existing MSRC cases to warrant documenting as related...

[Read more]

F12 Developer Tools: RCE via addEventListener Override

2013-06-14 :: browser-workshop :: eop-rce

The F12 Developer Tools in IE used addEventListener on the host page's window to communicate with the inspected tab. If a page overrides window.addEventListener, it intercepts F12's communication and...

[Read more]

IE11 Sandbox Bypass via New Link in allow-popups iFrame

2013-05-29 :: browser-workshop :: sandbox-bypass

A sandboxed iFrame with only allow-popups should be able to open links in new tabs but the new window should remain sandboxed. On IE11 Blue build 9412, however, clicking a link from the sandboxed...

[Read more]

Windows 8 Managed Apps Penetration Test

2013-05-16 :: browser-workshop :: misc

A broader penetration test of Windows 8 managed (WinRT/C#/XAML) apps, examining how web content handled by WebView controls interacted with the managed app layer. The findings were documented and...

[Read more]

Windows 8 App Address Bar Spoof via eval Override (QQ)

2013-04-30 :: browser-workshop :: address-bar-spoof

In a Windows 8 WinJS app context, overriding the global eval method lets a hosted web page intercept calls the app framework makes internally — including the call used to retrieve...

[Read more]

Windows 8 App Security Review: 4 Additional Vulnerable Apps (April)

2013-04-29 :: browser-workshop :: misc

A follow-up to the April batch review, covering four additional Windows Store apps with security findings. A companion document also tracked apps reviewed in previous cycles. The issues found were...

[Read more]

Windows 8 App Security Review: 20 Vulnerable Apps (April)

2013-04-24 :: browser-workshop :: misc

In April 2013 I completed a survey of Windows Store apps and identified twenty that had exploitable security issues. The findings covered a range of vulnerability classes common to the WinJS app...

[Read more]

Address Bar Spoof via Mixed Document Modes and history.pushState

2013-04-16 :: browser-workshop :: address-bar-spoof

Mixing document modes between a parent page (running in IE5/quirks) and an embedded <object type="text/html"> (running in IE10) creates a situation where the inner frame's history.pushState affects...

[Read more]

Probably Exploitable Crash: getOwnPropertyNames on Destroyed iFrame

2013-04-11 :: browser-workshop :: eop-rce

Inserting an iFrame whose src attribute is a javascript: URL that simultaneously destroys the iFrame and calls Object.getOwnPropertyNames(window) crashes the browser. The crash was classified...

[Read more]

OpenSearch Preview Pane: Local File Read, Full-Screen Popup, and Clipboard Access

2013-04-04 :: browser-workshop :: misc

When inside a search result page loaded via an OpenSearch provider with the preview pane enabled, the Trident instance runs with fewer restrictions than a normal web page. This unlocked three...

[Read more]

DoS via CSS Expression Error Loop

2013-03-28 :: browser-workshop :: dos

A CSS expression that throws a JavaScript error, combined with an onerror handler that writes a page reload script, creates an infinite loop that hangs the browser.

[Read more]

Information Disclosure: Detecting Visited URLs via CSS Expression Error Count

2013-03-27 :: browser-workshop :: misc

CSS expressions on visited links generate a different number of JavaScript errors than on unvisited ones. By counting errors via window.onerror and taking an average over repeated measurements, it is...

[Read more]
Page 2 of 11
← Newer 1234567891011 Older →
© 2026 Broken Browser