本日、新たにクライアント側のセキュリティ製品であるPage Shieldをご紹介いたします。この製品は、お客様側で、エンドユーザー側のブラウザで発生した攻撃を検出するためにご利用いただく製品です。

2015年から、Magecart という名のハッカーグループが、依存関係(dependencies)にあるサードパーティを悪意のあるコードに感染させて、オンラインストアから支払情報を盗むということが発生しました。感染したコードは、エンドユーザーのブラウザによってリクエストされ、Webページ上で実行されると、ユーザー情報にアクセスできるようになり、情報を捕捉した後、感染コードが情報をハッカーに送ります。そこで情報は転売されるか、クレジットカード詐欺や個人情報の盗難など、さらなる攻撃を開始するために使用されるということが起こります。

以降、このようなサプライチェーン攻撃は、他にもTicketmaster、Newegg、British Airwaysなどがターゲットにされてきました。British Airwaysへの攻撃は、セルフホストの1つであるJavaScriptファイルが流出したことからはじまり、約50万名分の顧客データーがハッカーの手に渡っています。この攻撃により、GDPR の罰金が科されるという  英国史上最大のプライバシーに関する集団訴訟に発展しました。合計で、数百万のユーザーがこれらの攻撃の影響を受けています。

一つの組織の中で安全なコードを書くということだけでも十分骨が折れることですが、さらにサードパーティの組織のことまで配慮するとなると容易ではありません。多くのSaaSプラットフォームは、数百万のサイトにサードパーティのコードを提供するため、1つの安全性が損なわれるだけで壊滅的な結果になる可能性があります。Page shieldは、お客様がこれらの潜在的な攻撃ベクトルを監視し、機密のユーザー情報がハッカーの手に渡ることを防止します。

今週のはじめに、従業員のブラウザにおけるクライアント側の攻撃を軽減する方法として、Cloudflareはリモートブラウザ分離を発表しました。Page Shieldは、エンドユーザーを対象とした攻撃を軽減することで、Cloudflareのクライアント側のセキュリティの取り組みを継続していくものです。

背景

Magecartスタイルの攻撃は、ユーザーのブラウザで実行されるソフトウェアサプライチェーン攻撃の一種です。攻撃者は、サードパーティのJavaScript依存関係のホストをターゲットにし、ブラウザに提供されるソースコードを制御します。感染コードが実行されると、多くの場合、チェックアウトフロー中にクレジットカードの詳細など、エンドユーザーがサイトに入力した機密データを盗もうとする動きが発生します。

アプリケーション所有者の多くは、サードパーティのJavaScriptが意図したとおりに動作すると信じているため、これらの攻撃を検出することは困難です。こうした信頼があることで、サードパーティのコードがアプリケーションの所有者によって監査されるケースはほとんどありません。そのため、多くの場合、Magecart攻撃は検出されるまで数か月も続きます。

ソフトウェアサプライチェーンに起因するリスクは、データの流出だけではありません。近年では、ハッカーがサードパーティのコードを修正してユーザーに不正な広告を表示する手口も出てきました。ユーザーはこうした広告をクリックしてフィッシングサイトにアクセスしてしまい、ハッカーに個人情報が盗まれるということが起こります。他のJavaScriptマルウェアは、エンドユーザーのリソースを使用して攻撃者の暗号通貨をマイニングし、サイトのパフォーマンスを低下させます。

では、アプリケーション提供者が、自身を保護するためにできることは何でしょうか?コンテンツセキュリティポリシー(CSP)やサブリソース整合性(SRI) など既存のブラウザ技術は、クライアント側の脅威に対する保護を提供しますが、いくつかの欠点もあります。

CSPを使用すると、アプリケーション所有者は許可リストをブラウザに送信し、リストに記載されているリソース以外は実行できなくなります。これにより、特定のクロスサイトスクリプティング攻撃(XSS)を防止することはできますが、既存のリソースが良い状態から悪意のある状態に変わったときに検出できません。CSPの管理は、新しいスクリプトがサイトに追加されるたびに許可リストを更新する必要があるため、運用も困難です。

SRIを使用すると、アプリケーション所有者はJavaScriptやその他のリソースに予想されるファイルハッシュを指定できます。フェッチされたファイルがハッシュと一致しない場合、実行がブロックされます。SRIの課題は、ベンダーがコードを頻繁に更新し、場合によっては、異なるエンドユーザーに異なるファイルを提供することです。また、JavaScriptベンダーは、行間などの小さな違いにより、異なるハッシュを持つバージョンのファイルをエンドユーザーに提供することもあります。これにより、SRIはアプリケーション所有者には非がないのに、正当なファイルをブロックする可能性があります。

