El gobierno de los Estados Unidos ha hecho un curioso nuevo esfuerzo para evitar a estar expuesto a amenazas de ciberseguridad. No se trata aquí de evitar usar equipos de Huawei o de buscar malware chino infiltrado en sus bases militares, sino que ahora lo que quiere es evitar que los programadores usen ciertos lenguajes de programación. Y ese es precisamente el problema.
Ni C ni C++. La llamada Office of the National Cyber Director (ONCD) es un organismo de la Casa Blanca, y sus responsables han realizado una singular petición: la de que los desarrolladores de este país no utilicen los lenguajes de programación C y C++.
Por favor, usad lenguajes "seguros para la memoria". El argumento es que estos dos lenguajes son inseguros por su gestión de la memoria, algo que los excluye de las recomendaciones de este organismo. El informe publicado por sus responsables es parte de la nueva estrategia de ciberseguridad del presidente Biden y tiene como objetivo "asegurar los componentes básicos del ciberespacio".
Ciertamente hay riesgos. En 2019 ingenieros de seguridad de Microsoft indicaron que el 70% de las vulnerabilidades de seguridad se debían a problemas de seguridad de la gestión de la memoria. En 2020 Google reveló datos similares que afectaban a su navegador de código abierto Chromium.
Hay "docenas" de lenguajes más seguros. El citado informe hace esas recomendaciones y cita esos dos lenguajes, pero además indica que hay otros muchos que son "lenguajes de programación seguros para la memoria y que pueden —y deberían— ser utilizados".
Estos son los lenguajes "seguros". Según este organismo, los lenguajes de programación seguros para la memoria y recomendados son los siguientes:
- Rust
- Go
- C#
- Java
- Swift
- JavaScript
- Ruby
- Python
- Delphi/Object Pascal
- Ada
En esa lista hay lenguajes realmente populares como Python —que lidera las listas de popularidad desde hace tiempo—, y también opciones muy queridas por los desarrolladores como Rust.
Pero C y C++ son demasiado usados. El problema de esa recomendación es que aunque se aplique a nuevos desarrollos, es mucho más difícil aplicarlo a los ya existentes. De hecho, el lenguaje C es absoluto protagonista en el sistema operativo Linux que, recordemos, domina en el ámbito de los servidores. Es cierto que hay esfuerzos dirigidos a aumentar el uso de Rust en el kernel Linux, pero aún así la relevancia del lenguaje C en el resto del sistema es demasiado importante para plantear cambios importantes a corto o medio plazo.
Windows, por su parte, está programado con C++ y su kernel está desarrollado en C, mientras que macOS está desarrollado sobre todo con Objective-C y el kernel está escrito en su mayoría en C y algunos segmentos de código directamente en ensamblador.
Una vieja cantinela. El actual informe nos recuerda al que hace un año publicó la NSA con el mismo mensaje. En aquel momento Bjarne Stroustrup, creador del lenguaje C++ en 1979, acusó a la agencia de simplificar demasiado la situación:
"Ahora bien, si considerase que uno de esos lenguajes 'seguros' es superior a C++ para la gama de usos que me interesan, no vería la desaparición de C/C++ como algo negativo, pero no es el caso. Tal como se describe [por la NSA] 'seguro' se limita a la seguridad de la memoria, dejando de lado una docena de formas distintas en que un lenguaje podría (y será) usado para violar cualquier clase de protección".
Para este experto, los problemas de seguridad se podrían mitigar "combinando varios estilos de programación, bibliotecas complementarias y aplicaciones de análisis estático". Puede que ciertamente haya alternativas más interesantes desde el punto de vista de la gestión de la memoria, pero será difícil que la popularidad de C o C++ se vea especialmente afectada por el informe de la ONCD.
Imagen | Aaron Kittredge
Ver 10 comentarios