Software oculto: el riesgo de dependencias no declaradas

Fuentes: Binary Dependencies: Identifying the Hidden Packages We All Depend On

El concepto de "Dependencias Binarias Fantasma" se refiere a una situación cada vez más común y preocupante en el desarrollo de software moderno. En esencia, son dependencias de bibliotecas o código precompilado (binarios) que un proyecto utiliza, pero que no se declaran explícitamente en los archivos de manifiesto del proyecto (como pyproject.toml o package.json). Esto ocurre frecuentemente cuando se utiliza código compilado, como C, desde lenguajes de alto nivel como Python. La falta de visibilidad de estas dependencias crea un problema significativo para la sostenibilidad y seguridad de la infraestructura tecnológica.

¿Por qué es importante? La principal preocupación radica en dos áreas: sostenibilidad y seguridad. En cuanto a la sostenibilidad, los mantenedores de proyectos de código abierto a menudo no reciben la compensación adecuada, lo que lleva a un agotamiento (burnout) y a la eventual desaparición de proyectos cruciales. Para apoyar financieramente a estos mantenedores, necesitamos saber de qué dependemos. Si no identificamos nuestras dependencias binarias, no podemos saber a quién apoyar. En el ámbito de la seguridad, las vulnerabilidades en las bibliotecas binarias que utilizamos pueden comprometer la seguridad de nuestros proyectos, especialmente aquellos que soportan infraestructuras críticas como hospitales o sistemas de transporte. La falta de visibilidad dificulta la identificación y corrección de estas vulnerabilidades.

¿Cómo funciona? Cuando un proyecto depende de código fuente, esta dependencia se registra en los archivos de manifiesto. Sin embargo, cuando se utiliza un binario precompilado, esta información a menudo se pierde. Esto crea una dependencia “fantasma” porque la relación entre el proyecto y la biblioteca binaria no es evidente.

Posibles Soluciones: La solución pasa por desarrollar herramientas que puedan identificar y registrar estas dependencias binarias. Además, es crucial mejorar la interoperabilidad entre los gestores de paquetes de diferentes lenguajes y sistemas operativos para alertar a los desarrolladores sobre posibles vulnerabilidades. Se están explorando diversas iniciativas, como PEP 725 y PEP 804 en Python, que buscan estandarizar la forma en que se registran las dependencias binarias. También se están investigando tecnologías como SBOMs (Software Bill of Materials) para proporcionar una visión completa de las dependencias de un proyecto.

Consideraciones: La identificación y gestión de dependencias binarias es un desafío complejo que requiere un esfuerzo coordinado entre desarrolladores, mantenedores y la comunidad de código abierto. La implementación de soluciones puede ser laboriosa, pero es esencial para garantizar la estabilidad, seguridad y sostenibilidad de nuestro ecosistema tecnológico.