クライアントサイド攻撃:その実態と対策
ジェフリー・エドワーズ
|サイバー犯罪 | 2022年12月13日
クライアントサイド攻撃による最大の被害は、大規模なデータ漏洩です。 2022年には、データ侵害による罰金や復旧費用などの被害額が、平均435万ドル(約5億9160万円※)を超えました。医療や金融サービスなど規制の厳しい業界では、その被害額はさらに高くなる可能性があります。
ハッカーは常に手法を進化させ続け、防御が弱まっている箇所、つまりシステムやオペレーションの欠陥を見つけては攻撃を仕掛けてくるため、セキュリティも絶えずそうした攻撃に対応するために進化を続けなければなりません。最近では、クライアントサイドのアプリケーションやブラウザが、攻撃の標的になることが増えています。この記事では、クライアントサイドのセキュリティの脆弱性が組織をどのようにリスクにさらすのか、、また、ビジネスを脅威から保護するためのいくつかのツールおよびベストプラクティスについて説明します。
クライアントサイド攻撃とは?
Web サイトやアプリケーションには、サーバーとクライアントというふたつの主要コンポーネントがあります。サーバーサイドには、コードやデータが格納され、ブラウザからのリクエストに基づきプロセスが実行されます。クライアントサイドでは、ブラウザ上で様々な Web アプリケーションがサーバーから取得したデータを表示します。
従来、ハッカーはサーバーサイドを標的にし、侵入やデータの窃盗を行っていたため、組織は発信元に焦点を当てたセキュリティ製品を利用してデータや資産を保護してきました。しかし、ハッカーはセキュリティが脆弱になっている箇所を常に探しており、結果として、彼らは別のターゲット、つまりエンドポイントまたはクライアントサイドで実行されるアプリケーションやブラウザを狙うようになります。ハッカーは、クライアントサイドのセキュリティの脆弱性を悪用して、ユーザーの機密情報や金融情報を盗み出し、ダーク Web で不正売買しようとしているのです。
主要クライアントであるブラウザ
世界のインターネットトラフィックの約50%は、ブラウザ経由のものです。ブラウザはコードを介して実行し、Web サイト上の情報をユーザーに配信します。
Web サイトにアクセスすると、文書や画像、ビデオなどの閲覧、アカウントの作成、EC サイトにおける商品の閲覧やカスタマイズ、購入などを行うことができます。 Web サイトの機能の多くはブラウザの機能に依存することが多く、ブラウザは Web サイトのコードを処理することで、ユーザーが Web サイトを利用することを可能にします。
強力だが危険な JavaScript
JavaScript は、世界中の Web サイトおよび Web アプリケーションの97%で使用されています。開発チームは、独自の JavaScript コード(ファーストパーティ)を使用するだけでなく、オープンソース(jQuery、AngularJS、React など)や JavaScript コンポーネントを含むサードパーティの技術(WordPress、Drupal、Magento など)を使用して開発時間を短縮しています。JavaScript を使用する利点は多くありますが、同時に見過ごされたり誤解されがちな重大なリスクも伴っています。
JavaScript は、ページ要素の操作や入力データの読み取りなど、複雑な機能を Web ページに実装することを可能にします。ユーザーがブラウザ経由で Web サイトにアクセスすると、サイト所有者のサーバーやサードパーティライブラリが使用するリモートサーバーから、コードやコンテンツがダウンロードされ、すべてのコードとコンテンツをダウンロードした後、ブラウザは Web サイトをユーザーに表示します。攻撃者が、ダウンロードされたファイルのどこかに悪意のあるコードを隠していた場合、その悪意あるコードがファーストパーティ経由でもサードパーティ経由でも、ブラウザはそのコードを処理・実行してしまいます。このため、セキュリティやコンプライアンスの担当者は、JavaScript コードを本番環境に移行する前に、特別な注意を払って検査および検証します。
JavaScript のコードを検査および検証し、既知の脆弱性を検索するたの診断ツールはいくつかあります。こうしたツールは有用ですが、JavaScript のリスクを軽減するには不十分です。まず、すべての脆弱性を発見、修正することが理想ですが、実現は困難です。次に、こうした診断ツールは、チームが開発した自社の管理下にある(ファーストパーティの)JavaScript コードのみを検証するため、第三者が開発した外部ソース、つまり Web サプライチェーンのパートナーから来る(サードパーティの)JavaScript コードのリスクを軽減することはできません。
サードパーティの JavaScript
〜脆弱なコードの利用は Web サイトの
セキュリティを脆弱に
Web サプライチェーンとは、EC プラットフォームなどのテクノロジーパートナーから提供されるコードや、アクセス解析ツール、チャットボット、マーケティングツールなどサードパーティのサービスから提供されるコードの寄せ集めです。 Web サプライチェーンは、カスタマーエクスペリエンスの向上に欠かせない重要な機能をサイトに実装するために利用されますが、Web サプライチェーンを利用することは、何千ものサードパーティコードを Web サイトに追加することを意味します。コードが増える度に、攻撃されるリスクも増加してしまうのです。それぞれのサードパーティの多くがセキュリティのためのリソースを備えていないことを認識すると、リスクの大きさがどれほどのものか理解できるでしょう。
Web サプライチェーンのコードのひとつが侵害されると、悪意のあるコードがサプライチェーン経由で Web サイトに気づかないうちに侵食しまう可能性があります。これらのサードパーティのコードには、開発者が作成したコードと同じレベルのコンテンツおよびデータアクセス権限があるのです。
平均的な Web サイトでは50~60件のサードパーティサービスが使用されており、ハッカーはコードやスクリプトの脆弱性を探し、セキュリティの脆弱なサービスを利用している Web サイトを標的にしています。たとえば、ハッカーグループの 「Magecart」 は、何千もの EC サイトで使用されている 「Magento」 の脆弱性を発見したことが名称の由来となっています。Magecart は、Margento のライブラリに悪意のあるコードを挿入し、ユーザーが当該コンポーネントを使用する EC サイトを訪問する度に、顧客データを吸い上げていました。
数行のマルウェアができること
ハッカーは、オープンソース、ファーストパーティ、サードパーティのコードベースを豊富に保有しており、これらを標的にしています。何千行ものコードに組み込まれた、たった数行のマルウェアのコードが、多くの組織や顧客基盤に対して連鎖し、脅威にさらすことができます。これは、2018年にハッカーが Event Stream(イベントストリーム)と呼ばれる人気のあるコードベースを制御し、ビットコインを盗むように設計されたマルウェアを感染させた際に発覚しました。このライブラリは、世界中の何十万社もの企業で使用されていたため、一件のコードベースの汚染が非常に多くの企業にセキュリティリスクをもたらしてしまったのです。
クライアントサイド攻撃によるデータ漏洩の種類
Web スキマー / フォームジャッキング
Web スキマー攻撃とは、ハッカーが Web ページにマルウェアを挿入し、侵害されたサードパーティのスクリプトなどを利用して、ユーザーの情報を窃盗することです。標的となる個人情報には、クッキーや、一般的なページの情報、HTML フォームの送信内容などが含まれます。
サードパーティの JavaScript ライブラリは可視性が限られているため、スキミング攻撃の検出は困難ですが、脆弱性の原因に関係なく、データ取扱い事業者は自社の Web サイトにおけるスキミング攻撃に対して責任が問われことに留意することが重要です。
>> 関連記事: How Cybercriminals Target eCommerce Shopping Carts(英語)
クロスサイトスクリプティング
クロスサイトスクリプティング(XSS)攻撃とは、広く使用されている Web アプリケーション攻撃です。 XSS 攻撃はインジェクション(注入)攻撃の一種であり、攻撃者はユーザーの行動の監視、クッキーへのアクセス、偽物のまたは外部のコンテンツのダウンロード、機密情報の窃取を行うために、悪意のあるスクリプト(多くの場合は JavaScript)を信頼されている正規の Web サイトやアプリケーションに注入し、ユーザーのブラウザ上で実行しようとします。
>> 関連記事:クロスサイトスクリプティング(XSS)攻撃が Web サイトに与える被害と対策
クライアントサイドのリスクへの対策
クライアントサイドのリスクを評価して軽減するのに役立つサードパーティのツールは多数あり、ブラウザセキュリティ(CSP / SRI)や、行動検知、JavaScript アナライザー、クライアントサイドのデータやプライバシーの保護強化などの対策を行うことができます。
ブラウザのセキュリティ
ブラウザのセキュリティ強化のためには、開発、セキュリティ、運用チームによるセキュリティ対策の追加が有効です。具体例としては、コンテンツセキュリティポリシー(CSP)やサブリソース(SRI)の整合性の導入があります。
コンテンツセキュリティポリシー
(Contents Security Policy; CSP)
CSP は、Web サイトの機能を制限するためのプログラミング言語で、画像、スクリプトなどのコンテンツの送信元を制約するために利用されます。これらのポリシーは、CSP 対応の Web ブラウザによってブラウザ側でページごとに適用され、コンテンツ(JavaScript、CSS)インジェクションのリスクを軽減し、Web アプリケーションの権限を設定するために使用されます。 CSP を導入する際は、以下の点を慎重に考慮する必要があります。
- ブラウザのサポート状況:CSP は、さまざまなレベルではありますが、すべての主要なブラウザでサポートされています。こちらのページ(英語)でブラウザごとにサポートされている CSP 機能を確認できます。
- 適切な構成と有効性:他のプログラミング言語と同様に、CSP の設計、作成、テスト、および保守には専門知識が必要です。CSP が Web アプリケーションの機能やパフォーマンスにもたらす大きな影響を考慮すると、テストは非常に重要です。ベニス大学の調査によると、強制モードで CSP を使用する Web サイトの92%以上が、依然としてコンテンツインジェクション攻撃に対して脆弱であることが判明しています。
- メンテナンス:新しいブラウザと CSP 標準がリリースされる度、CSP のアップデートも必要になります。 また、Web アプリケーション機能や組み込まれたパートナーサービスの変更も、CSP 機能に影響を与えます
- 人員配置:CSP を利用したセキュリティは、開発リソース、スキルセット、優先順位、およびリリースサイクルによって制約を受ける可能性があります。
サブリソース完全性
(Subresource Integrity; SRI)
SRI を使用すると、攻撃者が Web ファイルを乗っ取り、悪意のある変更を行おうとした場合に、Web サイトのコンテンツを確実に保護できます。SRI は ハッシュ値を使用して、 JavaScript が改ざんされていないかどうかを検出できます。攻撃者は引き続き悪意のあるコードをファイルに挿入できる可能性がありますが、ブラウザは当該ファイルを読み込みません。 SRI は、静的な Web ページや、Web サプライチェーンのコードなど、JavaScript が変更される可能性が低いページに効果的です。
行動検知
一部のクライアントサイドのセキュリティは、潜在的なクライアントサイド攻撃の検出と、開発・セキュリティ・運用チームへの警告に重点を置いています。これらのツールは、トラブルシューティングに役立つテレメトリー(遠隔測定法)を提供し、場合によっては状況を改善します。このアプローチには、一定期間にわたる通常の Web ページの動作を計測、分析、ベースライン化し、(ハッカーによる)異常な動作を示唆する可能性のあるベースラインの差異をチームに警告することが含まれます。攻撃が調査および確認された後、これらのツールは CSP などのセキュリティルールの開発と展開を容易にします。新たな CSP は Web サイト全体の機能や既に展開されている CSP コードに有害な影響を与える可能性があるため、開発者によるレビューやテストは必須となります。
JavaScript セキュリティアナライザー
(JavaScript™ Security Analyzer; JSA)
JSA は、コード分析を実行するクライアントサイドのセキュリティツールです。アナライザーは、JavaScript のセキュリティ脆弱性、実装の問題、構成エラー、および攻撃者によって悪用される可能性のあるその他のリスクをテストできますが、サードパーティーの埋め込みコードはテストできません。
クライアントサイドのデータ保護
このアプローチでは、外部ドメインやパートナーを事前に精査することで、積極的なデータ保護を実現します。 Web サプライチェーンを含む Web アプリケーションの利用は、事前に承認された外部ドメインに対してのみ許可されます。これは通常、許可リストによって実現されます。次に、ブラウザのクライアントサイドの監視が実施され、ブラウザ、Web およびモバイルサイトがこれらのドメインとのみコンテンツやデータをやり取りするようにします。このアプローチの主な利点は、保護が開始されるまでの時間が短縮され、非開発リソースによる保護が実現できること、また保守が容易であることです。
クライアントサイドのデータ保護と
プライバシーの施行
データ保護のために構築された高機能のツールは、データやコンテンツをハッカーから保護するだけでなく、より詳細な運用ルールを定義することで、許可リストにあるベンダーと共有するデータの種類(クレジットカード情報、社会保障番号など) を制限することもできます。これにより、企業はユーザーのプライバシー保護を強化するだけでなく、カリフォルニア州消費者プライバシー法(California Consumer Privacy Act; CCPA)、EU一般データ保護規則(General Data Protection Regulation; GDPR)、PCI DSS(Payment Card Industry Data Security Standard)、日本の個人情報保護法などのデータ保護規制に準拠することができます。
CHEQ の Go-to-Market セキュリティは、組織によるクライアントサイドのデータやプライバシーの保護をサポートします。CHEQ の導入のご相談はこちら。
※1米ドル=136円にて換算(2022年12月現在)
元の記事:Client-Side Attacks: What They Are and How to Prevent Them