Bjarne Stroustrup, el creador del lenguaje C++, ha publicado objeciones contra las conclusiones presentadas en un informe de la NSA, donde se recomendaba a las organizaciones distanciarse de ciertos lenguajes de programación, como C y C++, que delegan el control de la memoria al desarrollador, a favor de lenguajes como C#, Go, Java, Ruby, Rust y Swift, que garantizan la gestión automática de la memoria o realizan comprobaciones de seguridad de la memoria durante la compilación.
Según Stroustrup, los lenguajes seguros mencionados en el informe de la NSA no superan a C++ en aplicaciones importantes desde su punto de vista. En particular, las recomendaciones básicas desarrolladas en los últimos años para el uso de C++ (C++ Core Guidelines) abarcan métodos de programación segura y prescriben el uso de herramientas que garantizan un manejo seguro de tipos y recursos. Además, a los desarrolladores que no necesitan esas estrictas garantías de seguridad se les permite seguir utilizando métodos de desarrollo más antiguos.
Stroustrup considera que un buen analizador estático que cumpla con las recomendaciones de las C++ Core Guidelines puede proporcionar las garantías de seguridad necesarias para el código C++, requiriendo significativamente menos recursos en comparación con la transición a nuevos lenguajes de programación seguros. Por ejemplo, la mayoría de las recomendaciones de las Core Guidelines ya se han implementado en el analizador estático y en el perfil de seguridad de la memoria de Microsoft Visual Studio. Parte de las recomendaciones también han sido consideradas en el analizador estático Clang tidy.
El informe de la NSA también ha sido criticado por enfatizar únicamente los problemas de gestión de memoria, dejando de lado muchos otros problemas de los lenguajes de programación que afectan a la seguridad y a la fiabilidad. Stroustrup considera la seguridad como un concepto más amplio, cuyas diversas facetas pueden lograrse a través de la combinación del estilo de codificación, bibliotecas y analizadores estáticos. Se propone utilizar anotaciones en el código y opciones del compilador para gestionar la inclusión de reglas que garanticen un manejo seguro de tipos y recursos.
En aplicaciones donde el rendimiento es más importante que la seguridad, este enfoque permite la aplicación selectiva de medidas de seguridad solo donde sea necesario. Las herramientas de mejora de la seguridad también se pueden aplicar de manera parcial, por ejemplo, inicialmente limitándose a reglas de verificación de rangos e inicialización, y luego adaptando gradualmente el código para requisitos más estrictos.
Fuente: opennet.ru
