
CVE-2026-6765, Test uniquement des gestionnaires FormAutofill exposés dans Firefox
Rapporteur crédité par Mozilla dans MFSA 2026-30 : Abdulaziz Alasaiqah. Ce répertoire contient un harnais de reproduction réel de la vulnérabilité. Il est destiné à être exécuté contre une version vulnérable de Firefox téléchargée localement. Il ne touche jamais aucun système actif ou tiers.
Dépôt PoC correspondant : https://github.com/defineid/SkeletonKey
Analyse : writeup-ff-autofill.html dans ce portfolio.
| Champ | Valeur | Source |
|---|---|---|
| CVE | CVE-2026-6765 | MITRE cvelistV5 (état PUBLISHED, CNA Mozilla) |
| Titre | Information disclosure in the Form Autofill component | NVD · MFSA 2026-30 |
| Gravité | Modérée · CVSS 5.3 · AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N | NVD |
| CWE | 359 · Exposition d'informations privées | NVD |
| Corrigé dans | Firefox 150 · Firefox ESR 140.10 · Thunderbird 150 / 140.10 | MFSA 2026-30 |
| Bug | bugzilla.mozilla.org/show_bug.cgi?id=2022419 (accès restreint pour raisons de sécurité) | Référence NVD |
| Rapporteur | Abdulaziz Alasaiqah | MFSA 2026-30 |
La paire de JSWindowActor FormAutofill (FormAutofillChild côté contenu et
FormAutofillParent dans le processus parent) échange des messages. Dans le
mozilla-central actuel, FormAutofillParent.receiveMessage conditionne tout ce qui sort de
l'ensemble autorisé au contrôle d'automatisation :
// toolkit/components/formautofill/FormAutofillParent.sys.mjs (fixed tree)
if (!FORM_AUTOFILL_MESSAGES.has(name) && !Cu.isInAutomation) {
return undefined;
}
Le commentaire source indique que les gestionnaires Save et Remove ne sont invoqués que par les tests :
FormAutofill:SaveAddressFormAutofill:SaveCreditCardFormAutofill:RemoveAddressesFormAutofill:RemoveCreditCardsSur les versions affectées, ces gestionnaires réservés aux tests étaient accessibles sans la
barrière Cu.isInAutomation, de sorte qu'un contexte de contenu pouvait atteindre des chemins FormAutofill
qui n'étaient jamais censés être exposés au contenu web. Mozilla a qualifié l'exposition résultante
de divulgation d'informations sur les données de remplissage automatique stockées.
Note sur la portée : getActor réside sur windowGlobalChild, une propriété réservée au chrome.
Un script de page ordinaire ne le voit jamais, le modèle de menace est donc un processus de contenu qu'un
attaquant influence déjà (compromission du moteur de rendu ou chemin de code côté contenu)
émettant le message d'acteur, et non une simple page web. Le harnais tente d'emprunter le
chemin de contenu et indique honnêtement si le parent a répondu ou si la frontière a tenu.
La primitive exacte de divulgation se trouve dans le bug 2022419, qui est restreint pour raisons de sécurité. Ce harnais démontre l'accessibilité d'un gestionnaire réservé aux tests qu'une version corrigée bloque. Passez l'appel précis utilisé dans votre propre rapport avec
--message.
Un processus de contenu qu'un attaquant influence déjà (compromission du moteur de rendu ou chemin de code côté contenu) envoie un message d'acteur FormAutofill qui ne devrait jamais provenir que du harnais de test. Sur une version vulnérable, le parent répond. Sur une version corrigée, la barrière d'automatisation le rejette.
https://ftp.mozilla.org/pub/firefox/releases/140.9.0esr/.pip install marionette-driver
Démarrez la version vulnérable avec un profil neuf et Marionette activé :
/path/to/firefox --marionette --no-remote --profile ./poc-profile about:blank
Puis dans about:preferences#privacy, ajoutez une adresse enregistrée synthétique et une carte synthétique, par exemple le nom POC TESTER, le numéro de carte 4111 1111 1111 1111. Il s'agit uniquement de données de test.
python3 poc.py # default handler and 127.0.0.1:2828
python3 poc.py --help # options
python3 poc.py --message FormAutofill:SaveAddress
getActor est réservé à chrome, donc depuis le bac à sable de contenu le harnais simple signale que l'acteur est inaccessible (voir poc-run.png). Pour piloter le message depuis un contexte qui détient réellement l'acteur, sur une version vulnérable, activez la boîte à outils du navigateur (devtools.chrome.enabled et devtools.debugger.remote-enabled), ouvrez-la avec Ctrl+Alt+Shift+I, puis depuis la console du processus de contenu récupérez l'acteur via windowGlobalChild et appelez sendQuery avec la même charge utile synthétique. Cela reproduit le modèle de menace du processus de contenu compromis sans aucune donnée réelle.
undefined car Cu.isInAutomation est faux. Le script indique que le garde-fou est appliqué.Ce harnais a été rédigé à partir des sources publiques et du code source actuel de mozilla-central. Il a été exécuté ici contre la version locale Firefox 140.11.0esr, qui est déjà corrigée pour CVE-2026-6765. L'exécution capturée se trouve dans poc-run.png : depuis le contexte de contenu, l'acteur FormAutofill n'est pas accessible (windowGlobalChild.getActor n'est pas exposé au contenu), donc la frontière parente tient. C'est le résultat correct et honnête sur une version corrigée.
Pour observer le franchissement de la frontière, il vous faut une version vulnérable (Firefox antérieur à 150 ou ESR antérieur à 140.10, par exemple 140.9.0esr) ainsi qu'un profil jetable prérempli avec des données d'autofill synthétiques, et vous pilotez le message de l'acteur depuis un contexte de processus de contenu selon le repli via la boîte à outils du navigateur ci-dessus. Ajustez --message à la primitive exacte de votre rapport d'origine.
Ceci cible une version téléchargée localement avec des données synthétiques pour la rédaction d'un article sur la CVE signalée par l'auteur lui-même et déjà corrigée. Cela n'attaque aucun service actif ni tiers.