La propuesta de las extensiones Safe C++ está destinada a hacer que C++ sea seguro sin reescribir el código.
La comunidad de C++ ha presentado una propuesta destinada a mejorar la seguridad en la programación con este lenguaje. Tras dos años de discusiones sobre los problemas de seguridad de la memoria, los desarrolladores han presentado el proyecto Safe C++ Extensions , que ayudará a los programadores a escribir código más seguro.
La propuesta incluye nuevas funciones que permiten prevenir vulnerabilidades relacionadas con la seguridad de la memoria, como el desbordamiento de búfer (Buffer Overflow) y el uso de memoria después de liberarla (Use-After-Free, UAF). Según las palabras de Vinnie Falco, presidente de C++ Alliance, este es un paso importante para el ecosistema del lenguaje, ya que la necesidad de mejorar la seguridad del código nunca ha sido tan urgente.
Durante los últimos dos años, diversas organizaciones, tanto del sector público como privado, han instado persistentemente al uso de lenguajes con soporte para la seguridad de la memoria. En particular, se ha prestado atención a lenguajes como C#, Go, Java, Python y Swift, así como a Rust, conocido por su rendimiento y su capacidad para la programación de sistemas de bajo nivel.
La cuestión de la seguridad de la memoria fue planteada ya en 2019 por el ingeniero de software Alex Gaynor, quien señaló que la mayoría de las vulnerabilidades graves en grandes bases de código están relacionadas precisamente con problemas de seguridad de la memoria. Un ejemplo de ello son los desbordamientos de búfer y los errores de uso de memoria liberada, que a menudo provocan fallos en los programas.
Para 2022, las discusiones sobre la seguridad de la memoria se habían convertido en el tema central en conferencias técnicas y trabajos académicos. En septiembre de ese año, el director técnico de Microsoft Azure, Mark Russinovich, propuso abandonar el uso de C y C++ en favor de Rust. Y en 2023, la cuestión de la seguridad de la memoria ya estaba en boca del público en general, incluidas organizaciones como la NSA y otras.
Sin embargo, el creador del lenguaje C++, Bjarne Stroustrup, afirmó que su lenguaje puede garantizar la seguridad total de tipos y memoria, aunque estas afirmaciones generaron escepticismo entre algunos expertos. El cofundador del Internet Security Research Group (ISRG), Josh Aas, en 2023 señaló que, a pesar de la posibilidad teórica de garantizar la seguridad, en la práctica real, C++ no fue diseñado originalmente para esto.
El proyecto Safe C++ Extensions es una respuesta a las críticas y a las demandas de agencias gubernamentales como la NSA, CISA y DARPA para mejorar la seguridad del código. Sin embargo, incluso entre los defensores de la idea, hay dudas sobre lo realista que es hacer que C++ sea tan seguro como Rust u otros lenguajes. Alex Gaynor, por ejemplo, expresó su opinión de que resolver completamente el problema de la seguridad de la memoria en C++ es difícil, aunque es posible lograr algunas mejoras.
Los desarrolladores Sean Baxter (creador del compilador Circle ) y Kristian Mazakas de C++ Alliance reconocen que Rust ofrece garantías estrictas de seguridad de la memoria, pero la transición a él puede resultar complicada. C++ y Rust son muy diferentes en cuanto a funcionalidad, lo que dificulta la interoperabilidad de estos lenguajes y la automatización del proceso de migración.
El proyecto Safe C++ propone el uso de nuevas herramientas para prevenir las vulnerabilidades más comunes. Baxter explicó que, a diferencia de los enfoques anteriores, Safe C++ no solo sigue las mejores prácticas, sino que ofrece soluciones como el análisis en la fase de compilación para prevenir errores de uso de memoria liberada y el análisis de inicialización para mejorar la seguridad de tipos.
El objetivo principal del proyecto es hacer que la seguridad de la memoria sea accesible, manteniendo al mismo tiempo la capacidad de trabajar con el código existente en C++. Los desarrolladores pueden ir implementando gradualmente nuevas funciones de seguridad, lo que hace que el proyecto sea más flexible y rentable en comparación con la reescritura completa de programas en otro lenguaje.
Para la implementación de Safe C++ será necesario seguir contando con la participación de la comunidad de desarrolladores y de la industria. Sin embargo, según Baxter, el proyecto ya ha logrado importantes avances. En un futuro próximo, se planea un análisis detallado de todas las funciones de C++ y su adaptación a los nuevos estándares de seguridad.