4 pontos por GN⁺ 2024-04-06 | Ainda não há comentários. | Compartilhar no WhatsApp
  • 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.

Ainda não há comentários.