- O sandbox do V8 é um sandbox leve, in-process, para o motor V8
- Agora saiu da fase experimental e foi incluído no Vulnerability Reward Program (VRP) do Chrome
- Ainda há problemas de segurança a serem resolvidos, e a versão 123 do Chrome pode ser considerada um lançamento "beta" do sandbox
Motivação
- A segurança de memória continua sendo um problema importante, e todos os exploits do Chrome descobertos nos últimos 3 anos começaram com vulnerabilidades de corrupção de memória no V8
- 60% dessas vulnerabilidades ocorreram no V8, mas a maioria não era um bug de corrupção de memória "típico", e sim problemas lógicos sutis
- A maioria das soluções atuais de segurança de memória não se aplica ao V8, e nem a migração para linguagens com segurança de memória, como Rust, nem recursos de hardware como memory tagging ajudam nos desafios de segurança do V8
Sandbox do V8 (heap)
- A ideia básica do sandbox é isolar a memória heap do V8 para que a corrupção de memória não "se espalhe" para outras partes do processo
- Ele poderia ser implementado com suporte de hardware, mas como atualmente não há recursos de hardware adequados, foi implementado por software
- O sandbox substitui os tipos de dados que podem acessar toda a memória externa por alternativas "compatíveis com o sandbox"
- Apenas o heap do V8 dentro do sandbox fica dentro dele, o que é semelhante ao modelo de sandboxing do WebAssembly
Desempenho
- A principal vantagem da abordagem de sandbox é que, basicamente, ela tem baixo custo
- O overhead causado pelo sandbox vem principalmente da indireção da tabela de ponteiros para objetos externos, e atualmente o overhead é inferior a 1% em cargas de trabalho típicas
Testes
- A testabilidade da fronteira de segurança significa, na prática, a capacidade de verificar manual e automaticamente se as garantias de segurança estão realmente sendo mantidas
- O sandbox do V8 atende a todos os requisitos: um modelo de atacante claro, uma forma de emular o atacante e um método de determinar automaticamente quando a fronteira de segurança falha
Uso
- O sandbox do V8 deve ser ativado/desativado em tempo de build usando a flag de build
v8_enable_sandbox.
- Ele está disponível apenas em sistemas de 64 bits e, no momento, exige a reserva de 1 terabyte de espaço de endereço virtual.
- O sandbox do V8 já vem ativado por padrão há cerca de 2 anos no Chrome de 64 bits para Android, ChromeOS, Linux, macOS e Windows.
Conclusão
- O sandbox do V8 é um novo mecanismo de segurança projetado para impedir que a corrupção de memória no V8 afete outras áreas de memória do processo
- As tecnologias atuais de segurança de memória em grande parte não se aplicam a motores JavaScript altamente otimizados, mas são eficazes para proteger a superfície de ataque do sandbox do V8
- O sandbox é um passo essencial rumo à segurança de memória
Opinião do GN⁺
- O sandbox do V8 é uma resposta moderna às vulnerabilidades de corrupção de memória, oferecendo uma solução para problemas que as tecnologias tradicionais de segurança de memória não conseguem resolver
- Considerando a complexidade dos motores JavaScript, esse sandbox desempenha um papel importante ao reforçar ainda mais a fronteira de segurança e melhorar a segurança de memória
- O baixo overhead de desempenho do sandbox pode ser atraente para desenvolvedores, o que deve ajudar em sua adoção ampla
- No entanto, a tecnologia de sandbox também pode introduzir vulnerabilidades de segurança completamente novas, e isso deve ser gerenciado com monitoramento e testes contínuos
- A implementação eficaz do sandbox desempenha um papel importante para impedir que atacantes propaguem a corrupção de memória para outras partes do sistema, o que contribuirá para fortalecer a segurança na web
Ainda não há comentários.