
CVE-2026-6765, Apenas teste de handlers FormAutofill expostos no Firefox
Repórter creditado pela Mozilla na MFSA 2026-30: Abdulaziz Alasaiqah. Este diretório contém um harness de reprodução real para a vulnerabilidade. Ele destina-se a ser executado contra uma build vulnerável do Firefox baixada localmente. Ele nunca toca em qualquer sistema ativo ou de terceiros.
Repositório PoC correspondente: https://github.com/defineid/SkeletonKey
Writeup: writeup-ff-autofill.html neste portfólio.
| Campo | Valor | Fonte |
|---|---|---|
| CVE | CVE-2026-6765 | MITRE cvelistV5 (estado PUBLISHED, CNA Mozilla) |
| Título | Divulgação de informações no componente Form Autofill | NVD · MFSA 2026-30 |
| Severidade | Moderada · CVSS 5.3 · AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N | NVD |
| CWE | 359 · Exposição de Informações Privadas | NVD |
| Corrigido em | Firefox 150 · Firefox ESR 140.10 · Thunderbird 150 / 140.10 | MFSA 2026-30 |
| Bug | bugzilla.mozilla.org/show_bug.cgi?id=2022419 (restrito por segurança) | Referência NVD |
| Repórter | Abdulaziz Alasaiqah | MFSA 2026-30 |
O par de JSWindowActor do FormAutofill (FormAutofillChild no conteúdo e
FormAutofillParent no processo pai) troca mensagens. No atual
mozilla-central, FormAutofillParent.receiveMessage restringe qualquer coisa fora do
conjunto permitido por trás da verificação de automação:
// toolkit/components/formautofill/FormAutofillParent.sys.mjs (fixed tree)
if (!FORM_AUTOFILL_MESSAGES.has(name) && !Cu.isInAutomation) {
return undefined;
}
O comentário na origem afirma que os handlers Save e Remove são invocados apenas por testes:
FormAutofill:SaveAddressFormAutofill:SaveCreditCardFormAutofill:RemoveAddressesFormAutofill:RemoveCreditCardsNas builds afetadas, esses handlers exclusivos de teste eram acessíveis sem a
barreira Cu.isInAutomation, pelo que um contexto de conteúdo podia alcançar caminhos do FormAutofill
que nunca deveriam estar expostos a conteúdo web. A Mozilla classificou a exposição resultante
como divulgação de informação de dados de preenchimento automático armazenados.
Nota sobre o alcance: getActor reside em windowGlobalChild, uma propriedade exclusiva do chrome.
Scripts de página comuns nunca a veem, pelo que o modelo de ameaça é um processo de conteúdo que um
atacante já influencia (um comprometimento do renderer ou um caminho de código do lado do conteúdo)
a emitir a mensagem do actor, e não uma página web comum. O harness tenta o
caminho de conteúdo e relata honestamente se o pai respondeu ou se a barreira
se manteve.
A primitiva exata de divulgação reside no bug 2022419, que tem acesso restrito por segurança. Este harness demonstra a acessibilidade de um handler exclusivo de teste que uma build corrigida bloqueia. Passe a chamada precisa que o seu próprio relatório usou com
--message.
Um processo de conteúdo que um atacante já influencia (um comprometimento do renderer ou um caminho de código do lado do conteúdo) envia uma mensagem do actor FormAutofill que só deveria vir do harness de teste. Numa build vulnerável, o pai responde. Numa build corrigida, a barreira de automação descarta-a.
https://ftp.mozilla.org/pub/firefox/releases/140.9.0esr/.pip install marionette-driver
Inicie a build vulnerável com um perfil novo e o Marionette habilitado:
/path/to/firefox --marionette --no-remote --profile ./poc-profile about:blank
Em seguida, em about:preferences#privacy, adicione um endereço salvo sintético e um cartão sintético, por exemplo, nome POC TESTER, número do cartão 4111 1111 1111 1111. Estes são apenas dados de teste.
python3 poc.py # default handler and 127.0.0.1:2828
python3 poc.py --help # options
python3 poc.py --message FormAutofill:SaveAddress
getActor é exclusivo do chrome, portanto, a partir do sandbox de conteúdo, o harness simples reporta o actor como inalcançável (ver poc-run.png). Para acionar a mensagem a partir de um contexto que realmente detém o actor, em uma build vulnerável, habilite o Browser Toolbox (devtools.chrome.enabled e devtools.debugger.remote-enabled), abra-o com Ctrl+Alt+Shift+I e, a partir do console do processo de conteúdo, obtenha o actor de windowGlobalChild e chame sendQuery com o mesmo payload sintético. Isso espelha o modelo de ameaça de processo de conteúdo comprometido sem qualquer dado real.
undefined porque Cu.isInAutomation é falso. O script reporta que a barreira está sendo aplicada.Este harness foi elaborado a partir do registro público e do código-fonte atual do mozilla-central. Ele foi executado aqui contra a build local do Firefox 140.11.0esr, que já está corrigida para CVE-2026-6765. A execução capturada está em poc-run.png: a partir do contexto de conteúdo, o actor FormAutofill não é alcançável (windowGlobalChild.getActor não é exposto ao conteúdo), portanto a fronteira do processo pai se mantém. Esse é o resultado correto e honesto em uma build corrigida.
Para observar a fronteira sendo transposta, você precisa de uma build vulnerável (Firefox anterior à 150 ou ESR anterior à 140.10, por exemplo 140.9.0esr) mais um perfil descartável populado com dados sintéticos de autofill, e você aciona a mensagem do actor a partir de um contexto de processo de conteúdo conforme a alternativa via browser-toolbox acima. Ajuste --message para a primitiva exata do seu relatório original.
Isto tem como alvo uma build baixada localmente com dados sintéticos para um writeup do próprio CVE reportado e já corrigido pelo autor. Não ataca nenhum serviço ativo ou de terceiros.