Introdução
- Este post de blog explica o processo de descoberta das vulnerabilidades CVE-2024-6778 e CVE-2024-5836 no navegador Chromium.
- Essas vulnerabilidades permitem escapar da sandbox por meio de extensões do navegador.
- O Google pagou $20,000 por esse relatório de bugs.
WebUIs e a sandbox do Chrome
- O Chromium executa código não confiável em um ambiente de sandbox, permitindo apenas interações limitadas.
- WebUI é usada para exibir a GUI do Chromium e tem permissão para acessar APIs internas específicas.
- O código executado em páginas WebUI pode contornar a sandbox, o que pode ser explorado por um atacante.
Políticas empresariais
- O sistema de políticas empresariais do Chromium serve para impor determinadas configurações em dispositivos pertencentes a empresas ou escolas.
- As políticas de usuário se aplicam a um usuário específico ou a uma instância do navegador e podem ser definidas localmente.
WebUI de políticas
- O Chromium tem uma WebUI para visualizar as políticas atualmente aplicadas ao dispositivo.
- Existe nessa página uma funcionalidade não oficial que permite editar políticas.
Exploração da página de teste de políticas
- Foi encontrada uma menção à página de teste de políticas nas notas de lançamento do Chrome v117.
- Essa página oferece uma forma não oficial de definir políticas.
Escape da sandbox
- É possível escapar da sandbox explorando a funcionalidade que permite definir políticas de usuário arbitrárias.
- É possível executar comandos de shell arbitrários usando o recurso de alternância de navegador.
Exploração da API do DevTools
- Foi encontrado um método para executar JS automaticamente na página
chrome://policy por meio de uma extensão maliciosa do Chrome.
- A API
chrome.devtools.inspectedWindow.reload() pode ser usada para executar código em uma página WebUI.
Conclusão
- Isso mostra como erros simples, quando se acumulam, podem levar a uma vulnerabilidade de alta severidade.
- Código antigo nem sempre é seguro, e é preciso considerar a possibilidade de bugs semelhantes ocorrerem.
Resumo do GN⁺
- Este post de blog explica em detalhes o processo de descoberta e relato de uma vulnerabilidade no Chromium.
- A vulnerabilidade permite escapar da sandbox por meio de extensões do navegador, e rendeu uma recompensa de $20,000 do Google.
- O texto oferece informações úteis para pesquisadores de segurança e engenheiros de software, além de lições para evitar vulnerabilidades semelhantes.
- Como outro projeto com funcionalidades semelhantes, pode-se recomendar os recursos de segurança do Firefox.
1 comentários
Comentários do Hacker News
Isso me lembrou de quando eu depurava o shell "crosh" no Chrome OS e usei a mesma API para contornar as proteções do sistema operacional e obter acesso root. O autor deste texto superou obstáculos ainda mais difíceis. Excelente trabalho
Para evitar que a URL da página seja substituída por ${url}, dá para colocá-la depois de # e transformá-la em comentário. Fico me perguntando se existe alguma lógica de validação sobre se a URL deve ser passada para
AlternativeBrowserParametersExcelente artigo e excelente trabalho. Deu para sentir junto a empolgação do processo de descoberta. Recompensa merecida
Uma cadeia de vulnerabilidades muito legal e um ótimo texto. A análise do código vulnerável também foi muito boa. Sempre fico impressionado com truques simples como "pressione F12 para tentar novamente"
Está tarde demais para eu mergulhar fundo nos problemas de validação do WebUI, mas deixo meus parabéns para quem resolveu isso. É comum suspeitarmos e desconfiarmos das toolchains em relação ao que distribuímos, mas ao mesmo tempo colocamos confiança demais nas ferramentas de desenvolvimento convenientes de grandes empresas como Google ou MS. Em grande parte porque queremos nos concentrar em escrever e testar nosso próprio código
Sinceramente, uma das melhores coisas que já li. Trabalho investigativo extremamente inteligente
Dizem que Allen é um estudante do ensino médio interessado em programação, desenvolvimento web e cibersegurança. Muito impressionante
O projeto Chromium decidiu remover
chrome://net-internalsporque a página era complexa demais. E depois adicionouchrome://policy, oferecendo suporte incompleto para edição de JSONTexto realmente muito bom, pareceu um thriller. Excelente cadeia de vulnerabilidades