Page Shieldで最初に利用できる機能は、スクリプトモニター

スクリプトモニターは、CloudflareがPage Shieldの第一歩としてCloudflareがはじめたことです。オンにすると、サイトのJavaScript依存関係を時間の経過とともに記録します。新しいJavaScriptの依存関係が表示されると、警告が表示され、サイトへの変更が予期されたものであるかを調査できます。これにより、不正なアクターが新しい悪意のあるJavaScriptファイルをリクエストするためにアプリケーションを変更したかどうかを特定できます。ベータ版が完成すれば、この初期機能セットをBusinessプランとEnterpriseプランのお客様に追加料金なしでご利用いただけるようになります。

スクリプトモニターの仕組み

Cloudflareは、アプリケーションのオリジンサーバーとエンドユーザーの間というユニークな場所に位置しているため、エンドユーザーに到達する前にレスポンスを変更できます。この場合、エッジを通過するときに、Content-Security-Policy-Report-Onlyヘッダーをページに追加します。JavaScriptファイルがページ上で実行しようとすると、ブラウザはCloudflareにレポートを送信します。当社では、Report-Onlyヘッダーを使っているため、アプリケーション所有者が関連するインサイトの許可リストを維持する必要はありません。

表示される各レポートについて、JavaScriptファイルを当該ゾーンの過去の依存関係と比較し、ファイルが新しいかどうかを確認します。ファイルが新しい場合は、アラートを発し、お客様が調査して変更が予期されたものかどうかを判断できるようにします。

The Script Monitor UI located under Firewall -> Page Shield

スクリプトモニターUIは、ファイアウォールの下 -> Page Shieldにあります

ベータ版の参加者には、ゾーンダッシュボードの「ファイアウォール」セクションの下に「Page Shield」タブが表示されます。そこで、ゾーンのJavaScriptの依存関係を追跡するスクリプトモニターの表が表示されます。依存関係ごとに、最初の確認日、最後の確認日、検出されたホストドメインが表示できます。

Email notification example for new JavaScript dependencies found

新しいJavaScriptの依存関係が見つかったことを通知するEメールの例

ダッシュボードでスクリプトモニターの通知を構成することもできます。これらの通知では、サイトで新しいJavaScriptファイルがリクエストされるたびに、メールまたはPagerDutyにアラートが送信されます。

これからのこと

Cloudflareの使命は、より良いインターネットの構築を支援することです。これは、過去数年間で攻撃が驚異的に増加しているエンドユーザーブラウザまで広がるものです。Cloudflareは、Page Shieldでアプリケーションが見つけにくい攻撃を検出して軽減し、ユーザーの機密情報を安全に守るためのサポートをします。

Cloudflareはすでにスクリプトモニターにコード変更検出を構築しています。コード変更検出は、アプリケーションのJavaScriptの依存関係を定期的に取得し、その動作を分析します。既存のファイルに対する新しいコードの動作が検出されると、警告が表示され、お客様は変更を確認して、新しいコードが問題のない更新プログラムであるか、感染したコードであるかを判断できます。

コード変更検出の後は、JavaScriptファイルの高度な分析が行われます。依存関係が変更されると、アプリケーション所有者に警告が表示され、関心のあるファイルに対するインサイトが得られますが、Cloudflareではそれ以上のことが行えます。当社ではセキュリティパートナーと協力して、Magecart JavaScriptのサンプルを取得し、悪意のあるJavaScript サンプルを正確に分類できることが実証されています。さらにCloudflareの技術を改良し、最終的にPage Shieldの顧客の依存関係に悪意があると判断したときに警告を開始する予定です。

また、Cloudflareのお客様からのヒアリングの結果、CSP許可リストの維持は運用が困難であることがわかりました。新しいクライアント側のJavaScriptが許可リストに追加されることなく、デプロイされた場合、その新しいコードはブラウザによってブロックされてしまいます。そのため、Cloudflareでは、ネガティブなセキュリティモデルブロッキングを送信するために、リバースプロキシとしての地位を活用します。これにより、アプリケーション所有者は、許可リストを維持することなく個々のスクリプトをブロックし、煩雑なオーバーヘッドなしで新しいコードを送信できます。

ベータ版へのサインアップ

本日より、BusinessプランとEnterpriseプランのお客様向けに、こちらのページからPage Shieldの非公開のベータ版にご参加いただくことが可能になりました。ベータ版にご参加いただき、スクリプトモニターを有効にすることで、サイトのJavaScriptの監視を開始することができます。