El creador del lenguaje C++ critico un informe de la NSA sobre lenguajes de programación seguros

bjarne-stroustrup

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.


AƱadir como fuente preferida en Google