セキュリティ研究者は、MetaのConversions API Gatewayに存在する2件の重大なクロスサイトスクリプティング(XSS)脆弱性を公開しました。これにより攻撃者は、Facebookアカウントを大規模に乗っ取れる可能性があります。
これらの欠陥はMetaのインフラだけでなく、数百万に及ぶサードパーティの導入環境にも影響し、インターネット上のユーザーを、気付かれにくい無操作(インタラクション不要)の攻撃にさらします。
Metaはgw.conversionsapigateway.comで自社の導入環境をホストしており、capig-events.jsという重要なJavaScriptファイルを配信しています。
このスクリプトはMetaのfbqクライアントサイドJavaScriptモジュールによって自動的に読み込まれます。www.meta.com、business.facebook.com、developers.facebook.com、そして多数のサードパーティ顧客サイトで実行されます。
このスクリプトに脆弱性があると、それを取り込むサイトのセキュリティコンテキストを継承してしまい、サプライチェーン上のセキュリティリスクを生みます。
1つ目の欠陥は、クライアントサイドのcapig-events.jsスクリプト内に完全に存在します。ページにopenerウィンドウがある場合、スクリプトは設定データを受け取るためにmessageイベントリスナーを登録します。
脆弱性は、受信するpostMessageイベントのオリジンを検証しないことにより発生します。
event.originを許可リストと照合する代わりに、スクリプトはそれを無条件に保存します。その後、その信頼できないオリジンから別のJavaScriptファイルを動的に読み込むために使用します。
typeがIWL_BOOTSTRAPのメッセージを受信すると、スクリプトは提供されたpixel_idが内部リストに存在することは確認しますが、メッセージのオリジンは検証しません。
保存されたオリジンはスクリプトのパスを構築して読み込むために使用され、攻撃者はURLのオリジン部分を完全に制御できます。このパターンにより、検証されていないオリジンデータが任意コード実行へと変換されます。
Content Security Policy(CSP)とCross-Origin-Opener-Policy(COOP)により、ほとんどのMetaページでは悪用が制限されるように見えますが、セキュリティ研究者のYoussef Sammoudaは回避手法を特定しました。
ログアウト状態の特定のMetaページ、特に/help/ディレクトリ配下では、CSPが緩和され、サードパーティの分析プロバイダーが含まれています。
CSPで許可された任意のサードパーティドメインで、サブドメイン乗っ取り、XSS、またはファイルアップロードが可能であれば、攻撃者スクリプトをホストするのに十分です。
研究者はまた、FacebookのAndroid WebView内で実行された場合、window.nameの再利用とwindow.open()の組み合わせにより、攻撃者が制御するページがopenerオブジェクトへのアクセスを再取得できることを発見しました。
meta.comで読み込まれるサードパーティのiframeコンポーネントの脆弱性を悪用することで、攻撃者はiframeを乗っ取り、信頼されたページコンテキスト内から悪意のあるpostMessageペイロードを送信できます。
2つ目の脆弱性はゲートウェイのバックエンドコードに存在し、より深刻な脅威を示します。研究者は、capig-events.jsのロジック生成部分が、適切なサニタイズなしにユーザー設定可能なデータを動的に追記していることを発見しました。
ユーザーがゲートウェイのGUIを通じてIWLイベントルールとパラメータを作成すると、バックエンドはPOSTリクエストで渡されたJSON値を直接連結してJavaScript文字列を構築します。
Amazon ECRで公開されているソースコードを分析したところ、AHPixelIWLParametersPlugin.javaファイルが、domain_uri、event_type、extractor_config、extractor_type、idパラメータに対するユーザー制御値をエスケープせずにスクリプトへ直接追記し、JavaScript出力を生成していることが判明しました。
シングルクォートや「“]}」のような文字を注入することで、攻撃者は文字列コンテキストから脱出し、任意のJavaScriptコードを注入できます。
ユーザー操作を必要とする一般的なXSS攻撃とは異なり、この脆弱性は、認証済みブラウザセッション内で、攻撃者が大規模にJavaScriptを静かに実行できるようにします。
Conversions API Gatewayはオープンソース技術であるため、これを導入し、自身のゲートウェイからcapig-events.jsを読み込んでいる組織も、同じ保存型XSSの欠陥により脆弱である可能性があります。
調査によれば、このアプリケーションは世界で少なくとも1億回導入されています。
したがって、スクリプトを自社ドメインでホストしている組織も同様のセキュリティリスクにさらされ、世界中の無数のWebサイトにまたがってユーザーへ影響が及ぶ可能性があります。
実際には、攻撃者はこのスクリプトを含むインターネット上のほぼあらゆるページの訪問者を標的にすることで、数時間以内に数百万人のFacebookユーザーを侵害できた可能性があります。
脆弱なコードは、信頼されたFacebookとサードパーティのコンテキストで同時に実行されるため、攻撃対象領域は広大です。ユーザーの操作も警告の兆候も必要ありません。
翻訳元: https://cyberpress.org/exploiting-xss-in-meta-conversion-api/