セキュリティ研究者は、MetaのConversions API Gatewayに存在する2件の重大なクロスサイトスクリプティング(XSS)脆弱性を発見しました。これにより攻撃者は、ユーザーの操作なしに大規模にFacebookアカウントを乗っ取ることが可能になる恐れがあります。
これらの欠陥は、facebook.comやmeta.comを含むMeta所有ドメインに影響するほか、オープンソースのゲートウェイ基盤を導入している最大1億件のサードパーティ環境にも影響する可能性があります。
Conversions API Gatewayの概要
Meta Conversions API Gatewayは、企業がWebイベントや顧客のインタラクションデータをサーバー側から直接Metaの広告プラットフォームへ送信できるようにするソリューションです。
Facebook Pixelのような従来のブラウザベースのトラッキング手法とは異なり、このゲートウェイはサーバーレベルで動作することで、Cookie制限や広告ブロッカーを回避します。
Metaはこの技術を、gw.conversionsapigateway.comでのホステッドサービスとしても、企業が自社インフラに展開できるオープンソースのコンテナ化ソフトウェアとしても提供しています。
ゲートウェイは、コンバージョントラッキングを支援する重要なJavaScriptファイルであるcapig-events.jsを配信します。
このスクリプトはMetaのプロパティおよび数千のサードパーティWebサイトで自動的に実行されるため、その内部の脆弱性はサプライチェーンの観点から極めて危険です。
最初の欠陥はクライアント側のcapig-events.jsスクリプト内に存在し、postMessageのオリジン検証が不適切であることに起因します。
ページにopenerウィンドウがある場合、このスクリプトはIWL_BOOTSTRAPとラベル付けされた設定メッセージを待ち受けます。メッセージの送信元を許可リストと照合して検証するのではなく、コードはevent.originの値を無条件に信頼し、後で使用するために保存してしまいます。
この信頼されたオリジンは、その後、攻撃者が制御するドメインから別のJavaScriptファイル(iwl.js)を動的に読み込むために使用されます。
Metaのコンテンツセキュリティポリシー(CSP)およびCross-Origin-Opener-Policy(COOP)は保護を提供しているように見えますが、研究者は複数の回避手法を発見しました。
/help/ディレクトリ配下のログアウト状態のMetaページでは、CSPポリシーが緩和され、サードパーティのアナリティクスドメインが許可されています。
CSPで許可された任意のドメインにおけるサブドメイン乗っ取りや脆弱性により、攻撃者が悪意あるスクリプトをホストできる可能性があります。
さらに、FacebookのAndroid WebView環境では、研究者がwindow.nameの再利用とiframeハイジャックを組み合わせ、悪意あるpostMessageを送信する手法を悪用しました。
この多段階の攻撃チェーンにより、最終的にmeta.comのコンテキストで任意のJavaScriptを実行できるようになり、攻撃者はCSRFトークンを窃取して、メールアドレスの変更を含む特権操作や完全なアカウント乗っ取りを実行できます。
| CVE ID | 脆弱性の種類 | 影響を受けるコンポーネント | CVSSスコア | 深刻度 |
|---|---|---|---|---|
| CVE-2024-XXXXX | クライアント側XSS(不適切なオリジン検証) | capig-events.js | 8.5 | 高 |
| CVE-2024-YYYYY | 保存型XSS(安全でない文字列連結) | ゲートウェイバックエンド(IWL設定) | 9.8 | 重大 |
2つ目の、より深刻な脆弱性はゲートウェイのバックエンドコードに存在します。
企業がMetaのIWL(Intelligent Web Logging)設定ツールを通じてイベントマッチングルールを作成すると、バックエンドは適切なサニタイズやエスケープを行わないままユーザー提供値を連結してcapig-events.jsの一部を生成します。
公開されているソースコードの分析により、Javaファイル内で安全でない文字列連結が行われていることが判明しました。APIリクエストのJSONキーが、そのままJavaScript出力へ直接連結されています。
引用符や閉じ括弧などの文字を注入することで、攻撃者は文字列コンテキストを脱出し、すべてのユーザーに配信されるcapig-events.jsファイルへ任意のJavaScriptコードを直接挿入できます。
この保存型XSS脆弱性は、個々のユーザーをだまして誘導する必要がないため、特に壊滅的です。
いったん注入されると、侵害されたスクリプトを読み込むすべての訪問者に対して、Metaドメインおよび認証済みFacebookセッション上で悪意あるペイロードが自動的に実行されます。これはセキュリティ研究者Youssef Sammouda が報告しています。
Conversions API Gatewayはオープンソース技術であるため、この脆弱性はMetaのインフラにとどまらず、はるかに広範囲に及びます。
世界中の組織が、自社ドメイン上に少なくとも1億回このゲートウェイを導入しており、同じ保存型XSSの弱点を引き継いでいます。
このサプライチェーン脆弱性により、悪用から数時間以内に、攻撃者は何の操作や警告もなく、無数のWebサイトにまたがって何百万人ものユーザーを密かに侵害できた可能性があります。
両方の欠陥は、基本的なセキュリティ原則を浮き彫りにしています。製品・ドメイン・顧客をまたいで共有され信頼されるJavaScriptとして動作するアナリティクス基盤は、低リスクのコードとして扱うことはできません。
この種のシステムにおける小さな信頼境界の破綻が、プラットフォーム全体のセキュリティ災害へ連鎖し得ることを示しており、厳格なオリジン検証、防御的なCSP設計、そして安全なコード生成手法の重要性を、現代のWebプラットフォームに対して強く示唆しています。
翻訳元: https://gbhackers.com/critical-xss-vulnerabilities-in-meta-conversion-api/