El imperio de C++ contraataca con la propuesta de C++ seguro

Tras dos años de presión en torno a la seguridad de la memoria, la comunidad de C++ ha presentado una propuesta para ayudar a los desarrolladores a escribir código más seguro. Este nuevo enfoque, denominado Extensiones Seguras para C++, tiene como objetivo abordar uno de los principales problemas del lenguaje: la prevención de fallos relacionados con la seguridad de la memoria, como los desbordamientos de búfer y los errores de uso después de liberar memoria.

Según Vinnie Falco, presidente de la C++ Alliance, esta propuesta representa un hito importante en el ecosistema de C++, ya que la necesidad de código seguro es más urgente que nunca. En los últimos años, tanto el sector privado como el público han impulsado el uso de lenguajes más seguros, como Rust, C#, Go y Python, debido a su capacidad para minimizar estos errores comunes en lenguajes como C y C++.

La discusión sobre la seguridad de la memoria en C++ no es nueva. En 2019, el ingeniero de software Alex Gaynor destacó que la mayoría de las vulnerabilidades críticas en grandes bases de código se derivan de fallos en la gestión de la memoria. Esto ha motivado a empresas tecnológicas y entidades gubernamentales a exigir que los proyectos futuros se desarrollen en lenguajes seguros desde el punto de vista de la memoria.

En 2022, el director de tecnología de Microsoft Azure, Mark Russinovich, llegó a pedir la deprecación de C y C++ en favor de Rust, un lenguaje que garantiza una gestión segura de la memoria sin necesidad de recolección de basura. Poco después, la NSA y otras agencias gubernamentales respaldaron esta postura.

No obstante, figuras clave del mundo C++, como su creador Bjarne Stroustrup, defendieron la posibilidad de lograr un C++ seguro sin necesidad de cambiar de lenguaje. Sin embargo, esta afirmación fue recibida con escepticismo por algunos expertos, quienes argumentaron que, aunque teóricamente posible, lograr esta seguridad en el uso real del lenguaje es complicado.

Las Extensiones Seguras para C++ buscan precisamente responder a estas críticas y satisfacer la demanda creciente de la seguridad en la memoria. Los desarrolladores detrás de la propuesta, Sean Baxter y Christian Mazakas, sostienen que aunque lenguajes como Rust son más seguros, migrar grandes bases de código escritas en C++ a Rust plantea desafíos significativos. Entre las dificultades citan la falta de características clave en Rust, como la sobrecarga de funciones, herencia y excepciones, mientras que C++ carece de algunos mecanismos de seguridad avanzados de Rust, como el sistema de préstamos y la verificación de reubicación de objetos.

Para hacer frente a estas limitaciones, la propuesta incluye nuevas herramientas como el control de préstamos en tiempo de compilación y el análisis de inicialización, que impedirían que los desarrolladores escribieran código inseguro. Esto permitiría garantizar la seguridad en la memoria sin necesidad de reescribir completamente los proyectos en otros lenguajes, lo que conllevaría altos costos.

El próximo paso para las Extensiones Seguras para C++ requiere una mayor participación de la industria para implementar y perfeccionar estas herramientas. Los desarrolladores detrás de la propuesta creen que, con el apoyo adecuado, C++ puede volverse un lenguaje mucho más seguro sin perder su rendimiento y flexibilidad.

El objetivo final es proporcionar las mismas garantías de seguridad que Rust, pero a un costo más bajo y sin la necesidad de migrar o reentrenar a los desarrolladores veteranos de C++. Con esta solución, el código existente puede seguir funcionando como siempre, mientras los equipos optan por adoptar la seguridad de manera incremental.

Las últimas noticias en nuestro podcast semanal

Comentarios

No hay comentarios aún. ¿Por qué no comienzas el debate?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.