O Google revelou um novo recurso chamado V8 Sandbox em seu navegador Chrome para resolver problemas de corrupção de memória, com o objetivo de proteger contra vulnerabilidades.
“Depois de quase três anos desde o documento de design inicial e centenas de CLs entretanto, o V8 Sandbox – um leve, sandbox em processo para V8 — agora progrediu ao ponto em que não é mais considerado um recurso de segurança experimental. Começando hoje, o V8 Sandbox está incluído no programa de recompensa de vulnerabilidade do Chrome (PRV),” o anúncio oficial disse.
A caixa de areia V8 explicada
A caixa de areia V8, desenvolvido pelo líder técnico de segurança V8, Samuel Groß, foi projetado para evitar que a corrupção da memória se espalhe dentro do processo host. Este leve, sandbox em processo tem como alvo o mecanismo JavaScript e WebAssembly, mitigando comum Vulnerabilidades V8.
O conceito por trás do V8 Sandbox é limitar o impacto das vulnerabilidades do V8, limitando o código executado pelo V8 a um subconjunto específico do processo.’ espaço de endereço virtual, isolando-o do resto do processo.
Resolvendo vulnerabilidades V8
O Google tem lutado com um número significativo de vulnerabilidades de dia zero decorrentes de deficiências do V8, com até 16 falhas de segurança detectadas entre 2021 e 2023. A equipe do Chromium destacou que o sandbox pressupõe a capacidade de um invasor modificar a memória dentro do espaço de endereço do sandbox e visa proteger o restante do processo contra tais ataques.
Samuel Groß enfatizou as complexidades de lidar com as vulnerabilidades do V8, citando desafios com a mudança para linguagens seguras de memória, como Rust ou abordagens de segurança de memória de hardware devido à natureza sutil dos problemas de corrupção de memória.
Funcionalidade do Sandbox V8
O V8 Sandbox foi projetado para isolar a memória heap do V8 para evitar que qualquer corrupção de memória escape dos limites de segurança e afete outras partes do processo’ memória. Ao substituir tipos de dados que podem acessar a memória fora da área restrita por “compatível com sandbox” alternativas, a sandbox restringe efetivamente o acesso não autorizado à memória por invasores.
Habilitar o sandbox é simples, exigindo que os usuários definam “v8_enable_sandbox” para true no gn args.
Impacto e implementação no desempenho
Os resultados de benchmark do Speedometer e JetStream indicam que o V8 Sandbox incorre em uma sobrecarga mínima de aproximadamente 1% em cargas de trabalho típicas. Esta avaliação de desempenho abriu caminho para ativar o recurso por padrão, começando com a versão do Chrome 123 em várias plataformas, incluindo Android, ChromeOS, Linux, Mac OS, e Windows.
Samuel Groß observou que o sandbox necessita de um sistema de 64 bits devido à necessidade de uma reserva substancial de espaço de endereço virtual, atualmente totalizando um terabyte.
Avançando na segurança da memória
A adoção do sandbox pelo Google ressalta as limitações das tecnologias existentes de segurança de memória na otimização de mecanismos JavaScript. Embora essas tecnologias sejam insuficientes na prevenção da corrupção de memória no V8, eles desempenham um papel crítico na proteção da superfície de ataque do V8 Sandbox.
O desenvolvimento está alinhado com os esforços mais amplos de segurança cibernética do Google, incluindo o aproveitamento do Kernel Address Sanitizer (KASan) para detectar erros de memória no código nativo e melhorar a segurança do firmware Android. As compilações habilitadas para KASan são fundamentais para identificar vulnerabilidades de corrupção de memória e problemas de estabilidade antes que afetem os dispositivos do usuário.
Em conclusão, a introdução do V8 Sandbox representa um avanço significativo na melhoria da postura de segurança do Chrome e na mitigação de vulnerabilidades relacionadas ao V8.