Hace unos días nos hacíamos eco de la polémica desatada por el llamamiento de la Casa Blanca para que los desarrolladores de software abandonasen el uso de lenguajes de programación como C y C++ debido a preocupaciones sobre su seguridad en lo relativo a la gestión de la memoria. Ahora, Google ha lanzado una declaración detallada sobre su perspectiva en este tema crucial como uno de los grandes representantes de Silicon Valley.
El llamamiento de la Casa Blanca, basado en un informe de la Oficina del Director Nacional de Ciberseguridad (ONCD), destaca la necesidad de una transición hacia lenguajes de programación que prevengan vulnerabilidades tan comunes como los desbordamientos de búfer, mediante restricciones en la manipulación directa de la memoria.
A pesar de reconocer los desafíos asociados con esta transición, especialmente dada la extensa base de código existente en lenguajes como C y C++, el informe sugería que era necesario emprender un cambio para mejorar la seguridad del software crítico... y que eso pasaba por impulsar lenguajes como Rust, Go, Java o C#.
Google tiene un favorito claro para sustituir a C++, pero aún no
El 'Projecto Zero' de Google se dedica a identificar y abordar vulnerabilidades de seguridad de tipo 'zero-day' (es decir, de aquellas que los atacantes empiezan a explotar antes de que las conozcas los desarrolladores) y, según sus estudios, dos de cada tres exploits 'zero-day' aprovechan precisamente problemas de seguridad relacionados con la memoria. De hecho, han sido una táctica comúnmente utilizada por los cibercriminales durante décadas.
Una vez puesto sobre la mesa este dato, Google 'entra en harina':
"No vemos la posibilidad de una hoja de ruta realista para que C++ pueda evolucionar hacia un lenguaje con rigurosas garantías de seguridad de memoria".
"Basándonos en esta experiencia, esperamos que la seguridad de la memoria de alta garantía sólo se pueda lograr a través de un enfoque de 'seguridad por diseño' centrado en la adopción integral de lenguajes con rigurosas garantías de seguridad de la memoria".
"Como consecuencia, estamos considerando llevar a cabo una transición gradual hacia lenguajes 'seguros para la memoria', como Java, Go y Rust".
Has ahí, un respaldo absoluto a los posicionamientos del gobierno de Biden. Pero, claro, Google se enfrenta a los mismos problemas que otras muchas compañías que han señalado lo impracticable de la sugerencia de la Casa Blanca:
"Durante las últimas décadas, además de las grandes bases de código Java y Go con seguridad de memoria, Google ha desarrollado y acumulado cientos de millones de líneas de código C++ que está en uso activo y en desarrollo activo y continuo. Esta gran base de código existente genera desafíos importantes para una transición".
"Una reescritura a gran escala de todo el código C++ existente en un lenguaje diferente y seguro para la memoria parece muy difícil y probablemente seguirá siendo una solución poco práctica".
De modo que su solución se resume en el siguiente párrafo:
"Consideramos importante complementar la transición a lenguajes seguros para desarrollar código nuevo con llevar a cabo mejoras de seguridad para el código C++ existente, en la medida de lo posible. Creemos que se pueden lograr mejoras sustanciales a través de una transición incremental a un subconjunto de lenguaje C++ parcialmente seguro para la memoria, aumentado con características de seguridad de hardware cuando estén disponibles".
En resumen, comprar los muebles nuevos en otra tienda e ir parcheando y apuntalando los viejos como se pueda.
Un par de semanas antes del comunicado de la Casa Blanca, Google ya había publicado su propio artículo comentando sus proyectos (y su respaldo a proyectos ajenos) para reforzar la biblioteca estándar o la pila de virtualización de red de C++. Esa es la base de su propuesta de parcheo y apuntalamiento.
Pero, ¿en qué 'tienda' piensa 'comprar' Google su nuevo código? Bueno, la apuesta de Google está clara, y es el lenguaje Rust.
Así, el artículo recuerda el reciente anuncio de la compañía de subvencionar con un millón de euros a la Fundación Rust para mejorar la interoperabilidad con el código C++ ("Esto facilitará la adopción incremental de Rust en bases de código existentes"), su apoyo financiero a la implementación del soporte de Rust en el kernel de Linux o su desarrollo de varios componentes de Android usando Rust en los últimos años.
Imagen | Marcos Merino mediante IA
En Genbeta | Qué es Rust y por qué Elon Musk piensa que será el lenguaje con el que crearemos la 'IA General'
Ver 20 comentarios