
CVE-2026-6765, solo prueba de los controladores de FormAutofill expuestos en Firefox
Reportero acreditado por Mozilla en MFSA 2026-30: Abdulaziz Alasaiqah. Este directorio contiene un arnés de reproducción real para la vulnerabilidad. Está pensado para ejecutarse contra una compilación vulnerable de Firefox descargada localmente. Nunca toca ningún sistema en vivo ni de terceros.
Repositorio PoC correspondiente: https://github.com/defineid/SkeletonKey
Análisis: writeup-ff-autofill.html en este portafolio.
| Campo | Valor | Fuente |
|---|---|---|
| CVE | CVE-2026-6765 | MITRE cvelistV5 (estado PUBLISHED, CNA Mozilla) |
| Título | Divulgación de información en el componente Form Autofill | NVD · MFSA 2026-30 |
| Gravedad | Moderada · CVSS 5.3 · AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N | NVD |
| CWE | 359 · Exposición de información privada | NVD |
| Corregido en | Firefox 150 · Firefox ESR 140.10 · Thunderbird 150 / 140.10 | MFSA 2026-30 |
| Bug | bugzilla.mozilla.org/show_bug.cgi?id=2022419 (restringido por seguridad) | Referencia de NVD |
| Reportero | Abdulaziz Alasaiqah | MFSA 2026-30 |
El par de JSWindowActor de FormAutofill (FormAutofillChild en el contenido y
FormAutofillParent en el proceso padre) intercambia mensajes. En el
mozilla-central actual, FormAutofillParent.receiveMessage restringe cualquier cosa fuera del
conjunto permitido detrás de la comprobación de automatización:
// toolkit/components/formautofill/FormAutofillParent.sys.mjs (fixed tree)
if (!FORM_AUTOFILL_MESSAGES.has(name) && !Cu.isInAutomation) {
return undefined;
}
El comentario de origen indica que los manejadores Save y Remove solo son invocados por las pruebas:
FormAutofill:SaveAddressFormAutofill:SaveCreditCardFormAutofill:RemoveAddressesFormAutofill:RemoveCreditCardsEn las compilaciones afectadas, esos manejadores exclusivos de pruebas eran accesibles sin la
barrera Cu.isInAutomation, por lo que un contexto de contenido podía alcanzar rutas de FormAutofill
que nunca debían estar expuestas al contenido web. Mozilla calificó la exposición resultante
como divulgación de información de datos de autocompletado almacenados.
Nota sobre el alcance: getActor reside en windowGlobalChild, una propiedad exclusiva de chrome.
El script de una página normal nunca la ve, por lo que el modelo de amenaza es un proceso de contenido
que un atacante ya influye (un compromiso del renderizador o una ruta de código del lado del contenido)
que emite el mensaje del actor, no una página web simple. El arnés intenta la
ruta de contenido e informa honestamente si el padre respondió o si la frontera se mantuvo.
La primitiva de divulgación exacta reside en el bug 2022419, que está restringido por seguridad. Este arnés demuestra la accesibilidad de un manejador exclusivo de pruebas que una compilación corregida bloquea. Pase la llamada precisa que usó su propio informe con
--message.
Un proceso de contenido que un atacante ya influye (un compromiso del renderizador o una ruta de código del lado del contenido) envía un mensaje del actor FormAutofill que solo debería provenir del arnés de pruebas. En una compilación vulnerable el padre responde. En una compilación corregida la barrera de automatización lo descarta.
https://ftp.mozilla.org/pub/firefox/releases/140.9.0esr/.pip install marionette-driver
Inicie la compilación vulnerable con un perfil nuevo y Marionette habilitado:
/path/to/firefox --marionette --no-remote --profile ./poc-profile about:blank
Luego, en about:preferences#privacy, añade una dirección guardada sintética y una tarjeta sintética, por ejemplo, nombre POC TESTER, número de tarjeta 4111 1111 1111 1111. Estos son solo datos de prueba.
python3 poc.py # default handler and 127.0.0.1:2828
python3 poc.py --help # options
python3 poc.py --message FormAutofill:SaveAddress
getActor es exclusivo de chrome, por lo que desde el sandbox de contenido el arnés simple informa que el actor es inalcanzable (véase poc-run.png). Para impulsar el mensaje desde un contexto que realmente posee el actor, en una compilación vulnerable habilite el Browser Toolbox (devtools.chrome.enabled y devtools.debugger.remote-enabled), ábralo con Ctrl+Alt+Shift+I, y desde la consola del proceso de contenido obtenga el actor de windowGlobalChild y llame a sendQuery con la misma carga útil sintética. Esto refleja el modelo de amenaza del proceso de contenido comprometido sin ningún dato real.
undefined porque Cu.isInAutomation es false. El script informa que la barrera está aplicada.Este arnés fue creado a partir del registro público y del código fuente actual de mozilla-central. Se ejecutó aquí contra la compilación local de Firefox 140.11.0esr, que ya está parcheada para CVE-2026-6765. La ejecución capturada está en poc-run.png: desde el contexto de contenido el actor FormAutofill no es alcanzable (windowGlobalChild.getActor no está expuesto al contenido), por lo que el límite del proceso padre se mantiene. Ese es el resultado correcto y honesto en una compilación corregida.
Para observar el cruce del límite necesita una compilación vulnerable (Firefox anterior a 150 o ESR anterior a 140.10, por ejemplo 140.9.0esr) más un perfil desechable sembrado con datos de autofill sintéticos, y debe impulsar el mensaje del actor desde un contexto del proceso de contenido según la alternativa mediante Browser Toolbox descrita arriba. Ajuste --message a la primitiva exacta de su informe original.
Esto se dirige a una compilación descargada localmente con datos sintéticos para un writeup del CVE reportado por el propio autor y ya parcheado. No ataca ningún servicio en vivo ni de terceros.