Está en un boletín del 20 de noviembre de 2022 sobre la seguridad de la memoria del software, que La Agencia de Inteligencia de los Estados Unidos (NSA), recomendó que no use C ++Asesor de las empresas para optar por los idiomas que se protegen mejor los recuerdos. Pero Bjarne Stroustrup defiende el venerable lenguaje de programación que diseñó en 1979. Para comenzar, el creador de C ++ recordó los esfuerzos realizados durante décadas para mejorar el lenguaje y hacerlo más seguro y más eficiente. "En particular, el trabajo sobre las instrucciones básicas del C ++ apunta específicamente a proporcionar un C ++ garantizado estáticamente, seguro en términos de tipos y recursos, para las personas que lo necesitan, sin perturbar las bases de código que pueden administrarse sin estos Garantías sólidas o introducir canales de herramientas adicionales ”, dice.
El documento de la NSA aconseja el uso de C/C ++ porque, incluso si los programadores a menudo realizan pruebas rigurosas para garantizar que el código sea seguro, los problemas de memoria en el software siempre están muy involucrados en la explotación de vulnerabilidades. "La NSA aconseja a las empresas que dejen de lado los idiomas que ofrecen poca o ninguna protección inherente de la memoria, como C/C ++, y que prefieran un lenguaje seguro para la memoria cuando sea posible", dijo la agencia. Como ejemplo, la NSA cita idiomas como C#, GO, Java, Ruby, Rust y Swift. Según la agencia, si hay idiomas comúnmente utilizados, como C y C ++, ofrecen libertad y flexibilidad en la gestión de la memoria, se basan fuertemente en el programador para llevar a cabo controles en las referencias de memoria.
Una mezcla C y C ++ dañino
Pero Bjarne Stroustrup insiste en las mejoras realizadas a la seguridad. "Si considerara que uno de estos idiomas" seguros "era más alto que C ++ para los muchos casos de uso que me interesan, acomodaría la disminución de C/C ++, pero este no es el caso". Agrega "como se describe, el término" seguro "se limita a la seguridad de la memoria, dejando de lado una docena de otras formas de que un idioma podría (y se usará) para violar una cierta forma de seguridad y seguridad".
También deplora la nota de la NSA que asocia a C ++ con el antiguo lenguaje C ++, que originalmente se llamaba C con clases, es una extensión de C. "Como suele ser el caso, la agencia reúne C y C ++ En la categoría C/C ++ solo, ignorando más de 30 años de progreso ", agregó el creador de C ++. En un correo electrónico enviado la semana pasada, el Sr. Stroustrup agregó: "Sí, demasiadas personas hablan sobre el legendario lenguaje C/C ++, pero con demasiada frecuencia se centran en las debilidades de la Parte C. Estas debilidades se pueden evitar en gran medida gracias al El uso de la tecnología C con clases.
Una seguridad de los idiomas con geometría variable
En este correo electrónico, Bjarne Stroustrup también compartió su definición de seguridad. Como entiende, la seguridad del C ++ apunta a los tipos y recursos, en los que cada objeto se usa de acuerdo con su tipo y no huye los recursos. Para el C ++, esto implica una cierta verificación del alcance de las funciones en el momento de la ejecución, la eliminación del acceso a través de punteros pendientes y el uso no abusivo de fundiciones y uniones. "El C ++ ofrece instalaciones de alto nivel, como contenedores, funcionamiento, formas de alcance y variantes que pueden ofrecer garantías sin dañar la productividad o la eficiencia". En cuanto a los idiomas seguros que se encuentran en la SO citados por la NSA, el Sr. Stroustrup dijo que todos estos idiomas son vulnerables porque su código no es estático. "Además, cada sistema debe usar hardware, y el acceso efectivo al equipo rara vez es seguro", agregó.
Aquí está la estrategia recomendada por Bjarne Stroustrup para usar C ++ de manera segura:
- Análisis estático para verificar que no se ejecute ningún código sin sentido.
- Reglas de codificación para simplificar el código con el fin de hacer posible el análisis estático a escala industrial.
- Bibliotecas para que este código simplificado sea razonablemente fácil de escribir y garantizar los controles de ejecución necesarios.
Según Bjarne Stroustrup, hay millones de desarrolladores de C ++ y miles de millones de líneas de código C ++. El lenguaje se utiliza actualmente en campos como aeroespacial, instrumentación médica, IA/ML, gráficos, biomedicina, física de alta energía, etc. La NSA ha reconocido que la gestión de la memoria no es del todo segura, incluso en un lenguaje "seguro para la memoria", y que los mecanismos como las pruebas de seguridad de aplicaciones estáticas (SAST) y las pruebas de seguridad para la dinámica de las aplicaciones (DAST) pueden usarse para mejorar la seguridad de la memoria en los idiomas de "memoria no segura". "Pero ni el SAST ni el DAST pueden hacer un código no garantizado por memoria, completamente seguro", dijo NSA.
Otras noticias que te pueden interesar