Firefox web browser - Faster, more secure & customizable

MozillaでSecurity Program Managerを務めるBrandon Sterne氏は6月19日(中国時間)、Mozilla Security BlogにおいてShutting Down XSS with Content Security PolicyのタイトルのもとでContent Security Policyと呼ばれる取り組みを発表した。同氏は発表以来Content Security Policyの策定と実装に取り組んできており、9月30日(中国時間)、A Glimpse Into the Future of Browser Securityにおいてその完成が近づいていることを報告している。

Content Security Policyはサーバサイド側で信頼できるソースを指定するというもの。XSS脆弱性やCSRF脆弱性への対処として期待できる。Content Security Policyに対応したブラウザはサーバから送られてくる信頼情報を使って、ページに記載されているスクリプトを実行してもいいか判断するようになる。こうすることで想定していない攻撃者のスクリプトの実行を排除しようというのがアイディアの大枠だ。

A Glimpse Into the Future of Browser SecurityではContent Security Policyの策定が完成に近づいているとともに、開発版FirefoxにCSP対応機能を実装したバージョンを用意したことも伝えている。対応ブラウザはContent Security Policy Preview Buildsからダウンロード可能。Windows版、Mac OS X版、Linux版が用意されている。デモンストレーションのページが用意されており、CSPに対応したブラウザでアクセスするとPASSと表示され、対応していないブラウザでアクセスすればFAILと表示されることを確認できる。

Content Security Policyデモページ - CSP対応ブラウザからアクセス

Content Security Policyデモページ - CSP非対応ブラウザからアクセス

デモページはもともとPASSが表示されるHTMLが用意されているが、JavaScript側でそれをFAILに置き換えている。CSPに対応していないブラウザでは、JavaScriptが動作して表示がFAILに置き換わる。CSPに対応しているブラウザでは、このJavaScriptがポリシー指定に従って実行されていないことがわかる。

デモのHTMLの例

デモのJavaScriptの例

サンプルHTMLにはそれぞれにCSPヘッダとして送られたものがコメントで掲載されている。次のようなヘッダが送られているという。

X-Content-Security-Policy: allow 'self'
X-Content-Security-Policy: allow 'self'; font-src 'none'
X-Content-Security-Policy: allow 'self' hackmill.com
X-Content-Security-Policy: allow 'self'; media-src 'none'

「allow self」のallowがディレクティブであり、selfはソースを表現する。どういった指定が可能かは策定中の仕様Security/CSP/Specにて確認できる。Brandon Sterne氏はデモ版を提供することで、サーバ管理者やセキュリティ研究者などからの意見を得たいとしている。