CSP+SRI でサイトをCryptojackingから保護する

ニュースソース:Scott Helme Blog

以下は、2018年2月11日に公開された、Protect your site from Cryptojacking with CSP + SRIを要約したものです。


世界中の4,000以上の政府系Webサイトに、仮想通貨マイニングを行うスクリプトが埋め込まれていました。
これは、BrowserAloudというブラウザ利用支援ツールサイトが配布する、以下のJavaScriptが汚染されたためでした。

<script src=”//www.browsealoud.com/plus/scripts/ba.js” type=”text/javascript”></script>

何らかの手段で上記のスクリプトが書き換えられたため、それを埋め込んで利用していたサイトが不正を手助けする結果となりました。

こうした不正を防ぐ方法があります。それは、CSPとSRIを利用することです。
上記のタグが以下のようになっていれば、そのサイトは安全でした。

<script src=”//www.browsealoud.com/plus/scripts/ba.js” integrity=”sha256-Abhisa/nS9WMne/YX+dqiFINl+JiE15MCWvASJvVtIk=” crossorigin=”anonymous”></script>

上記にはSRI Integrity Attributeが含まれているので、仮にba.jsが汚染されていた場合、そのスクリプトは利用されません。
たったこれだけで今回の事故は防止できたのです。
SRI Hash Generatorで、簡単に事例のようなスクリプトタグを生成できます。

この問題についての、より普遍的な解決策については、Content Security PolicyCSP Cheat Sheet : require-sri-forを参照してください。