twitterで起きた大規模XSS攻撃の真相

2010年9月21日、twitter.comはXSSの脆弱性を突かれ、ユーザーが強制的に発言を書き込まされる事件が世界規模で発生しました。ウィルス感染やパスワード流出の不安もあることでしょう。この事件の流れを詳しく追ってみたいと思います(収束済:XSSアタックについて認識し、パッチによる修復作業を行いました。)

twitterでのXSS強制書き込み攻撃事件

今回の事件は、twitterに書き込まれるURLがサニタイズ(無害化)されていなかったことで、XSS脆弱性が発生したのが原因でした。HTMLの表示で誤作動を起こす可能性のある記号"(ダブルクオーテーション)を、"のような参照文字に変換してなかったのです。

twitterのタイムラインにはフォロワーによって次のような書き込みが表示されていました。

XSS脆弱性を突く書き込みの全文

@の後ろのダブルクオーテーション以降は、URLでは無くstyle属性として認識されます。この場合、大きさ999999999999pxと言う巨大文字で短縮URL t.coの文字列が画面いっぱいに表示されます。閲覧ユーザーは、そのURL上にマウスカーソルを乗せると、"is.gd/fl9A7"からスクリプトを読み込み、それを実行するようになっています。つまり、ブラウザ画面のどこにマウスが置かれていても発動するように作られていました。

読み込まれるスクリプトファイルの内容は次の通り。

XSS攻撃で読み込まれるスクリプト全文

twitterにログインした状態で、尚且つ、Javascriptを有効にしているときだけ、先の書き込みと同じ内容のものが自分のアカウントから強制発言させられます。あなたの書き込みを見た他のフォロワーも同様に強制発言させられ、爆発的に拡散していったのでした。

現在は短縮URLのis.gdが転送を遮断し、このリンクは無害です。ですが、同種の別の書き込みも数パターン見られました。今のところ、どれも悪質なものは無く、ウィルス感染やパスワード流出には繋がっていません。ただの愉快犯と考えられます。それでも、念のためウィルススキャンを実行し、twitterのパスワードも変更しておいたほうがいいでしょう。

ちなみに、今回の事件の一番安全な回避策は、公式サイトの閲覧を避けサードパーティ製のtwitterクライアントを使うことでした。