Los desarrolladores del proyecto Chromium Se identificaron 912 vulnerabilidades peligrosas y críticas en las versiones estables de Chrome desde 2015, y se llegó a la conclusión de que el 70% de ellas fueron provocadas por un manejo inseguro de la memoria (errores al trabajar con punteros en código C/C++). La mitad de estos problemas (36.1%) fueron causados por accesos a un búfer después de liberar la memoria asociada (use-after-free).
Al diseñar Chromium, se consideró desde un inicio Para mantener la seguridad de la base de código, Google también aplica la "
regla de dosPara fortalecer aún más la seguridad de la base de código, se ha lanzado un proyecto para prevenir la aparición de errores en el manejo de la memoria en la base de código. Se destacan tres enfoques principales: la creación de bibliotecas C++ con funciones para un manejo seguro de la memoria y la expansión del ámbito de aplicación del recolector de basura, la aplicación de mecanismos de protección de hardware
MTE Se espera que el trabajo se concentre en dos direcciones:
Un cambio significativo en el proceso de desarrollo en C++, que no excluirá un impacto negativo en el rendimiento (verificaciones adicionales de límites y recolección de basura). En lugar de punteros raw, se propone utilizar en el código el tipo
- MiraclePtr , lo que permite reducir los errores explotables de tipo use-after-free a fallos que no suponen una amenaza para la seguridad, sin un impacto negativo significativo en el rendimiento, consumo de memoria y estabilidad.
- El uso de lenguajes que permiten realizar verificaciones de seguridad de memoria durante la compilación (lo que evitará el impacto negativo en el rendimiento, típico de tales verificaciones durante la ejecución del código, pero conllevará costos adicionales para organizar la interacción del código en un nuevo idioma con el código en C++).
El uso de bibliotecas para el manejo seguro de la memoria es el método más sencillo, pero también el menos eficiente. Reescribir el código en Rust se considera el enfoque más eficaz, aunque también es muy costoso.
Fuente: opennet.ru
