2009年03月05日 02:30 [Edit]

javascript - クリックジャック殺しなbookmarklet

意外な盲点。

しかし、

クリックジャック - 素人がプログラミングを勉強するブログ
FirefoxユーザはNoScriptを使うか、about:configからpermissions.default.subdocumentを3にしましょう。

というのはあまりに厳しく悲しい。対策しようは果たしてないのでしょうか?


その結果が、こちら。

  • clickUnJack

このブックマークレットで、クリックジャックを殺せます。「クリックジャッキングってこうですか? わかりません」の例はもちろん、より深刻そうな「クリックジャック - 素人がプログラミングを勉強するブログ」で指摘された例にも有効です。IE7, Firefox 3, Safari 3/4, Opera, Chromeで動作確認済みです。

以下の実例で試してみてください。

一見何の変哲もなさそうなページだが、罠が隠されている。

で、実装はこちら。

clickunjack.js

要は、position:absoluteなiframeを拾って削除しているわけです。

実は、クリックジャック攻撃にとってより本質的なのは、iframeが透明であることよりも、他のDOM Elementの上にかぶさっていることです。そのためには、position:absoluteが必要で、逆にこういう目的以外でiframeをposition:absoluteとする必然性はまずないはずです。誤爆の可能性はゼロではありませんが、かなり低いでしょう。仮に誤爆したとしても、ページをリロードすればよいのですし。

Dan the JavaScripter

追記:

はてなブックマーク - Hamachiya2のブックマーク
absoluteじゃなくてもできるよ。 relative, fixed … たぶんうまくすれば float でも。

どうせなら、position:static以外なiframe全て対象にすればいいと気がついたのでclickunjack.jsを更新。

にも対応済み。しかし、

いや、それすらなくても攻撃成立しそう。 iframeがだめなら、iframe以外をabsoluteすればいいじゃない…と。

まで対象にしてしまうと、さすがに誤爆率が高くなってしまう。


この記事へのトラックバックURL

この記事へのトラックバック
404 Blog Not Found:javascript - クリックジャック殺しなbookmarklet クリックジャック - 素人がプログラミングを勉強するブログ などを見ると,透明なiframeを重ねて誤爆させる攻撃らしい。 僕は難しいことは解らないんでアレなんだけど,例えば,次のようなユーザースタ
[css][javascript]クリックジャッキングというのが流行ってるらしい【OSのようなもの】at 2009年03月06日 14:07
クリックジャッキングというのが話題になってるみたい。 主要ブラウザすべてに影響す...
自分のサイトをクリックジャッキングに利用されにくくするためのささやかな抵抗、あるいはクリックジャッカーをジャックする方法【頭ん中】at 2009年03月05日 12:40
この記事へのコメント
ある一定以上の透明度だったら透明度を50%くらいまで下げる、とかじゃ駄目なんですかね。ページ内の要素を総ざらい、って現実的じゃないのかな。javascriptよくわかんないのでテキトーな事言ってるだけなんですが。
Posted by   at 2009年03月05日 17:12
position:absoluteが危険だというならposition:absoluteをJavascriptから削除するか、検知したら警告表示をだすとかそういう機能をデフォにする話にした方が理想的なんじゃないかな。
Posted by 774 at 2009年03月05日 03:18