TweetDeckを襲った脆弱性「XSS」とは何か?
Pocket

もしあなたがTweetDeckユーザーなら、多くの人々が以下のようなリツートをしているのを見たかもしれない:

tweetdeck_script

さらに、2007年あたりのインターネットを彷彿とさせるような、こんなTweetDeckからのダイアログ・ボックスがブラウザに表示されたかもしれない。

tweetdeck_rickroll

Twitterパワーユーザーのためのクライアント・アプリケーション、TweetDeckが何者かに攻撃された。脆弱性を利用したもので、ユーザーのアカウントが遠隔的にハイジャックされ、上記のスクリプトがツイッターに投稿されたのだ。TweetDeckはユーザー数もツイート数も多いため、ほとんどのユーザーにとってこうした悪質なスクリプトを回避するは(不可能ではないにしても)難しかっただろう。

XSSとは何か

今回の問題の要因は「クロスサイト・スクリプティング(cross-site scripting)」脆弱性として知られているもので、通常は単に「XSS」と呼ばれる。これはウェブ・アプリーションによく見られるセキュリティー・ホールで、悪質なハッカーやいたずら好きな人々に愛用されている。この脆弱性を利用することで、ハッカーはアプリケーションに外部のコード(正確にはスクリプト)を実行させることができる。XSSによって攻撃者はパスワードやセキュリティーに関する質問のようなアクセス周りの操作を回避できてしまうのだ。

これまでに、大きく分けて2種類のXSS脆弱性が確認されている。1つめは、まずスクリプト・コードがウェブ・サーバーを攻撃し、次にそのサーバーのウェブページをを閲覧しているユーザーのもとへ(大抵は悪意のある)コマンドを送り込むような攻撃を引き起こす。こちらは、本日Tweetdeckを停止させてしまったものとは別のタイプだ。

TweetDeckの攻撃の原因となったのは、もう1つの脆弱性「DOM(Document Object Model)」ベースのクロスサイト・スクリプティングだったようだ。DOMとは、HTML等のウェブ・ドキュメントにおけるオブジェクトを制御するための取り決めである。DOMベースのクロスサイト・スクリプティングはサーバーに影響を与えない。代わりに攻撃者は、ユーザのもとへ悪意のあるスクリプトを直接送信する。そしてそのスクリプトは、ユーザーのブラウザ内のウェブ・アプリケーション上で実行されるのだ(技術的に言うと、攻撃目的で悪質に改変された、関連ドキュメント・モデルの一部として実行される)。今回の場合、このターゲットとなったアプリケーションがTweetDeckだったのである。

今回の攻撃によって起きたことを振り返ると、スクリプトの実行内容は、TweetDeckの通常の操作範囲に限られていたようだ。その理由は、(今回のXSS攻撃で使われた悪質なコードも含めた)全てのJavaScriptはコンピューター上のデータや機能へのアクセスが限定された「sandbox(※)」内で実行されるためだ。従って今回のスクリプトでは、ツイートやリツイート、お気に入りへの登録、ユーザーのフォロー/フォロー解除は行えたものの、ローカルに格納されたコンピューターのハードドライブや重要なファイルへのアクセスまではできなかったのだ。

※外部からのプログラムを保護された領域で動作させるセキュリティモデル

皆が言っているように、今回のスクリプトによる被害はツイートを増殖させ、攻撃を受けたユーザーのスクリーンにポップアップ・メッセージを表示するというだけのものだった。Vergeによれば、この出来事に関係しているとされる19歳のオーストリア人は、TweetDeckのセキュリティ脆弱性を偶然発見し、ちょっと試してみただけだと主張している。リツイートとポップ・アップ・メッセージの大量発生は誰に直接的な責任があるのか、まだ明らかにはなっていない。

ツイッターが問題を解決

今回の攻撃による影響を受けたのは、ほとんどがGoogle Chromeのようなブラウザ内でTweetDeckを実行しているユーザーであった。見たところ、デスクトップ版のクライアントを使用していたユーザーには特に被害がなかったようだ。ツイッターは、11日午後1時(米標準時)ごろ、セキュリティ問題の調査のため一時的に停止していたサービスを再開し、問題が修正されたと告知した。

ツイッターは問題の脆弱性を既に修正し、TweetDeckも現在デスクトップ版とWebクライアント版の両方とも、通常通りに動作している。

Pocket