Akamai の視点で polyfill 攻撃を調査
編集・協力:Tricia Howard
polyfill.io サプライチェーン攻撃:概要
最近、セキュリティコミュニティが重大な サプライチェーン攻撃 に関する警告を受け取りました。この攻撃には、polyfill.io という、Web アプリケーションに polyfill(ネイティブではサポートされていない古いブラウザーで最新の機能を利用できるようにする JavaScript コード)を提供するサービスが使用されています。詳細なレポートによると、この攻撃は、10 万以上の Web サイトに影響を与えており、polyfill.io サービスが信頼され、幅広く使用されていることを逆手に取り、悪性のコードを伝播するという手口を使っています。
この攻撃では、中国にいると思われる攻撃者が、数か月前に最も人気のある polyfill オープンソースプロジェクトの 1 つを買収し、悪性のスクリプトを polyfill の JavaScript コードに挿入し、それが拡散されることで感染が広まりました。 その攻撃は主にモバイルデバイスを標的にしており、常にステルス状態を保ち、検知されにくくなるように、セッションを選択的にサンプリングしていました。その後、この悪性のコードは、リダイレクト攻撃に使用され、ユーザーを詐欺サイトに誘導するようになりました。
このような感染した polyfill を開発者が Web サイトに組み込んだため、知らず知らずのうちに悪性のコードをアプリケーションに混入させてしまっていたのでした。このブログの記事では、この攻撃と、サプライチェーン攻撃全般について説明し、Akamai Client-Side Protection & Compliance で観測した Akamai 独自のデータについても説明します。
サプライチェーン攻撃とは
サプライチェーン攻撃とは、組織のサプライチェーン内の脆弱性を標的にした攻撃です。オンライン Web アプリケーションという形態を採用している最新の Web サイトは、通常のサイト機能の一部として数十のサードパーティリソースをロードします。これらのリソースは Web サイトの所有者によって信頼されており、通常は、ドキュメント・オブジェクト・モデル(DOM)、Cookie、エンドユーザーが入力した機密情報を含んでいるページへのフルアクセス権限を持っています。
これらのリソースの監視と追跡は、その数の多さ、頻繁な変更、クライアントサイドの可視性の欠如により非常に困難です。攻撃者はこの信頼につけ込む可能性があり、これらのサードパーティサービスを使用して Web アプリケーションを侵害します。このような攻撃では通常、悪性のコードが正規のサードパーティのライブラリやサービスに注入されます。それをエンドユーザーが知らないうちに広めてしまいます。
Akamai Security Intelligence Group が実施した調査によると、 EC サイトで使用されている JavaScript の 50% は、サードパーティ製です。当社の顧客の決済ページには、平均して数十社のサードパーティベンダーのコードが記述されていますが、このコードは本来、 新しい PCI DSS v4.0 要件 6.4.3 および 11.6.1に準拠しなければなりません。
Akamai の視点から見た polyfill 攻撃
polyfill 攻撃は、標的の Web サイトを介して広まりますが、その JavaScript コードの元を辿ると cdn.polyfill.ioに行き着きます。この攻撃では、サーバーサイドとクライアントサイドの両方のサンプリングが使用されます。サーバーサイドでは、User-Agent などのリクエストヘッダーを調べ、一定の条件を満たすモバイルデバイスを標的として絞り込みます。それ以外のデバイスに対しては、polyfill サーバーは、元の polyfill コードを返すか、空の応答を返します(最新のブラウザーの場合)。
サンプリングプロセスは、サーバーサイドに限定されません。実行中に、コードはクライアントサイドでも、独自の JavaScript を使用してデバイスタイプを検証します。さらに、ページのリファラーとローカルデバイスの時間に基づいて標的を選択します。悪性の JavaScript が攻撃を実行するときに、googie-anaiytics[.]com のサーバーと通信します。
私たちは、Web ページ上で悪性の JavaScript が実行する様子(サーバーとの通信を含む)を監視することができました。 不審な動きが検知されると、影響を受ける顧客に対してアラートを発するようにしていました。どのような脅威であれ、迅速さに勝るものはありません。迅速に対応する能力は、攻撃の範囲を狭めるうえで非常に重要です。
Client-Side Protection & Compliance スクリプトふるまいポリシーは、この通信をブロックし、攻撃がこの経路をたどって進行することを拒否するように定義されています。図 1 は、実際の例をそのまま引用したものです。このポリシーをアクティベートした途端に、攻撃経路の拒否がリアルタイムで発生しました。
攻撃前後の polyfill.io の使用傾向
私たちは、40 社以上の顧客が、polyfill.io からリソースをロードしていることを確認しました。その顧客の中には、1 日あたりに影響を受けたページの数が数万にも及ぶところもありました(図 2)。この数には、polyfill.io の JavaScript リソースを直接使用している顧客、このコードを実行の一部として組み込んでいるサードパーティ、およびエンドユーザーのブラウザー拡張機能から発生したリソースが含まれます。
当社のデータは Akamai Client-Side Protection & Compliance から取得したものです。このソリューションは、JavaScript の実行をリアルタイムでアクティブに監視および分析しているため、ファーストパーティ、サードパーティを問わず、修復までにかかる時間を短縮します。
Akamai は顧客と緊密に連携しながら、攻撃に関するセキュリティ情報を関連する顧客に通知するなど、この攻撃に対する効果的な対応と影響の緩和を図っています。このようなプロアクティブなアプローチを採ることにより、感染したドメイン名を発生源とするリソースを大幅に減少させ、Akamai の顧客がリスクにさらされる事態を回避することができました。
サプライチェーン攻撃に有効なソリューション
Akamai Client-Side Protection & Compliance は、サプライチェーン攻撃を含む、ファーストパーティとサードパーティの両方のソースから発生するクライアントサイドの攻撃から、顧客を保護するように設計されています。
このソリューションは、Web アプリケーションの JavaScript リソースを監視し、その実行をリアルタイムで分析し、不審なふるまいがないかを判断します。また、スクリプトのふるまいの異常を検知し、Web アプリケーションでロードおよび実行されるすべての JavaScript リソースの詳細な分析を提供します。
さらに、Client-Side Protection & Compliance は、悪性のスクリプトの実行を数秒以内に防止するリアルタイムの緩和機能を備えています。不審なふるまいをブロックするために Web アプリケーションのコードを変更する必要がないため、セキュリティチームは攻撃への応答時間を大幅に短縮できます。このソリューションは、polyfill.io 攻撃とその影響を受けたユーザーセッションを検知し、攻撃の実行を阻止します。
ブラウザー内検知と緩和の利点
この攻撃は、特に一般的でない User-Agent を持つブラウザーが使用されているセッションをフィルタリングして、少数のセッションに標的を絞り込むため、Web サイト上でシンセティックなスキャンのみを実行するソリューションは、この攻撃フローを見逃していた可能性があります。Akamai Client-Side Protection & Compliance の主な利点の 1 つは、 ユーザーセッションごとにブラウザー内で実行されることです。標的となった特定のセッションが開始されたときでも、悪性の JavaScript の実行を検知しました。さらに重要なことは、保護ポリシーをアクティベートすると、ページに対する攻撃を阻止したことです(図 3)。
結論
polyfill.io サプライチェーン攻撃は、最新の Web アプリケーション開発に内在する重大な脆弱性を浮き彫りにしました。サードパーティのリソースに依存すると、適切な保護がすべて適用されていても、意図せずにセキュリティリスクを作ってしまう可能性があります。今回の事例では、10 万以上の Web サイトが巻き込まれており、信頼できるサービスが侵害を受けて悪性のコードを拡散するようになると、ユーザーのセキュリティと信頼がたやすく低下することが浮き彫りになりました。
このような脅威を監視することは、Akamai の顧客のみならず、セキュリティコミュニティ全体にとって、Akamai Security Intelligence Group が果たすべき責務です。Akamai は引き続き、脅威のエコシステムを監視し、その結果をお知らせしていきます。リアルタイムの更新情報をご覧になりたい方は、 X(旧 Twitter)で Akamai をフォローするか、または セキュリティリサーチ のページをご覧ください。