Eliminar la causa raíz de las vulnerabilidades de seguridad de memoria
Un resultado paradójico
- Cuando crece una base de código escrita en lenguajes sin seguridad de memoria, migrar las nuevas funcionalidades a lenguajes con seguridad de memoria reduce de forma significativa las vulnerabilidades de seguridad de memoria
- Esto se debe a que las vulnerabilidades disminuyen de manera exponencial con el tiempo
Explicación matemática
- La vida útil de las vulnerabilidades sigue una distribución exponencial
- Las vulnerabilidades se generan principalmente en el código nuevo, y con el tiempo el código se vuelve más seguro
- La densidad de vulnerabilidades en código con 5 años de antigüedad es entre 3.4 y 7.4 veces menor que en el código nuevo
Caso real en Android
- Desde 2019, el equipo de Android comenzó a trasladar el nuevo desarrollo a lenguajes con seguridad de memoria
- En 2024, las vulnerabilidades de seguridad de memoria se redujeron de 76% a 24%
- A medida que disminuyeron las vulnerabilidades de seguridad de memoria, también bajó el riesgo total de seguridad
Evolución de la estrategia de seguridad de memoria
- 1.ª generación: parches reactivos - un enfoque de encontrar y corregir vulnerabilidades
- 2.ª generación: mitigación preventiva - un enfoque para dificultar la explotación de vulnerabilidades
- 3.ª generación: detección preventiva de vulnerabilidades - un enfoque para encontrar vulnerabilidades por adelantado
- 4.ª generación: prevención de alta confianza - un enfoque para prevenir que las vulnerabilidades ocurran cambiando a lenguajes con seguridad de memoria
Ventajas de la prevención de alta confianza
- Rompe la competencia interminable entre defensores y atacantes
- Mejora la seguridad y reduce costos mediante lenguajes con seguridad de memoria
- Aumenta la corrección del código y la productividad de los desarrolladores
De las lecciones a la práctica
- No es necesario desechar ni reescribir todo el código existente sin seguridad de memoria
- Mejorar la interoperabilidad acelera la transición hacia lenguajes con seguridad de memoria
- Desarrollo de herramientas para mejorar la interoperabilidad entre Rust y C++, y entre Rust y Kotlin
El papel de las generaciones anteriores
- Uso selectivo de mitigación preventiva y detección
- A medida que se avanza hacia código con seguridad de memoria, disminuye la necesidad de mitigación y detección
Conclusión
- Usar lenguajes con seguridad de memoria en el código nuevo hace que las vulnerabilidades disminuyan de forma exponencial
- Más de 6 años de resultados consistentes en Android demuestran la efectividad de este enfoque
Resumen de GN⁺
- Es importante migrar a lenguajes con seguridad de memoria para reducir las vulnerabilidades de seguridad de memoria
- El caso del equipo de Android muestra una gran reducción en las vulnerabilidades de seguridad de memoria
- Mejorar la interoperabilidad es más práctico que reescribir por completo el código existente
- Usar lenguajes con seguridad de memoria como Rust puede mejorar al mismo tiempo la seguridad y la productividad
1 comentarios
Comentarios de Hacker News