Firefox web browser - Faster, more secure & customizable

Mozilla Security BlogにおいてShutting Down XSS with Content Security PolicyのタイトルのもとMozillaでSecurity Program Managerを務めるBrandon Sterne氏が、「Content Security Policy」と呼ばれる取り組みを紹介している。詳しい仕様はSecurity/CSP/Spec - MozillaWikiに掲載されている。

Content Security Policyは特にXSSに対するセキュリティ機能として策定が進められているポリシーおよびその仕様。サイト側ではどのリソースが適法であるかを指定できるようにし、ブラウザ側では適法と指定されたリソースだけを使うようにするというもの。こうすることでインジェクションや改竄を検出し、根本的にXSSが起きないようにすることを目指している。ほかにもどのサイドがリソースを組み込むかを指定することでクリックジャックに対応したり、すべてのコンテンツをHTTPS通信強制することでパケットスニファにも対応できるように策定されている。

Content Security Policyでは、インジェクトされたコンテンツや改竄されたコンテンツと、適法なコンテンツとを区別するために、JavaScriptに対して次の2つの制限を設けているという。

  • 外部にファイルとしてまとめられていること
  • 明示的に許可されたドメインから読み込まれていること

つまりContent Security PolicyではインラインスクリプトなどのJavaScriptは処理されないことになる。この仕組みを採用することでXSSに対して効果を発揮するわけだが、既存のサイトをこの仕組みに変更することは容易ではない。Brandon Sterne氏は説明のなかで、ほかにも機能が提供されているため、しばらくはそうした機能を使って対策をおこない、最終的にこの方法へ変更すればいいだろうとしている。またContent Security Policyに適合させることはセキュリティ以外にも利点があるとしている。

さらにBrandon Sterne氏は、XSSは発見されるとすぐにそれが知れ渡ってしまうが、Content Security PolicyにはXSSが行われた場合に通知する機能が提供されているため、従来よりも対応を素早く実施することができ、結果的にContent Security Policyに対応していないブラウザに対しても良い影響があると説明している。FirefoxではすでにContent Security Policyに対応した機能の実装がはじまっている。