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.

from Linux Adictos https://ift.tt/JxRvIoD
via IFTTT