Polyfill は、古いブラウザをサポートするオープンソースライブラリであり、Polyfill.js は世界中の10万以上のサイトで使用されているオープンソースのJavaScriptコードです。最近、Polyfill.jsを使用するドメインがマルウェア攻撃にさらされたことが確認されました。今回の記事では、Polyfill.io のドメインを対象にしたサプライチェーンのマルウェア攻撃についてご紹介します。
データ奪取を誘発するPolyfillサプライチェーンマルウェアの攻撃
セキュリティ企業Sansecの調査によると、Polyfillサプライチェーン攻撃は、今年2月、Funnullという中国企業がPolyfill.ioのドメインを買収した後、そのドメインのJavaScriptライブラリ(Polyfill.js)を修正し、モバイルユーザーが悪質なサイトにリダイレクトされるようにドメインにマルウェアを混入させたことから始まります。
彼らはユーザーをスポーツ賭博、アダルトサイトなどの有害サイトに誘導してユーザーの個人情報とデータを奪取しようとしたが、この時使用されたドメインの中には有名な決済サービスのドメインも含まれており、大量のデータ奪取が懸念されています。特に、偽のGoogle アナリティクスのドメイン(www[.]googie-anaiytics[.]com)も攻撃に使用し、モバイルユーザーがスポーツ賭博サイトにリダイレクトされるようにしました。このようにグローバルサイトを攻撃に悪用したことが、より広範なサプライチェーン攻撃をもたらす原因となりました。
被害が拡大すると、6月25日、Googleはpolyfill.ioを使用するEコマースサイトのGoogle広告をブロックし始めました。この攻撃は、HTTPヘッダーに基づいて動的に生成されたコードが特定のモバイル機器で特定の時間だけ有効化され、管理者ユーザーやウェブ分析サービスが検出されると実行を遅延させるように設計されており、リバースエンジニアリング(Reverse engineering)の手法さえ妨害する特徴があります。
CTI検索エンジンで外部に公開されたPolyfill関連IPアドレスを検索する
今回のPolyfill攻撃の手法は逆追跡が難しいため、Polyfillのコード作成者ですら、最新のブラウザではPolyfillはもう必要ないため、Polyfillを使用しないことを推奨しています。
Polyfill.jsが使用されたコードをすぐに変更するのが難しい場合や、Polyfillを使用しているドメインを把握するのが難しい場合は、CTI脅威ハンティング検索エンジンを通じて外部に公開されたPolyfill関連のIPアドレスとドメインを探すことが対応策となります。
CTI検索エンジンCriminal IPのIT資産検索でPolyfillを技術スタックとして使用している関連IPアドレスを簡単に見つけることができます。
Search Query: tech_stack:Polyfill

Polyfillを技術スタックとして使用しているIPアドレスは合計98,076件で、そのうち米国が36,175件で最も多く、次いで日本が10,378件、中国が9,378件の順で検出されました。

また、検索された結果の中から一つのIPアドレスを選択してみると、IPアドレスレポート内でもPolyfillを使用しているポートとバナー情報を確認することができます。つまり、直接管理しているIPアドレスを検索すると、Polyfillが適用されているかどうかを確認できます。

Polyfillの作成者は、Polyfillのドメインを直ちに削除し、その代わりとしてFastlyとCloudflareを提案しています。したがって、サプライチェーン攻撃を予防する最善の方法は、Polyfillの作成者の推奨のように問題のあるドメインを削除することですが、その前にIPアドレスとドメインの悪用有無を把握するためにCTI検索エンジンを活用することができます。また、今回の攻撃は、オープンソースライブラリがマルウェアのターゲットになる可能性がある事例であるため、使用しているオープンソーススクリプトが悪意的に修正されていないか継続的にモニタリングすることが重要です。
サプライチェーン攻撃の予防及び対応策に関連して、開発者・ソフトウェア企業における2024ソフトウェアサプライチェーンセキュリティのガイドラインをご参照ください。
当レポートはサイバー脅威インテリジェンス検索エンジン「Criminal IP」のデータに基づいて作成されました。只今Criminal IPの無料アカウントを作成し、レポートに引用された検索結果の確認やより膨大な脅威インテリジェンスを自由に検索いただけます。
データの提供:Criminal IP(https://www.criminalip.io/ja)
ご参照: