Eliminar a causa raiz das vulnerabilidades de segurança de memória
Resultado paradoxal
- Quando uma base de código escrita em linguagens sem segurança de memória cresce, migrar novos recursos para linguagens com segurança de memória reduz significativamente as vulnerabilidades de segurança de memória
- Isso acontece porque as vulnerabilidades diminuem exponencialmente ao longo do tempo
Explicação matemática
- O tempo de vida das vulnerabilidades segue uma distribuição exponencial
- As vulnerabilidades surgem principalmente em código novo, e o código se torna mais seguro com o passar do tempo
- A densidade de vulnerabilidades em código com 5 anos é de 3,4 a 7,4 vezes menor do que em código novo
Caso real no Android
- Desde 2019, a equipe do Android começou a migrar o novo desenvolvimento para linguagens com segurança de memória
- Em 2024, as vulnerabilidades de segurança de memória caíram de 76% para 24%
- À medida que as vulnerabilidades de segurança de memória diminuíram, o risco total de segurança também caiu
Evolução da estratégia de segurança de memória
- 1ª geração: patches reativos — abordagem de descobrir e corrigir vulnerabilidades
- 2ª geração: mitigação proativa — abordagem de dificultar a exploração de vulnerabilidades
- 3ª geração: descoberta proativa de vulnerabilidades — abordagem de encontrar vulnerabilidades com antecedência
- 4ª geração: prevenção de alta confiança — abordagem de prevenir a própria ocorrência de vulnerabilidades ao migrar para linguagens com segurança de memória
Vantagens da prevenção de alta confiança
- Interrompe a competição sem fim entre defensores e atacantes
- Aumenta a segurança e reduz custos com linguagens seguras em memória
- Melhora a correção do código e a produtividade dos desenvolvedores
Das lições à prática
- Não é necessário descartar nem reescrever todo o código legado sem segurança de memória
- Melhorar a interoperabilidade acelera a migração para linguagens com segurança de memória
- Desenvolvimento de ferramentas para melhorar a interoperabilidade entre Rust e C++, e entre Rust e Kotlin
Papel das gerações anteriores
- Uso seletivo de mitigação e detecção proativas
- À medida que o código migra para código com segurança de memória, a necessidade de mitigação e detecção diminui
Conclusão
- Usar linguagens com segurança de memória em código novo faz as vulnerabilidades diminuírem exponencialmente
- Mais de 6 anos de resultados consistentes no Android comprovam a eficácia dessa abordagem
Resumo do GN⁺
- Migrar para linguagens com segurança de memória é importante para reduzir vulnerabilidades de segurança de memória
- O caso da equipe do Android mostra uma grande redução nas vulnerabilidades de segurança de memória
- Melhorar a interoperabilidade, em vez de reescrever completamente o código existente, é uma abordagem prática
- Usar linguagens seguras em memória, como Rust, pode aumentar ao mesmo tempo a segurança e a produtividade
1 comentários
Comentários no Hacker News