EE. UU. finalmente ha declarado la guerra a C y C++...
Las principales agencias de ciberseguridad de EE. UU., CISA y NSA, publicaron un informe conjunto en el que instan a los programadores a adoptar los llamados lenguajes memory-safe. Este término se refiere a tecnologías que protegen de forma nativa contra fallos críticos relacionados con la gestión de la memoria, uno de los tipos de vulnerabilidades más peligrosos y comunes.
El documento destaca que los errores relacionados con el acceso incorrecto a la memoria siguen siendo una de las principales amenazas tanto para los usuarios comunes como para los sistemas de información críticos. Rust, Go, C#, Java, Swift, Python y JavaScript utilizan recolección de basura o realizan una comprobación estática de la asignación de memoria ya en la etapa de compilación. Estos mecanismos ayudan a reducir significativamente la probabilidad de que aparezcan vulnerabilidades.
Sin embargo, los sistemas más populares —C y C++— no proporcionan de forma predeterminada tales mecanismos de protección. En teoría, los desarrolladores pueden minimizar los riesgos aplicando análisis estático del código y siguiendo estrictamente los estándares de programación segura. Pero en la práctica, no todos prestan suficiente atención a estas medidas.
Además, incluso si la mayor parte del programa se desarrolla cumpliendo con los requisitos modernos, el uso de bibliotecas en C o C++ conectadas a través de la llamada Foreign Function Interface (FFI) puede anular por completo las medidas de seguridad. Estos descuidos son especialmente peligrosos, ya que afectan a proyectos que, en apariencia, parecen completamente fiables.
La magnitud del problema también la confirman las mayores empresas de tecnología. Según datos de Google, en 2018, el 90% de todos los fallos críticos de seguridad en Android estuvieron relacionados con el mal uso de la memoria. En el navegador Chromium, según datos de 2021, más del 70% de las vulnerabilidades fueron de este tipo. A esta categoría pertenecía el tristemente célebre fallo Heartbleed en la biblioteca criptográfica OpenSSL, que permitía a los atacantes acceder a datos fuera del área de memoria asignada.
Incluso el fallo relativamente reciente en la infraestructura en la nube de Google Cloud, ocurrido en junio de este año, resultó estar relacionado con un problema clásico: la ausencia de comprobación de punteros nulos. En la práctica, este tipo de fallos provoca interrupciones o crea puntos de entrada para ataques en sistemas donde el control de la memoria no es lo suficientemente estricto.
Por eso, los gigantes tecnológicos tienen razones de peso para apoyar cada vez más activamente la implantación de lenguajes seguros. Ya en 2022, Microsoft recomendó oficialmente desarrollar nuevas aplicaciones en Rust u otras tecnologías similares. En 2023, las instituciones gubernamentales se sumaron a estas iniciativas. La directora de CISA, Jen Easterly, declaró públicamente la necesidad de que la industria migre hacia soluciones más seguras.
Aunque el proceso de adaptación no está exento de dificultades. Durante el último año, la comunidad de desarrolladores del núcleo de Linux ha protagonizado acalorados debates sobre la integración de drivers escritos en Rust. Los partidarios de C y C++ también proponen alternativas: han surgido proyectos como TrapC, FilC, Mini-C y Safe C++, destinados a mejorar la seguridad del código sin abandonar las tecnologías tradicionales. Al mismo tiempo, Google está perfeccionando la protección de la memoria en C++, intentando no sacrificar el rendimiento.
Según el nuevo informe de CISA y NSA, la transición completa a lenguajes seguros requiere tiempo, inversiones y recursos humanos. Esto resulta especialmente complicado para las organizaciones cuyo código contiene una gran cantidad de componentes obsoletos o se utiliza en infraestructuras críticas. Sin embargo, las ventajas —desde la reducción de posibles vulnerabilidades hasta el aumento de la fiabilidad general del software— hacen que estos cambios sean inevitables.
Ya existen ejemplos de éxito en la aplicación de estos enfoques. Así, gracias a la transición gradual de Android hacia lenguajes más seguros, en 2024 la proporción de vulnerabilidades relacionadas con la memoria se redujo al 24%.
Las autoridades estadounidenses también promueven sus propias iniciativas para acelerar el proceso. El programa DARPA TRACTOR (Translating All C to Rust) tiene como objetivo crear herramientas automáticas para convertir proyectos existentes en C a Rust, minimizando el trabajo manual. Investigadores de Princeton, UC Berkeley y UC San Diego desarrollan el proyecto Omniglot, que permitirá una interacción segura entre el código Rust y bibliotecas de terceros a través de FFI.
CISA y NSA subrayan que el gobierno no confía solo en sus propios programas, sino también en la actividad de las empresas privadas. Entre las medidas propuestas se encuentra la promoción de ofertas de empleo que requieran experiencia en lenguajes de programación seguros, con el fin de aumentar el número de especialistas cualificados y acelerar la implantación de los nuevos estándares.
Según Google, la transición de C++ a Rust ha duplicado la productividad de los programadores, mientras que Microsoft está integrando activamente Rust en Windows y desarrollando drivers basados en este lenguaje.