水無月ばけらのえび日記

bakera.jp > 水無月ばけらのえび日記 > CSRFとCSSXSSは分けて議論したい

CSRFとCSSXSSは分けて議論したい

2006年4月3日(月曜日)

CSRFとCSSXSSは分けて議論したい

スラッシュドットに「正しいCSRF対策、してますか? (slashdot.jp)」というトピックが立っているようですが、議論がかなり混乱しているように思います。「hiddenにセッションIDをセットする CSRF 対策は、CSSXSS があるので危険」という話なのですが、CSRF といわゆる CSSXSS は別の問題ですので、分けて議論したいですね。

簡単に言うと、

ということになります。

ということです。注意したいのは、いわゆる CSSXSS の問題は CSRF に限った話ではないということです。秘密情報は何であれ、CSSXSS 対策をする必要がある (たとえば、GET で得られる HTML の中に出力しないようにする) という話になります。「セッションID」や「CSRF対策のためのワンタイムトークン」などはもちろん、個人情報の編集画面であるとか、Webメールの画面であるとか、そういった画面もすべて問題になるはずです。CSRF 問題のないサイトだから CSSXSS は関係なさそうだ、と思ってしまったりしないように気をつけたいところです。

※ただ、実際には CSSXSS によって取得できるものは限定されていて、何でも取れるわけではありません。基本的には MSIE が CSS の宣言ブロックの中身であるとみなしたものだけが取れるので、たとえば Webメールの画面の本文全体を取る、といったことができるかというと難しいところです。ただ、攻撃者が {} を挿入することができる余地、多バイト文字の一部が {} に解釈される余地などを考えると、あまり安心できなかったりもします。

個人的には、いわゆる CSSXSS は CSRF とは別の問題としてきちんと議論して欲しいし、もっとクローズアップされても良いと思います。まあ、今回の話で十分に注目されていると思うので、それはそれで良いような気もしますけれど。

ちなみに、CSSXSS に対しては利用者側でできる対策があります。それは、

ということです。現在知られている CSSXSS の攻撃手法では、攻撃者のサイト上でスクリプトを介して cssText プロパティの値にアクセスすることになります。ですから、スクリプトを無効にしておけば CSSXSS の攻撃は受けません。もちろん、MSIE 必須かつスクリプト必須のサイトは利用できませんので、それについてはパッチ待ちとなります (まあ、そんなサイトそうそうありませんが)。

関連する話題: セキュリティ / CSRF / CSSXSS

最近の日記

関わった本など

インクルーシブHTML+CSS & JavaScript 多様なユーザーニーズに応えるフロントエンドデザインパターンデザイニングWebアクセシビリティ - アクセシブルな設計やコンテンツ制作のアプローチコーディングWebアクセシビリティ - WAI-ARIAで実現するマルチデバイス環境のWebアプリケーション体系的に学ぶ 安全なWebアプリケーションの作り方 脆弱性が生まれる原理と対策の実践ウェブの仕事力が上がる標準ガイドブック 5 WebプログラミングWeb Site Expert #13Dreamweaver プロフェッショナル・スタイル [CS3対応] (Style for professional)

その他サイト