本日夕方から、TwitterのXSS(Cross Site Scripting:クロスサイトスクリプティング)脆弱性を突いた攻撃がすさまじいペースで広がっています。
私もWebで見る派なので、踏んでしまいました(それによりご迷惑をおかけした方申し訳ありません)。
リツイートされたものを解除しようにもログインできず、公式ReTweetはWebでしか解除できないので困っています。
公式ReTweetの仕様上の問題点も活用した、なかなか鮮やかな手口ですね。
問題のツイートの一例が↓です。
<span class="entry-content"> <a href="http://a.no/@" onmouseover=";$('textarea:first').val(this.innerHTML);$('.status-update-form').submit()" style="color:#000;background:#000;/" class="tweet-url web" rel="nofollow" target="_blank"> http://a.no/@"onmouseover=";$('textarea:first').val(this.innerHTML);$('.status-update-form').submit()" style="color:#000;background:#000;/ </a> </span>
要するに、マウスオーバーしたら自分と同じものをつぶやくというコードですね。
肝の部分は↓です。
http://a.no/@"onmouseover=";$('textarea:first').val(this.innerHTML);$('.status-update-form').submit()" style="color:#000;background:#000;/
httpで始まる文字列はリンクに変換されますが、@の認識の仕方にバグがあったようですね。文字列の最後までがリンクURLと認識され、見事にXSSが成功しています。
それにしても驚くのが、感染の早さ。
技術的なキモは、単純なURL判定アルゴリズムのミスですが、それをTwitter上で実施するだけでここまでのスピードで広がってしまうとは、リアルタイムなTwitterの怖いところです。
Twitterなので、直接的な被害はTwitter上に限られていると思いますが、どのくらい工夫した亜種が流れているのでしょうか?
2010/09/21 22:44追記
該当のXSS脆弱性がひとまず修正されたようですね。
また、原因になっていた公式リツイートは削除されているようです。
なお、ログインする際はブラウザのキャッシュとCookieを消してからのほうが良いです。
基本的にXSSでパスワードが知られてしまうことはありませんが(ブラウザに保存していたら知りません)、メールアドレスの変更→パスワードリセット を使ってパスワードを変更することは理論上可能なので、プロフィールがおかしくなっていないかチェックしておいた方が良いですね。
2010/09/21 23:05追記
Twitter公式情報で、修正がアナウンスされています。
日本時間22:50の時点で、全世界に修正が行き渡ったようです。
http://status.twitter.com/post/1161435117/xss-attack-identified-and-patched