Mozilla が MFSA 2026-30 でクレジットを付与した報告者: Abdulaziz Alasaiqah。 このディレクトリには、この脆弱性の実際の再現ハーネスが含まれています。これは ローカルにダウンロードした脆弱な Firefox ビルドに対して実行することを 想定しています。稼働中のシステムや第三者システムには一切触れません。
対応する PoC リポジトリ: https://github.com/defineid/SkeletonKey
解説記事: このポートフォリオ内の writeup-ff-autofill.html。
| 項目 | 値 | 出典 |
|---|---|---|
| CVE | CVE-2026-6765 | MITRE cvelistV5 (状態 PUBLISHED、CNA Mozilla) |
| タイトル | Form Autofill コンポーネントにおける情報漏えい | NVD · MFSA 2026-30 |
| 深刻度 | 中程度 · CVSS 5.3 · AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N | NVD |
| CWE | 359 · 個人情報の露出 | NVD |
| 修正済み | Firefox 150 · Firefox ESR 140.10 · Thunderbird 150 / 140.10 | MFSA 2026-30 |
| バグ | bugzilla.mozilla.org/show_bug.cgi?id=2022419 (セキュリティ制限あり) | NVD 参照 |
| 報告者 | Abdulaziz Alasaiqah | MFSA 2026-30 |
FormAutofill の JSWindowActor ペア (コンテンツ側の FormAutofillChild と
親プロセス側の FormAutofillParent) はメッセージを交換します。現在の
mozilla-central では、FormAutofillParent.receiveMessage が許可セット外の
すべてを自動化チェックの背後でゲートしています:
// toolkit/components/formautofill/FormAutofillParent.sys.mjs (fixed tree)
if (!FORM_AUTOFILL_MESSAGES.has(name) && !Cu.isInAutomation) {
return undefined;
}
ソースコメントには、Save および Remove ハンドラーはテストによってのみ呼び出されると記載されています:
FormAutofill:SaveAddressFormAutofill:SaveCreditCardFormAutofill:RemoveAddressesFormAutofill:RemoveCreditCards影響を受けるビルドでは、これらのテスト専用ハンドラーが Cu.isInAutomation ゲートなしで到達可能であったため、コンテンツコンテキストが本来ウェブコンテンツに公開されるはずのない FormAutofill のパスに到達できました。Mozilla は、結果として生じる露出を保存された自動入力データの情報漏洩と評価しました。
到達範囲に関する注記:getActor は chrome 専用プロパティである windowGlobalChild 上に存在します。通常のページスクリプトからは決して見えないため、脅威モデルは、攻撃者がすでに影響を与えているコンテンツプロセス(レンダラーの侵害またはコンテンツ側のコードパス)がアクターメッセージを発行する場合であり、単なるウェブページではありません。ハーネスはコンテンツパスを試行し、親が応答したか境界が維持されたかを正直に報告します。
正確な開示プリミティブは、セキュリティ制限がかけられている bug 2022419 に存在します。このハーネスは、修正済みビルドがブロックするテスト専用ハンドラーの到達可能性を実証します。自身のレポートで使用した正確な呼び出しを
--messageで渡してください。
攻撃者がすでに影響を与えているコンテンツプロセス(レンダラーの侵害またはコンテンツ側のコードパス)が、本来テストハーネスからのみ送信されるべき FormAutofill アクターメッセージを送信します。脆弱なビルドでは親が応答します。修正済みビルドでは自動化ゲートがそれを破棄します。
https://ftp.mozilla.org/pub/firefox/releases/140.9.0esr/ から対応するプラットフォームビルドをダウンロードしてください。pip install marionette-driver
新しいプロファイルと Marionette を有効にして、脆弱なビルドを起動します:
/path/to/firefox --marionette --no-remote --profile ./poc-profile about:blank
次に about:preferences#privacy で、合成の保存済み住所を1件と合成カードを1件追加します。例えば名前は POC TESTER、カード番号は 4111 1111 1111 1111 です。これはテストデータのみです。
python3 poc.py # default handler and 127.0.0.1:2828
python3 poc.py --help # options
python3 poc.py --message FormAutofill:SaveAddress
getActor は chrome 専用であるため、コンテンツサンドボックスからは、プレーンなハーネスはアクターに到達できないと報告します(poc-run.png を参照)。実際にアクターを保持しているコンテキストからメッセージを駆動するには、脆弱なビルドでブラウザーツールボックスを有効化し(devtools.chrome.enabled と devtools.debugger.remote-enabled)、Ctrl+Alt+Shift+I で開き、コンテンツプロセスのコンソールから windowGlobalChild 経由でアクターを取得し、同じ合成ペイロードで sendQuery を呼び出します。これは、実際のデータを一切使わずに、侵害されたコンテンツプロセスの脅威モデルを再現します。
Cu.isInAutomation が false であるため、同じ呼び出しは undefined を返します。スクリプトはゲートが適用されていることを報告します。このハーネスは公開記録と現在の mozilla-central のソースから作成されました。ここでローカルの Firefox 140.11.0esr ビルドに対して実行され、そのビルドは CVE-2026-6765 に対してすでにパッチ済みです。キャプチャした実行結果は poc-run.png にあります。コンテンツコンテキストからは FormAutofill アクターに到達できず(windowGlobalChild.getActor はコンテンツに公開されていません)、親の境界が維持されています。これは修正済みビルドにおける正しく誠実な結果です。
境界が越えられることを観察するには、脆弱なビルド(Firefox 150 未満、または ESR 140.10 未満、例えば 140.9.0esr)と、合成オートフィルデータを投入した使い捨てプロファイルが必要です。そして、上記のブラウザーツールボックスのフォールバックに従い、コンテンツプロセスのコンテキストからアクターメッセージを駆動します。--message は、元の報告にある正確なプリミティブに合わせて調整してください。
これは、著者自身が報告しすでにパッチ済みの CVE に関する記事のために、合成データを用いてローカルにダウンロードしたビルドを対象としています。稼働中のサービスや第三者のサービスを攻撃するものではありません。