frame hijacking?

http://sla.ckers.org/forum/read.php?2,13283,13283

のスレッドを読みました。

frame(iframe)のURLが、よそのドメインのページ内のJavaScriptから書き換えられてしまうという問題について書かれています。

例えば、被害サイト(victim.com)に以下のようなiframeを使用したページがあるとします。

<!-- http://www.victim.com/foo.html -->
<body>
・・・
<iframe src="framepage.html"></iframe>

攻撃者は、攻撃サイト(evil.com)に以下のようなページを用意し、そこにユーザを誘導します。

<!-- http://www.evil.com/ -->
・・・
<script>
function popup() {
  var x=window.open('http://www.victim.com/foo.html');
  setTimeout('x.frames[0].location.href="http://www.google.com/"', 2000);
}
</script>

<a onclick="popup()">click here</a>

このページのJavaScriptは、別のウィンドウにvictim.comのページを開き、さらにそのページ内のiframeのURLを差し替えるという処理を行ないます。

victim.comのページの一部(iframe部分)が、第三者によって任意の内容にすりかえられてしまうわけで、フィッシングに利用される恐れがあります。

この問題について、過去にどこかで聞いた記憶があったので、少し調べてたところ、以下の情報が見つかりました。

Secunia

やはり、これは新しい問題ではなく、2004年頃にいくつかのブラウザで「frame injection」という名称で指摘されているものでした。さらに、初めて指摘されたのは1998年だそうで、相当古くからある問題です。

私はよく知らなかったのですが、IE6の最新バージョンでもこの攻撃が可能なようです。インターネットオプションのセキュリティ設定で、「異なるドメイン間のサブフレームの移動」を「無効」にすれば回避できるようですが、デフォルトでは「有効」になっているそうで*1

IE7やFirefox1.05以降では、この問題は解消されているようです。

*1:そんなのだから、Secuniaのデモページでターゲットにされているのが、Microsoftのページなんでしょうね。