Nuevo episodio en la sempiterna disputa sobre si es más seguro el código abierto o el código propietario: un reciente informe titulado Exploring Memory Safety in Critical Open Source Projects y elaborado conjuntamente por la Agencia de Seguridad de Infraestructura y Ciberseguridad (CISA) de los Estados Unidos, el FBI, el Centro de Ciberseguridad de la Dirección de Señales de Australia (ASD’s ACSC) y el Centro Canadiense de Ciberseguridad (CCCS), apunta a la prevalencia de vulnerabilidades de seguridad de la gestión de la memoria en los proyectos críticos de código abierto.
Muchos de estos proyectos son los que se encuentran en la base del funcionamiento de la actual Internet, con servidores y clientes de varios servicios clave, como la web, aunque no sólo. Los sistemas operativos, con un buque insignia como es GNU/Linux (aunque no es el único), también forman parte de esta base de la actual red de redes.
El documento destaca que las vulnerabilidades de seguridad de la memoria se encuentran entre las más comunes y, además, son las que tienen un coste económico asociado más elevado, afectando tanto a fabricantes como a los simples consumidores. Este coste económico se concreta en el coste de la respuesta a incidentes, el desarrollo y distribución de parches, o el remedio a los daños causados, entre otras facturas a pagar.
Para comparar los proyectos propietarios y de código abierto, las agencias coautoras del estudio analizaron un conjunto de proyectos críticos de código abierto para determinar en qué medida están escritos en lenguajes que no disponen de mecanismos de seguridad apropiados para la gestión de la memoria. Dichos lenguajes requieren que sean los desarrolladores quienes gestionen adecuadamente la asignación, uso y liberación de la memoria, lo que puede dar lugar a vulnerabilidades como desbordamientos de búfer y uso después de liberar, si no se gestiona correctamente.
La explotación exitosa de dichas vulnerabilidades puede permitir a un atacante escalar privilegios e incluso acabar tomando el control de un ordenador.
El análisis se centró en una lista de 172 proyectos derivados del Grupo de Trabajo de Seguridad de Proyectos Críticos de la Open Source Security Foundation (OpenSSF). De estos proyectos, se observó que el 52% contienen código escrito en un lenguaje que posee una gestión de la memoria considerada como insegura, y que el 55% del total de las líneas de código (LoC) están escritas en uno de dichos lenguajes.
El informe concluye que la mayoría de los proyectos críticos de código abierto analizados, incluso aquellos escritos en lenguajes seguros para la memoria, potencialmente contienen vulnerabilidades de seguridad de la memoria debido, entre otros factores, a dependencias externas de proyectos que utilizan estos lenguajes. Además, los requisitos funcionales de bajo nivel que deshabilitan la seguridad de la memoria pueden crear oportunidades para vulnerabilidades de seguridad de la memoria en código escrito en lenguajes que, de otro modo, sí serían seguros.
No obstante, no todo en este informe son malas noticias para la comunidad del software libre: en él también se destaca el esfuerzo de dicha comunidad para promocionar las buenas prácticas de seguridad en la gestión de la memoria que hacen las aplicaciones, y menciona explícitamente esfuerzos como el proyecto Prossimo, cuyo objetivo es mover la infraestructura de software que sea sensible para la seguridad de Internet, hacia una base de código seguro para la memoria, así cómo la herramienta OSS-Fuzz de Google, que evoluciona para detectar problemas en lenguajes tanto seguros como inseguros para la memoria.
Las agencias que firman el presente informe recomiendan que los fabricantes de software desarrollen hojas de ruta para la seguridad de la memoria que incluyan planes para abordar los problemas que puedan surgir con componentes de código abierto.