Como a Mozilla Encontrou 271 Vulnerabilidades no Firefox com o Claude Mythos
A Mozilla utilizou o modelo de IA Claude Mythos para identificar e corrigir um número recorde de vulnerabilidades no Firefox. Este artigo detalha a abordagem, os resultados e oferece conselhos para outros projetos que desejam aplicar técnicas semelhantes, revelando como a IA está transformando a segurança cibernética.
MundiX News·13 de maio de 2026·10 min de leitura·👁 4 views
Como a Mozilla Encontrou 271 Vulnerabilidades no Firefox com o Claude Mythos
A Mozilla anunciou recentemente a descoberta e correção de um número recorde de vulnerabilidades ocultas no Firefox, utilizando o Claude Mythos Preview e outros modelos de IA. Este artigo detalha a abordagem, os resultados e oferece conselhos para outros projetos que desejam aplicar essas técnicas.
Bugs Tornaram-se Repentinamente de Melhor Qualidade
Há alguns meses, relatórios de segurança gerados por IA em projetos de código aberto eram, em sua maioria, inúteis. Responder a relatórios que parecem plausíveis, mas são falhos, é um fardo assimétrico: gerar um "problema" é barato, mas resolvê-lo é caro. A mudança na qualidade dos relatórios de segurança gerados por IA foi notável nos últimos meses. Dois fatores desempenharam um papel simultaneamente: os modelos se tornaram significativamente mais poderosos e as técnicas de gerenciamento foram aprimoradas.
Normalmente, relatórios detalhados de bugs permanecem fechados por vários meses após a liberação de correções e a publicação de avisos de segurança, como uma medida para proteger usuários que atualizam lentamente. Dado o enorme interesse no tópico e a urgência do que está acontecendo no ecossistema, a Mozilla decidiu divulgar uma pequena amostra de relatórios que sustentam os patches lançados recentemente. A amostra tenta cobrir diferentes subsistemas do navegador, embora permaneça um tanto arbitrária. No entanto, a profundidade e a diversidade desses relatórios reforçam a avaliação das capacidades e o apelo aos defensores para que comecem a aplicar essas técnicas:
ID do Bug
Descrição
2024918
Verificação de igualdade incorreta permite que o JIT otimize a inicialização de uma estrutura WebAssembly GC ativa, criando um primitivo de objeto falso com potencial leitura/gravação arbitrária no código que passou por fuzzing intensivo por pesquisadores internos e externos.
2024437
Bug de 15 anos no elemento <legend>, reproduzível por uma orquestração cuidadosamente construída de casos extremos de partes remotas do navegador: limites de profundidade de pilha de recursão, propriedades expando e coleta de ciclos.
2021894
Exploração confiável de uma condição de corrida via IPC: um processo de conteúdo comprometido manipula as contagens de referência do IndexedDB no pai, provocando um UAF e uma potencial fuga da sandbox.
2022034
Um valor bruto NaN que cruza a fronteira do IPC pode se mascarar como um ponteiro JS marcado para um objeto. A dupla desserialização se transforma em um primitivo de objeto falso no processo pai para fuga da sandbox.
2024653
Um caso de teste sofisticado que passa por loops de eventos aninhados, ouvintes de pagehide e coletor de lixo, provoca um UAF no atributo setter do elemento <object>.
2022733
Inicia um UAF no processo pai através da inundação do WebTransport com milhares de hashes de certificados para estender uma condição de corrida em um ciclo de cópia pesado em contagens de referência; usado via IPC de um processo de conteúdo comprometido.
2023958
Emula um servidor DNS malicioso, interceptando chamadas de funções DNS glibc para reproduzir um caso limite de fallback UDP→TCP, provocando uma leitura excessiva de buffer e vazamento de memória de pilha do processo pai durante a análise de HTTPS RR e ECH.
2025977
Bug de 20 anos no XSLT: chamadas key() reentrantes causam uma re-hash da tabela hash, liberando seu armazenamento de apoio enquanto um ponteiro bruto ainda aponta para a gravação (um dos vários bugs de alta segurança no XSLT).
2027298
Corrige o seletor de cores para simular uma seleção de usuário que, de outra forma, não seria automatizada, então usa um evento de entrada síncrono para girar um loop de evento aninhado, reentrando na desmontagem do ator e liberando um callback durante sua execução — UAF no processo de conteúdo.
2023817
Um processo de conteúdo comprometido poderia enviar uma imagem arbitrária para decodificação no processo pai; isso poderia ser combinado com uma vulnerabilidade hipotética no decodificador de imagem para escapar da sandbox. Foi necessário um raciocínio difícil de automatizar sobre o nível de confiança dos dados de entrada no processo pai.
2029813
Fuga de nossa tecnologia de isolamento no processo para bibliotecas de terceiros (RLBox) através de uma lacuna na lógica de verificação ao copiar valores da parte não confiável da sandbox para a confiável.
2026305
Um caso de teste mínimo que explora a semântica especial de rowspan=0 em tabelas HTML: adicionar >65.535 linhas ignora a limitação e estoura um bitfield de layout de 16 bits — não detectado por fuzzers por anos.
Uma série de bugs são fugas da sandbox que exigem combinação com outros exploits para a completa comprometimento do Firefox. Nesses relatórios, presume-se que o processo de renderização isolado já esteja comprometido por algum bug separado e esteja executando código de máquina controlado pelo atacante, tentando elevar os privilégios ao nível do processo pai. Ao construir um modelo de fuga da sandbox, é permitido corrigir o código-fonte do Firefox — desde que o código modificado seja executado apenas no processo isolado. Esses bugs são tradicionalmente extremamente difíceis de detectar por fuzzing, e embora a Mozilla tenha desenvolvido novas técnicas, a análise por IA fornece uma cobertura significativamente mais completa dessa superfície crítica.
Tão interessante quanto isso é o que os modelos não encontraram — não porque não tentaram, mas porque não conseguiram contornar a defesa em camadas do Firefox. Por exemplo, há alguns anos, a Mozilla recebeu relatórios de pesquisadores que conseguiram escapar da sandbox, provocando a poluição do protótipo no processo pai privilegiado. Em vez de corrigir esses problemas um por um, a Mozilla fez uma mudança arquitetônica, congelando esses protótipos por padrão. Ao estudar os logs do harness, a Mozilla viu inúmeras tentativas de usar esse vetor, bloqueadas por essa solução. Observar o retorno direto de decisões anteriores de fortalecimento foi ainda mais agradável do que encontrar e corrigir novos bugs.
Construindo um Pipeline Baseado em Modelos
Por vários anos, a Mozilla experimentou a auditoria de código via LLM: as primeiras tentativas com GPT-4 e Sonnet 3.5 para análise estática de código arriscado mostraram algum potencial, mas a alta porcentagem de falsos positivos tornou a escala impraticável. A chegada de harnesses baseados em agentes, capazes de detectar problemas de segurança de forma confiável, mudou completamente a situação. Eles encontram bugs reais e descartam suposições não reproduzíveis. A propriedade chave de tal harness: na presença de interfaces e instruções corretas, ele cria e executa casos de teste reproduzíveis para verificar dinamicamente as hipóteses sobre bugs no código. Após corrigir o conjunto inicial de problemas enviados à Mozilla pela Anthropic em fevereiro, a Mozilla criou seu próprio harness sobre a infraestrutura de fuzzing existente.
A Mozilla começou com pequenos experimentos, direcionando o harness para encontrar fugas da sandbox com o Claude Opus 4.6. Mesmo com esse modelo, a Mozilla encontrou um número impressionante de vulnerabilidades anteriormente desconhecidas que exigiam raciocínio complexo sobre o código do mecanismo de vários processos do navegador. No início, a Mozilla observava o processo no terminal em tempo real, ajustando os prompts e a lógica. Após a depuração, a Mozilla paralelizou as tarefas em várias VMs efêmeras, cada uma das quais procurava bugs em um arquivo de destino específico e registrava os resultados em um bucket.
O subsistema de detecção é uma condição necessária, mas não suficiente. A escala exigiu a integração com o ciclo de vida completo de bugs de segurança: determinar o que procurar, onde procurar e o que fazer com os resultados. Este último inclui a deduplicação contra problemas conhecidos, rastreamento, triagem e envio de correções. O modelo é o núcleo do harness, mas todo o pipeline é necessário para funcionar em escala.
Harnesses podem ser reutilizados entre projetos, mas o pipeline é, por natureza, específico para cada projeto — ele reflete a semântica, as ferramentas e os processos de uma base de código específica. Sua construção exigiu iterações significativas em estreita colaboração com os engenheiros do Firefox, que analisaram os bugs recebidos.
Atualizando Modelos
Depois que o pipeline de ponta a ponta é construído, substituir os modelos à medida que eles aparecem se torna uma tarefa trivial. A construção antecipada do pipeline ajudou a Mozilla a encontrar bugs sérios em modelos publicamente disponíveis e permitiu que a avaliação do Claude Mythos Preview fosse executada imediatamente. Na experiência da Mozilla, a atualização do modelo melhora a eficiência de todo o pipeline simultaneamente: o sistema encontra melhor potenciais bugs, cria casos de teste de prova de conceito e formula a patologia e o impacto do que foi encontrado.
Além de corrigir 271 bugs detectados pelo Claude Mythos Preview na versão 150, a Mozilla lançou correções adicionais nas versões 149.0.2 e 150.0.1. A busca interna por bugs por outros métodos continua, e a Mozilla está vendo um aumento notável no número de relatórios externos nos últimos meses.
Em última análise, cada bug requer trabalho cuidadoso para ser corrigido corretamente. Lidar com um volume sem precedentes provou ser difícil — a equipe trabalhou sob grande carga nos últimos meses. Mais de 100 pessoas contribuíram com o código: escreveram e revisaram patches, construíram e dimensionaram o pipeline, fizeram triagem, testaram correções e gerenciaram o processo de lançamento.
Conclusões
Qualquer desenvolvedor de software pode executar um harness com um modelo moderno para encontrar bugs e fortalecer seu código. Recomenda-se começar agora. Você encontrará bugs e estará pronto para usar novos modelos à medida que eles aparecerem.
Você pode começar com os prompts mais simples, observar e iterar. Os prompts iniciais da Mozilla foram semelhantes aos descritos aqui. No processo de iteração, a Mozilla construiu a orquestração e as ferramentas para otimizar e dimensionar, mas a essência do ciclo interno permaneceu a mesma: há um bug neste trecho de código — encontre-o e construa um caso de teste.
Atualmente, a varredura se concentra em seções específicas do código (arquivos, funções) que a Mozilla especifica ao sistema com base em uma combinação de julgamento especializado e sinais automáticos. No futuro próximo, a Mozilla pretende integrar essa análise no sistema CI para varredura de patches à medida que eles são adicionados à árvore. Os modelos são bastante flexíveis em relação à forma do contexto fornecido, e a Mozilla espera que a varredura baseada em patches funcione tão bem, ou possivelmente melhor, do que a varredura baseada em arquivos.
🛡️⚡
Pare de pesquisar. Comece a hackear.
O MundiX é seu copiloto de pentest com IA: comandos exatos, análise de outputs e próximo passo na kill chain — em segundos.
Sem cartão para começar · Planos a partir de R$49/mês
Como a Mozilla Encontrou 271 Vulnerabilidades no Firefox com o Claude Mythos
A Mozilla anunciou recentemente a descoberta e correção de um número recorde de vulnerabilidades ocultas no Firefox, utilizando o Claude Mythos Preview e outros modelos de IA. Este artigo detalha a abordagem, os resultados e oferece conselhos para outros projetos que desejam aplicar essas técnicas.
Bugs Tornaram-se Repentinamente de Melhor Qualidade
Há alguns meses, relatórios de segurança gerados por IA em projetos de código aberto eram, em sua maioria, inúteis. Responder a relatórios que parecem plausíveis, mas são falhos, é um fardo assimétrico: gerar um "problema" é barato, mas resolvê-lo é caro. A mudança na qualidade dos relatórios de segurança gerados por IA foi notável nos últimos meses. Dois fatores desempenharam um papel simultaneamente: os modelos se tornaram significativamente mais poderosos e as técnicas de gerenciamento foram aprimoradas.
Normalmente, relatórios detalhados de bugs permanecem fechados por vários meses após a liberação de correções e a publicação de avisos de segurança, como uma medida para proteger usuários que atualizam lentamente. Dado o enorme interesse no tópico e a urgência do que está acontecendo no ecossistema, a Mozilla decidiu divulgar uma pequena amostra de relatórios que sustentam os patches lançados recentemente. A amostra tenta cobrir diferentes subsistemas do navegador, embora permaneça um tanto arbitrária. No entanto, a profundidade e a diversidade desses relatórios reforçam a avaliação das capacidades e o apelo aos defensores para que comecem a aplicar essas técnicas:
ID do Bug
Descrição
2024918
Verificação de igualdade incorreta permite que o JIT otimize a inicialização de uma estrutura WebAssembly GC ativa, criando um primitivo de objeto falso com potencial leitura/gravação arbitrária no código que passou por fuzzing intensivo por pesquisadores internos e externos.
2024437
Bug de 15 anos no elemento <legend>, reproduzível por uma orquestração cuidadosamente construída de casos extremos de partes remotas do navegador: limites de profundidade de pilha de recursão, propriedades expando e coleta de ciclos.
2021894
Exploração confiável de uma condição de corrida via IPC: um processo de conteúdo comprometido manipula as contagens de referência do IndexedDB no pai, provocando um UAF e uma potencial fuga da sandbox.
2022034
Um valor bruto NaN que cruza a fronteira do IPC pode se mascarar como um ponteiro JS marcado para um objeto. A dupla desserialização se transforma em um primitivo de objeto falso no processo pai para fuga da sandbox.
2024653
Um caso de teste sofisticado que passa por loops de eventos aninhados, ouvintes de pagehide e coletor de lixo, provoca um UAF no atributo setter do elemento <object>.
2022733
Inicia um UAF no processo pai através da inundação do WebTransport com milhares de hashes de certificados para estender uma condição de corrida em um ciclo de cópia pesado em contagens de referência; usado via IPC de um processo de conteúdo comprometido.
2023958
Emula um servidor DNS malicioso, interceptando chamadas de funções DNS glibc para reproduzir um caso limite de fallback UDP→TCP, provocando uma leitura excessiva de buffer e vazamento de memória de pilha do processo pai durante a análise de HTTPS RR e ECH.
2025977
Bug de 20 anos no XSLT: chamadas key() reentrantes causam uma re-hash da tabela hash, liberando seu armazenamento de apoio enquanto um ponteiro bruto ainda aponta para a gravação (um dos vários bugs de alta segurança no XSLT).
2027298
Corrige o seletor de cores para simular uma seleção de usuário que, de outra forma, não seria automatizada, então usa um evento de entrada síncrono para girar um loop de evento aninhado, reentrando na desmontagem do ator e liberando um callback durante sua execução — UAF no processo de conteúdo.
2023817
Um processo de conteúdo comprometido poderia enviar uma imagem arbitrária para decodificação no processo pai; isso poderia ser combinado com uma vulnerabilidade hipotética no decodificador de imagem para escapar da sandbox. Foi necessário um raciocínio difícil de automatizar sobre o nível de confiança dos dados de entrada no processo pai.
2029813
Fuga de nossa tecnologia de isolamento no processo para bibliotecas de terceiros (RLBox) através de uma lacuna na lógica de verificação ao copiar valores da parte não confiável da sandbox para a confiável.
2026305
Um caso de teste mínimo que explora a semântica especial de rowspan=0 em tabelas HTML: adicionar >65.535 linhas ignora a limitação e estoura um bitfield de layout de 16 bits — não detectado por fuzzers por anos.
Uma série de bugs são fugas da sandbox que exigem combinação com outros exploits para a completa comprometimento do Firefox. Nesses relatórios, presume-se que o processo de renderização isolado já esteja comprometido por algum bug separado e esteja executando código de máquina controlado pelo atacante, tentando elevar os privilégios ao nível do processo pai. Ao construir um modelo de fuga da sandbox, é permitido corrigir o código-fonte do Firefox — desde que o código modificado seja executado apenas no processo isolado. Esses bugs são tradicionalmente extremamente difíceis de detectar por fuzzing, e embora a Mozilla tenha desenvolvido novas técnicas, a análise por IA fornece uma cobertura significativamente mais completa dessa superfície crítica.
Tão interessante quanto isso é o que os modelos não encontraram — não porque não tentaram, mas porque não conseguiram contornar a defesa em camadas do Firefox. Por exemplo, há alguns anos, a Mozilla recebeu relatórios de pesquisadores que conseguiram escapar da sandbox, provocando a poluição do protótipo no processo pai privilegiado. Em vez de corrigir esses problemas um por um, a Mozilla fez uma mudança arquitetônica, congelando esses protótipos por padrão. Ao estudar os logs do harness, a Mozilla viu inúmeras tentativas de usar esse vetor, bloqueadas por essa solução. Observar o retorno direto de decisões anteriores de fortalecimento foi ainda mais agradável do que encontrar e corrigir novos bugs.
Construindo um Pipeline Baseado em Modelos
Por vários anos, a Mozilla experimentou a auditoria de código via LLM: as primeiras tentativas com GPT-4 e Sonnet 3.5 para análise estática de código arriscado mostraram algum potencial, mas a alta porcentagem de falsos positivos tornou a escala impraticável. A chegada de harnesses baseados em agentes, capazes de detectar problemas de segurança de forma confiável, mudou completamente a situação. Eles encontram bugs reais e descartam suposições não reproduzíveis. A propriedade chave de tal harness: na presença de interfaces e instruções corretas, ele cria e executa casos de teste reproduzíveis para verificar dinamicamente as hipóteses sobre bugs no código. Após corrigir o conjunto inicial de problemas enviados à Mozilla pela Anthropic em fevereiro, a Mozilla criou seu próprio harness sobre a infraestrutura de fuzzing existente.
A Mozilla começou com pequenos experimentos, direcionando o harness para encontrar fugas da sandbox com o Claude Opus 4.6. Mesmo com esse modelo, a Mozilla encontrou um número impressionante de vulnerabilidades anteriormente desconhecidas que exigiam raciocínio complexo sobre o código do mecanismo de vários processos do navegador. No início, a Mozilla observava o processo no terminal em tempo real, ajustando os prompts e a lógica. Após a depuração, a Mozilla paralelizou as tarefas em várias VMs efêmeras, cada uma das quais procurava bugs em um arquivo de destino específico e registrava os resultados em um bucket.
O subsistema de detecção é uma condição necessária, mas não suficiente. A escala exigiu a integração com o ciclo de vida completo de bugs de segurança: determinar o que procurar, onde procurar e o que fazer com os resultados. Este último inclui a deduplicação contra problemas conhecidos, rastreamento, triagem e envio de correções. O modelo é o núcleo do harness, mas todo o pipeline é necessário para funcionar em escala.
Harnesses podem ser reutilizados entre projetos, mas o pipeline é, por natureza, específico para cada projeto — ele reflete a semântica, as ferramentas e os processos de uma base de código específica. Sua construção exigiu iterações significativas em estreita colaboração com os engenheiros do Firefox, que analisaram os bugs recebidos.
Atualizando Modelos
Depois que o pipeline de ponta a ponta é construído, substituir os modelos à medida que eles aparecem se torna uma tarefa trivial. A construção antecipada do pipeline ajudou a Mozilla a encontrar bugs sérios em modelos publicamente disponíveis e permitiu que a avaliação do Claude Mythos Preview fosse executada imediatamente. Na experiência da Mozilla, a atualização do modelo melhora a eficiência de todo o pipeline simultaneamente: o sistema encontra melhor potenciais bugs, cria casos de teste de prova de conceito e formula a patologia e o impacto do que foi encontrado.
Além de corrigir 271 bugs detectados pelo Claude Mythos Preview na versão 150, a Mozilla lançou correções adicionais nas versões 149.0.2 e 150.0.1. A busca interna por bugs por outros métodos continua, e a Mozilla está vendo um aumento notável no número de relatórios externos nos últimos meses.
Em última análise, cada bug requer trabalho cuidadoso para ser corrigido corretamente. Lidar com um volume sem precedentes provou ser difícil — a equipe trabalhou sob grande carga nos últimos meses. Mais de 100 pessoas contribuíram com o código: escreveram e revisaram patches, construíram e dimensionaram o pipeline, fizeram triagem, testaram correções e gerenciaram o processo de lançamento.
Conclusões
Qualquer desenvolvedor de software pode executar um harness com um modelo moderno para encontrar bugs e fortalecer seu código. Recomenda-se começar agora. Você encontrará bugs e estará pronto para usar novos modelos à medida que eles aparecerem.
Você pode começar com os prompts mais simples, observar e iterar. Os prompts iniciais da Mozilla foram semelhantes aos descritos aqui. No processo de iteração, a Mozilla construiu a orquestração e as ferramentas para otimizar e dimensionar, mas a essência do ciclo interno permaneceu a mesma: há um bug neste trecho de código — encontre-o e construa um caso de teste.
Atualmente, a varredura se concentra em seções específicas do código (arquivos, funções) que a Mozilla especifica ao sistema com base em uma combinação de julgamento especializado e sinais automáticos. No futuro próximo, a Mozilla pretende integrar essa análise no sistema CI para varredura de patches à medida que eles são adicionados à árvore. Os modelos são bastante flexíveis em relação à forma do contexto fornecido, e a Mozilla espera que a varredura baseada em patches funcione tão bem, ou possivelmente melhor, do que a varredura baseada em arquivos.
📤 Compartilhar & Baixar
🧰 Ferramentas recomendadas
Divulgação: alguns links são patrocinados. Podemos receber comissão se você comprar — sem custo extra para você. Só indicamos o que faz sentido para a comunidade.