Temos o prazer de apresentar uma série de blogues de análise técnica centrados em várias vulnerabilidades e exposições comuns (CVE), identificadas e corrigidas com as nossas tecnologias avançadas de deteção de ameaças.Toda a investigação é realizada pelos estudantes de pós-graduação que participam no programa OPSWAT Cybersecurity Fellowship, lançado em setembro de 2023.
Neste blogue, explicaremos o CVE-2019-13720 do Google Chrome e como as organizações podem defender-se contra ataques de exploração do CVE-2019-13720.
O que é o Google Chrome e quando foi fundado?
O Google Chrome é um navegador Web multiplataforma desenvolvido pela Google e lançado oficialmente a 2 de setembro de 2008. Foi desenvolvido como parte dos esforços da Google para criar um navegador melhor e mais moderno. Na altura, oferecia muitas funcionalidades novas, incluindo a navegação por separadores, o modo de privacidade e a sincronização com os serviços Google. Desde o seu lançamento, tornou-se num dos navegadores Web mais populares em todo o mundo. A partir de 2021, estima-se que o Google Chrome tenha cerca de 3,2 mil milhões de utilizadores.
Devido à popularidade do Google Chrome, este tornou-se um ponto focal para investigação e ataques, atraindo tanto hackers éticos como hackers maliciosos. As vulnerabilidades comuns identificadas no Google Chrome incluem a negação de serviços (DoS), a fuga de informações e a execução remota de código, entre outras. Relativamente à vulnerabilidade de Execução Remota de Código, existem dois tipos para este problema no Google Chrome: escape da caixa de areia e não escape.
O que é o CVE-2019-13720?
A CVE-2019-13720 é uma vulnerabilidade Use After Free (UAF) do WebAudio no Google Chrome antes da versão 78.0.3904.87 que permite a um atacante remoto explorar potencialmente a corrupção de heap através de uma página HTML criada. Quando a vítima acede a uma página Web maliciosa ou abre uma página HTML criada num navegador Google Chrome vulnerável, o código malicioso é executado no ponto final da vítima. Este CVE foi relatado pela primeira vez por Anton Ivanov e Alexey Kulaev em 2019.
Do ponto de vista técnico, uma vulnerabilidade use-after-free pode ser explorada devido a uma condição de corrida entre os threads Render e Audio no componente de áudio do Qt WebEngine que permite que atacantes remotos executem código shell WebAssembly, levando ao comprometimento do dispositivo da vítima. A resolução para este problema é que todos os utilizadores do Qt WebEngine actualizem para a versão mais recente.
As fases de ataque
Os atacantes criam um URL especial com o HTML malicioso e enviam um e-mail de phishing com a ligação para a vítima. Quando a vítima abre o e-mail e clica na ligação, o código malicioso é executado e permite que o atacante assuma o controlo do sistema afetado. Os detalhes das tácticas de código remoto, tal como aparecem num documento HTML, podem ser consultados aqui.
O que são as vulnerabilidades Use After Free (UAF) e heap spray?
Uma vulnerabilidade UAF é um tipo de falha de segurança que ocorre quando um programa continua a utilizar a memória depois de esta ter sido libertada. Isto pode levar a várias consequências adversas, incluindo corrupção de dados, execução arbitrária de código e falhas no sistema.
A pulverização da heap é uma técnica de entrega de carga útil que implica a escrita de vários bytes em diferentes locais da heap. Isto envolve a injeção de uma carga útil criada (ou seja, dados nocivos) na pilha de memória, garantindo que o fluxo de execução salta para a memória pulverizada em vez do código original da aplicação. O objetivo deste ataque é, normalmente, obter controlo sobre o registo EIP.
O que é o WebAssembly?
O WebAssembly, muitas vezes abreviado como Wasm, é um novo formato de instruções binárias que serve como um alvo portátil para a compilação de linguagens de alto nível como C/C++, permitindo que sejam executadas a uma velocidade quase nativa no motor JavaScript de um navegador Web.
No entanto, uma vez que o WebAssembly pode ser compilado a partir de linguagens que não são seguras em termos de memória, como o C/C++, podem ser introduzidas vulnerabilidades de codificação comuns, como transbordos de memória intermédia ou vulnerabilidades de cadeias de formatação, nos binários WebAssembly compilados de forma cruzada. Este potencial de inclusão de vulnerabilidades nos módulos WebAssembly aumentou a superfície de ataque das aplicações Web contemporâneas.
O que é uma vulnerabilidade de condição de corrida?
Uma vulnerabilidade de condição de corrida no software surge quando vários processos ou threads tentam aceder simultaneamente a um recurso partilhado, causando resultados imprevisíveis ou interrupções operacionais devido ao momento do acesso. Quando um programa tem uma vulnerabilidade de condição de corrida, pode levar a vários problemas, como falhas na aplicação, corrupção de dados, resultados incorrectos ou inconsistências. Os atacantes podem explorar esta vulnerabilidade para obter acesso não autorizado, vazar informações, aumentar privilégios ou induzir falhas no sistema.
Categorizada como uma vulnerabilidade de condição de corrida, uma vulnerabilidade TOCTTOU explora o intervalo de tempo entre a verificação e a utilização de um recurso.
Como funciona o CVE-2019-13720?
Para explorar esta vulnerabilidade, o investigador anexa código JavaScript a um ficheiro HTML. Quando um utilizador inicia o ficheiro HTML, o script tenta encontrar o endereço com fuga de informação criando duas threads (thread principal e thread de áudio) que lidam com os mesmos dados de buffer. O endereço de fuga do objeto temporary_buffer_object no ReverbConvolverStage é então utilizado para obter o ponteiro do feedforward_array no IIRFilterNode (que partilha a mesma superpágina com o Convolver). Em seguida, o investigador tenta obter o ponteiro da matriz feedforward_array no segundo UAF de ativação.
O WebAssembly trata da execução do código shell. Para permitir a execução do código da shell, o investigador tenta libertar o IIRFilter e escreve no GCPreventer até obter controlo sobre o local onde são feitas novas alocações sem necessidade de sprays. Finalmente, o pesquisador escreve o shellcode na região Just-In Time (JIT) da memória. Consequentemente, após a adição de um evento de erro do leitor de ficheiros, o módulo WebAssembly executará o código shell.
Para executar o código shell associado a esta vulnerabilidade, o utilizador tem de desativar a caixa de areia na versão vulnerável do Chrome.
Quando o código shell é executado, abre automaticamente os serviços do Notepad no dispositivo da vítima.
Método de remediação
MetaDefender EndpointO MetaDefender Endpoint, uma solução de segurança de endpoint concebida pela OPSWAT, permite aos utilizadores detetar e defender os seus sistemas contra estes ataques. Depois de o utilizador desativar a funcionalidade Privacy Sandbox (--no-sandbox), MetaDefender Endpoint pode detetar CVEs e aplicar os últimos patches do Google Chrome. Depois disso, o utilizador pode atualizar o Google Chrome para a versão mais recente manualmente ou ativar a funcionalidade "auto-update" no separador Patch Management para permitir queMetaDefender Endpoint OPSWAT actualize automaticamente o navegador assim que novos patches estiverem disponíveis.
Para evitar a exposição a código malicioso, os utilizadores devem utilizar ferramentas de filtragem de correio eletrónico para detetar ataques de phishing e evitar clicar em URLs desconhecidos nas mensagens de correio eletrónico.
MetaDefender Endpoint Principais caraterísticas e benefícios do produto
- Revisar e corrigir aplicativos em risco. Aplicativos vulneráveis ou desatualizados podem ser visualizados na interface de usuário MetaDefender Endpoint .
- Verifique se a proteção anti-malware está corretamente configurada no sistema operativo.
- Assegurar a conformidade com as normas de segurança da organização.
- Garantia de encriptação do disco rígido.
- Verificação de patches do sistema operativo.
- Múltiplas opções para a verificação de malware e para fazer anúncios sem malware em terminais.
MetaDefender Endpoint for Endpoint Vulnerability and Application Patching pode ser descarregado aqui.
Referência
- https://nvd.nist.gov/vuln/detail/CVE-2019-13720
- https://bugs.chromium.org/p/chromium/issues/detail?id=1019226
- https://www.w3.org/TR/webaudio/
- https://security.gentoo.org/glsa/202004-04
- https://www.cve.org/CVERecord?id=CVE-2019-13720
- https://packetstormsecurity.com/files/167066/Google-Chrome-78.0.3904.70-Remote-Code-Execution.html
- https://devopedia.org/race-condition-software
- https://webassembly.org/
- https://www.researchgate.net/figure/WebAssembly-high-level-architecture_fig1_360232889
- https://www.researchgate.net/publication/331990070_Native_Web_Audio_API_Plugins
- https://whitehat.vn/threads/gioi-thieu-ky-thuat-khai-thac-exploit-heap-spray.5056/
- https://www.opswat.com/