January 22, 2018

Content Security Policyの導入によるクロスサイトスクリプティング対策方法

Webアプリケーションは、ハッキングの対象とされやすい。一般的な例をあげるとすれば、Webアプリケーションの脆弱性を利用し、不正なスクリプトを埋め込み、Webアプリケーションを乗っ取ってしまうクロスサイトスクリプティング(XSS)だ。

Templarbit社では、私たちのプロダクトであるTemplarbitを開発中にこのXSSについての話し合いを重ね、多くの開発者やWebアプリケーションの運営者が、このXSS攻撃は解決済みの問題として誤解している、もしくは、その脆弱性から起こる危険性を認識していないと分かった。

クロスサイトスクリプティング(XSS)とは

クロスサイトスクリプティング(XSS)は、長い間問題にされているにも関わらず、多くの開発チームがフロントエンド側の構造を複雑にしているがために近年にも被害が増加している。

クロスサイトスクリプティングとは、インジェクション攻撃の一つであり、Webアプリケーションの動的に表示を生成している部分に、悪意のある任意のスクリプトを埋め込み実行する攻撃。これは、本質的には、そのアプリを乗っ取らせてしまっている。というのも、スクリプトを埋め込み、Webアプリのユーザーに偽のフォームを表示、入力をさせてしまうことで、クッキーなどといったユーザーの機密情報を故意に盗んでいるからだ。

現在、クロスサイトスクリプティングはweb上で一番よく発生している脆弱性である。 Netsparkerによるオープンソースソフトウェアアプリケーションに対して行われた年間セキュリティチェックの結果をみると、クロスサイトスクリプティング(XSS) が他と比べて著しく数が多い脆弱性だとわかる。

また、Webアプリケーション上の、問題である脆弱性を挙げたOWASP Top 10でも、XSSは、常に上位であり、未だに根絶できていない脆弱性である。

Webアプリケーションのクロスサイトスクリプティング対策方法

XSS攻撃の対策としては、コンテンツセキュリティポリシー(CSP)を設定、導入するのが一番効果的だ。 CSPは、Webアプリケーションのクライアントサイドが読み込むリソース (JavaScript、CSS、Imgなど)のホワイトリストを作成できる値の設定であり、設定することで悪意あるハッカーによって予期しないリソースを読み込まされることを防ぐ。

CSP を有効にするには、web サーバからContent-Security-Policy ヘッダーをHTTPレスポンスで返すように設定し、そのホワイトリストに含まれるリソースのみをレンダリングするようにする

CSPヘッダーの例はこちら:

Content-Security-Policy: default-src 'self'; script-src 'self' www.google-analytics.com

このCSPヘッダーにより、Webブラウザに対して自身のドメインと指定したドメイン(www.google-analytics.com)だけのリソースとJavaScriptコードを読み込むように設定できる。

メンテナンスコストのかかるホワイトリストの管理

CSPヘッダーは、最近になって多くのWebアプリケーションに導入されるようになったが、未だその導入割合は多くない。AirbnbやCoinbaseといった有名なサイトでは、自社のセキュリティのため、CSPを導入し対策を行っているが、一般的には開発チームはCSPヘッダーの導入を効果的にできるスケーラビリティのあるツールは利用していない。

CSP導入には、開発チームはホワイトリストの更新をし続けなければならないという問題がある。これは、開発チームはアプリからサードパーティの依存関係を更新しながら、Content Security Policyを常に考慮している必要があるということになる。

Templarbit (テンプラービット) 社で数多くのウェブサイトをモニタリングしたが、その内の多くのサイトはは不完全な間違ったCSPヘッダーが導入されていた。 CSPヘッダーは適切に管理されていなければ、導入していたとしても、XSS攻撃の影響をうけてしまう。

Templarbit (テンプラービット) 社について

Templarbit (テンプラービット) 社では、中小企業や大企業のWebアプリケーションを悪意のあるサイバー攻撃から保護する、開発者向けのセキュリティプラットフォームを開発しています。 一つの機能としてCSPヘッダーを設定できるXSS対策があります。あなたのWebアプリケーションにコンテンツセキュリティポリシーを素早く導入し、管理が可能となります。また、コードをプッシュすることなく、コンテンツセキュリティポリシーがリアルタイムでアップデートされ、管理が手軽になります。 このTemplarbitの手軽さは、独自で持つデータと、機械学習モデルを活用することで、人に頼らずに自動的にセキュリティポリシーの更新が可能だからこそ実現されています。

コンテンツセキュリティポリシーの導入を始めたい方は、ぜひこちらからフリートライアルにサインアップして下さい!