Bjarne Stroustrup responde a la recomendación de la NSA y contradice la clasificación de C++
Bjarne Stroustrup, el creador del lenguaje C++, publicó objeciones a los hallazgos del informe de la NSA, que recomendaba que las organizaciones se alejaran del uso de lenguajes de programación como C y C++, que trasladan la gestión de la memoria al desarrollador, a favor de los lenguajes como C#, Go, Java, Ruby, Rust y Swift que brindan administración de memoria automÔtica o realizan comprobaciones de seguridad de la memoria en tiempo de compilación.
SegĆŗn Stroustrup, los lenguajes seguros mencionados en el informe de la NSA no son realmente superiores a C++ en aplicaciones importantes desde su punto de vista.
La NSA aconseja a las organizaciones que consideren hacer un cambio estratégico de los lenguajes de programación que proporcionar poca o ninguna protección de memoria inherente, como C/C++, a un lenguaje seguro para la memoria
cuando sea posible
En particular, las Directrices bĆ”sicas de C++, que se han desarrollado en los Ćŗltimos aƱos, cubren mĆ©todos para una programación segura y prescriben el uso de herramientas que garantizan un trabajo seguro con tipos y recursos. Sin embargo, los desarrolladores que no requieren garantĆas de seguridad tan sólidas pueden continuar utilizando mĆ©todos de desarrollo mĆ”s antiguos.
Stroustrup cree que un buen analizador estĆ”tico que cumpla con las Directrices principales de C++ puede proporcionar las garantĆas de seguridad necesarias para el código C++ a un costo mucho menor que cambiar a nuevos lenguajes de programación seguros.
Por ejemplo, la mayorĆa de las Directrices principales ya estĆ”n implementadas en el analizador estĆ”tico y el perfil seguro para la memoria de Microsoft Visual Studio. Algunas de las recomendaciones tambiĆ©n se tienen en cuenta en el analizador estĆ”tico Clang tidy.
El informe de la NSA también fue criticado por centrarse solo en problemas de memoria, dejando sin abordar muchos otros problemas del lenguaje de programación que afectan la seguridad y la confiabilidad.
Desafortunadamente, gran parte del uso de C++ tambiĆ©n estĆ” atascado en el pasado distante, ignorando las mejoras, incluidas las formas de mejorar drĆ”sticamente la seguridad. Ahora, si considerara cualquiera de esos lenguajes Ā«segurosĀ» superiores a C++ para la gama de usos que me interesan, no considerarĆa la desaparición de C/C++ como algo malo, pero ese no es el caso.
Bjarne Stroustrup no estĆ” de acuerdo con el hecho de que la publicación de la NSA limita la noción de proteger el software a la de proteger la memoria.Ā En realidad, este aspecto es un denominador comĆŗn de todas las publicaciones que aconsejan desechar C o C++ en favor del lenguaje Rust por las garantĆas de seguridad del software que varias grandes empresas (Microsoft, Amazon, etc.) lo reconocen.
āNo existe una definición Ćŗnica de āseguridadā y podemos lograr una variedad de tipos de seguridad a travĆ©s de una combinación de estilos de programación, bibliotecas de soporte y aprovechamiento del anĆ”lisis estĆ”ticoā, dice.Ā Bjarne Stroustrup sugiere asĆ que lo que se puede obtener de C++ en tĆ©rminos de seguridad del software depende, entre otras cosas, del desarrollador y, en particular, del conocimiento de las herramientas que ofrece el lenguaje, su dominio del compilador, etc.
Stroustrup ve la seguridad como un concepto mÔs amplio, cuyas diversas facetas se pueden lograr mediante una combinación de estilo de codificación, bibliotecas y analizadores estÔticos. Para controlar la inclusión de reglas que garanticen la seguridad de trabajar con tipos y recursos, se propone utilizar anotaciones en el código y opciones del compilador.
En aplicaciones donde el rendimiento es mÔs importante que la seguridad, este enfoque permite el uso selectivo de herramientas que garantizan la seguridad solo donde se necesita. Las herramientas de mejora de la seguridad también se pueden aplicar parcialmente, como limitar primero las reglas de verificación e inicialización del rango y luego adaptar gradualmente el código a requisitos mÔs estrictos.
Finalmente si estÔs interesado en poder conocer mÔs al respecto sobre la publicación del creador de C++, puedes consultar los detalles en el siguiente enlace.