Mozilla Security Blog
Shutting Down XSS with Content Security Policy」より
June 19,2009 posted by Brandon Sterne,Security Program Manager

 人気Webサイトの多くは数年前からクロスサイト・スクリプティング(XSS)攻撃に悩まされ,アクセスしてきたユーザーに被害を及ぼしてきた。米モジラは2008年から,XSS攻撃の阻止を目的とする新技術「Content Security Policy」(CSP)の開発に取り組んでいる。当記事でこの技術の背景を簡単に紹介するとともに,これまでの進ちょく状況を説明しよう。

 XSS攻撃が実行可能なのは,コンテンツ要求元のWebブラウザ上で,Webサーバーからの応答結果として得られるすべてのコンテンツが同じ権限で扱われるためである。Webページ内にあるJavaScriptとその他のコンテンツは,DOMに対するアクセス権限を持つ単一のセキュリティ・コンテキストとしてまとめられる。CSPは,WebサイトからWebブラウザに「どのコンテンツが正規のものであるか」を明確に示す手段を提供する。こうしてWebブラウザは,Webサイトが正規コンテンツと認めなかったものを無視できる。

 CSPは正規コンテンツと挿入または改変されたコンテンツを区別するために,Webページに含まれる全JavaScriptに対して,(1)外部ファイルから読み込むこと,(2)ホワイトリストに記載されたホストから配信すること,という二つの条件を課す。つまり,インライン・スクリプトやJavaScriptプロトコルのURI,イベント処理用HTML属性値は完全に無視される。ホワイトリスト記載済みホストを指す<script>タグで挿入されたスクリプトだけが,正規コンテンツとして扱われる。さらにCSPは,常識的なセキュリティ上の制限を加える。

 この仕組みが,全く制限をかけない現在のWebシステムと大きく異なることは分かっている。そこで,CSP導入が進むよう,例を使って説明する。

(1)段階的な導入が可能

 CSP導入で得られる最も大きなセキュリティ面のメリットは,インライン・スクリプトの禁止でXSS攻撃の危険を緩和できることだ。ただし,全JavaScriptの外部ファイル化に大きな手間や長い期間を要するWebサイトもあるだろう。そこでCSPは,JavaScript関連の制限を除外し,ほかの機能だけを採用するという導入方法を選べるようにした。こうしたCSPの柔軟性により,まず一部の機能だけを採用し,投入できる時間と資源に応じて残りの機能を段階的に追加していく,という段階的な導入が可能になる。

(2)複雑なWebサイトでもCSP向けに変更可能

 我々は様々なWebサイトを対象に,使われているHTML/JavaScriptを調べた。それでも,今までのところCSP向けに変更できないWebサイトは一つもなかった。今後は,WebサイトにCSPを導入する際の参考となる事例集を提供する予定だ。またCSPは「コードとコンテンツを混ぜてはならない」というプログラミング規範を守っており,導入するWebサイトはコードとコンテンツを分けることで機能面の新たなメリットを得る可能性がある。

(3)XSS攻撃の根本対策

 攻撃者から見るとXSSのセキュリティ・ホールは価値があるもので,一度見つけられるとその存在があっという知れ渡ってしまう。WebサイトにXSS攻撃される隙があるとしても,ユーザーを守れたことが分かれば多少は安心できる。というのも,CSPには攻撃を阻止したことをサイト管理者に通知する機能があるのだ。さらにセキュリティ・ホールを素早く特定し,修復するのに役立つ機能も備えているため,古いWebブラウザを使っているユーザーも恩恵を得られる。結果的に,CSP導入済みWebサイトにXSS攻撃を仕掛けてもまず成功しない,ということになる。もはやスクリプト・インジェクションに悪用される一般的な手口はすべて使えなくなり,攻撃者の飛び越えるハードルの高さが非常に上がるのだ。

 CSPの開発には多くの個人が協力してくれたし,さまざまなWebサイト,Webブラウザ・ベンダー,Webアプリケーション・セキュリティ研究者が情報を提供してくれた。CSP仕様は,とうとう実装を開始できるレベルまで検討できた。今後の進ちょくを見守ってほしい。修正が完了し,実際にテストできる状態になったら発表する。いろいろな意見を聞かせてもらいたい。


Copyrights (C) 2008 Mozilla Foundation. All rights reserved.
本記事の内容は執筆時点のものであり,含まれている情報やリンクの正確性,完全性,妥当性について保証するものではありません。
◆この記事は,Mozilla Japanの許可を得て,米国のセキュリティ・ブログMozilla Security Blogの記事を抜粋して日本語化したものです。オリジナルの記事は,「Shutting Down XSS with Content Security Policy」でお読みいただけます。