¿Pueden los lenguajes de programación seguros para la memoria eliminar el 70% de los errores de seguridad?

Un hombre sentado frente a una computadora

La Oficina del Director Nacional de Cibernética (ONCD) publicó recientemente un nuevo informe, "Back to the Building Blocks: A Path Toward Secure and Measurable Software". El informe es uno de los primeros anuncios importantes del nuevo director de la ONCD, Harry Coker, y presenta argumentos sólidos a favor de la adopción de lenguajes de programación seguros para la memoria.

Este nuevo enfoque se deriva del objetivo de reequilibrar la responsabilidad de la ciberseguridad y realinear los incentivos a favor de las inversiones en ciberseguridad a largo plazo. Los lenguajes de programación seguros para la memoria también se incluyeron como un objetivo de la Iniciativa de Seguridad de Software de Código Abierto (OS3I), que recientemente publicó un nuevo informe.

¿Qué son los lenguajes de programación seguros para la memoria?

Los errores de memoria se producen cuando un programador escribe código que causa un problema relacionado con el acceso a la memoria. Los errores comunes ocurren con desbordamientos de búfer y punteros colgantes. Al utilizar un lenguaje de programación seguro para la memoria, como Rust, Go, Java, Swift y Python, los desarrolladores no pueden crear código que cause un error de memoria porque el lenguaje incluye propiedades específicas, como la memoria o la seguridad de tipos. Cuando los desarrolladores escriben código en lenguajes que no son seguros para la memoria, como C y C++, pueden escribir código sin darse cuenta que puede causar errores de acceso a la memoria. En lugar de detectar los errores durante la compilación y el tiempo de ejecución, como ocurre con los lenguajes seguros para la memoria, los errores llegan a la versión final y provocan problemas de seguridad.

Si bien la ciberseguridad a menudo se enfoca en reaccionar ante las amenazas, la reducción del riesgo comienza con la creación de prácticas que reduzcan los errores de código que pueden crear problemas de seguridad. Google informó que el 70% de los errores graves de seguridad son en realidad problemas de seguridad de la memoria. Los lenguajes de programación ampliamente empleados como C y C++ suelen ser los responsables de muchos de estos problemas, especialmente debido a errores de puntero.

El uso de un lenguaje seguro para la memoria reduce significativamente o elimina totalmente las vulnerabilidades de memoria segura. Esto, a su vez, reduce el riesgo de ciberseguridad del código final. Además de mejorar la seguridad, los lenguajes con memoria segura también reducen los fallos y permiten a los desarrolladores aumentar su productividad, ya que no tienen que centrarse en cuestiones relacionadas con la gestión de la memoria.

Las últimas noticias tecnológicas, respaldadas por los insights de expertos

Manténgase al día sobre las tendencias más importantes e intrigantes de la industria sobre IA, automatización, datos y más con el boletín Think. Consulte la Declaración de privacidad de IBM.

¡Gracias! Ya está suscrito.

Su suscripción se entregará en inglés. En cada boletín, encontrará un enlace para darse de baja. Puede gestionar sus suscripciones o darse de baja aquí. Consulte nuestra Declaración de privacidad de IBM para obtener más información.

El informe de la ONCD describe dos objetivos relacionados con los lenguajes seguros para la memoria.

Reducir los errores de memoria es una cuestión compleja que requiere un enfoque múltiple. El informe se centra en lograr que las organizaciones se centren en dos áreas específicas relacionadas con los lenguajes seguros para la memoria. Además, el gobierno quiere centrarse en crear asociaciones con la comunidad técnica, especialmente ingenieros y desarrolladores, para colaborar en la realización de este cambio clave.

Estos son los dos objetivos principales descritos en la hoja informativa publicada con el informe:

1. Reducción de la superficie de ataque en el ciberespacio

Un área de ataque más pequeña significa menor riesgo. Cada línea de código que crea vulnerabilidades amplía considerablemente el  área de superficie de ataque. Un solo error que causa un error de memoria segura puede crear una gran cantidad de vulnerabilidades. El informe recomienda utilizar un lenguaje de programación seguro para la memoria como una de las formas más eficaces de reducir la superficie de ataque. Con estos lenguajes, los programadores no pueden cometer los errores que conducen a aumentar la superficie de ataque a través de errores de memoria.

2. Anticipar el riesgo de seguridad sistémico

Muchas organizaciones no pueden evaluar con precisión el riesgo de su software porque utilizar métricas en un software en constante cambio es extremadamente complicado. Si bien la mensurabilidad del software es un desafío complejo, el cambio comienza pasando de ser reactivo a ser proactivo. Al desarrollar mejores diagnósticos para la calidad de la ciberseguridad, las organizaciones pueden identificar con mayor precisión los riesgos y arreglarlos de forma proactiva.

Mixture of Experts | 12 de diciembre, episodio 85

Decodificación de la IA: Resumen semanal de noticias

Únase a nuestro panel de ingenieros, investigadores, responsables de producto y otros profesionales de talla mundial que se abren paso entre el revuelo de la IA para ofrecerle las últimas noticias e insights al respecto.

La realidad de la transición a memoria segura

Si bien es fácil decir que las organizaciones deben usar lenguajes seguros para la memoria, la realidad es que esta transición es complicada. Muchos programas y bibliotecas de software se basan en lenguajes no seguros para memoria y seguridad, y reescribir completamente toda la base de código a menudo simplemente no es factible.

Comenzar un nuevo proyecto con un lenguaje de programación seguro para la memoria, siempre que sea posible, es la forma más sencilla de comenzar la transición. Las organizaciones también pueden reducir la superficie de ataque sin una reescritura total al reescribir solo las funciones críticas y las bibliotecas que corren mayor riesgo de sufrir errores seguros para la memoria, que a menudo incluyen áreas con desbordamientos de búfer y punteros colgantes. Algunos lenguajes seguros para la memoria, como Rust y Swift, son interoperables con C y C++, lo que hace que este enfoque sea factible. Al adoptar este enfoque, las organizaciones deben integrar los sistemas de compilación y crear abstracciones en el nuevo lenguaje para objetos y datos compartidos.

Sin embargo, hacer esta transición requiere los recursos de desarrollador adecuados. Las organizaciones deben comenzar por evaluar a su equipo de desarrolladores actual para determinar qué experiencia tiene actualmente el equipo en términos de lenguajes seguros para la memoria. El siguiente paso es capacitar a los desarrolladores actuales y garantizar que los nuevos desarrolladores dominen los lenguajes seguros para la memoria.

Avanzando con lenguajes de programación seguros para la memoria

Con el creciente interés por la ciberseguridad, muchas organizaciones se están dando cuenta de que el paso más importante es pasar de un enfoque reactivo a uno proactivo. Al volver al principio y centrarse en crear código seguro, las organizaciones pueden reducir significativamente su riesgo. Si bien no es un proceso simple ni rápido, los beneficios de hacer este cambio son significativos y duraderos.