La falta de mantenimiento, software obsoleto, cambios no aprobados o vulnerabilidades detectadas con algunos de los principales riesgos a los que está expuesto el software de código abierto.
Así se desprende de un informe elaborado por Endor Labs en el que se pone de relieve que casi el 80 % del código de las aplicaciones modernas es código que se basa en paquetes de código abierto. Sin embargo, no está exento de riesgos por lo que la responsabilidad ante cualquier amenaza recae en los usuarios.
Esto hace que la seguridad y el mantenimiento de estas dependencias de código abierto sean pasos cruciales hacia la seguridad de la cadena de suministro de software.
Una vulnerabilidad conocida es, según el informe, el principal riesgo asociado con el software de código abierto. Este riesgo sucede cuando la versión de un componente contiene código vulnerable, introducido accidentalmente por sus desarrolladores.
Si un actor de amenazas explota una vulnerabilidad conocida, podría comprometer la confidencialidad, integridad o disponibilidad del sistema respectivo o sus datos. La vulnerabilidad CVE-2017-5638 en Apache Struts provocó la filtración de datos de Equifax, y CVE-2021-44228 en Apache Log4j, también conocido como Log4Shell, son ejemplos de vulnerabilidades conocidas.
Para evitar el riesgo de vulnerabilidades conocidas, Endor Labs apuesta por la realización de un análisis de manera regular del software de código abierto y que las organizaciones prioricen los hallazgos para optimizar la asignación de recursos.
Otros riesgos en open source
El compromiso de paquetes legítimos es el segundo mayor riesgo del software de código abierto. Los atacantes pueden comprometer los recursos que forman parte de un proyecto legítimo existente o de la infraestructura de distribución para inyectar código malicioso en un componente.
Por ejemplo, secuestrando las cuentas de mantenedores de proyectos o explotar vulnerabilidades en repositorios de paquetes. El ciberataque de SolarWinds fue el resultado del compromiso de un paquete legítimo.
Un tercer gran riesgo del software de código abierto son los ataques de confusión de nombres. En ellos, un atacante puede crear componentes cuyos nombres se asemejan a nombres de componentes de sistema o de código abierto legítimos (‘typosquatting’), sugiere autores de confianza (‘brandjacking’), o juega con patrones de nombres comunes en diferentes idiomas o ecosistemas.
Para evitar este riesgo, las organizaciones deben verificar las características del código antes y después de los enlaces de instalación, así como las características del proyecto, el repositorio del código fuente, la frecuencia de publicación, y la cantidad de usuarios intermedios, entre otros aspectos.
Un ejemplo de este riesgo es el ataque de Colourama, que fue un ataque de error tipográfico en el paquete legítimo de Python llamado «Colorama». Esto hizo que se redirigieran las transferencias de bitcoin a una billetera controlada por el atacante.
Los tres principales riesgos operativos
Junto con los principales riesgos de seguridad que contiene el software de código abierto, el informe de Endor Labs también analiza los principales riesgos operativos que pueden presentar.
El software sin mantenimiento, o cuando un componente o una versión del componente ya no se desarrolla activamente, lleva a que los parches para errores funcionales y de seguridad no estén disponibles. Esto se erige como el principal riesgo operativo que plantea el software de código abierto.
En este caso, el desarrollo del parche lo deberán realizar desarrolladores intermedios, lo que resultará en mayores esfuerzos y tiempos de resolución más prolongados. Durante ese tiempo, el sistema permanece expuesto.
El software obsoleto, que no debe confundirse con el software sin mantenimiento, es otro gran riesgo para el software de código abierto. Esto hace referencia a la utilización de una versión antigua y desactualizada de un componente, aunque existan versiones más nuevas.
Si la versión de un componente utilizado está muy por detrás de las últimas versiones de una dependencia, puede dificultar la realización de actualizaciones en situaciones de emergencia. Es posible que la versión anterior de un componente no reciba el mismo nivel de evaluación de seguridad que las versiones recientes.
De esta forma, si una nueva versión es sintáctica o semánticamente incompatible con la versión actual en uso, los desarrolladores de aplicaciones pueden requerir importantes esfuerzos de actualización o migración para resolver la incompatibilidad.
Por último, el tercer mayor riesgo operativo del software de código abierto son las dependencias sin seguimiento, cuando los desarrolladores no son conscientes de la dependencia de un componente.
Todo esto hace necesario que los desarrolladores evalúen y comparen las herramientas SCA, de análisis de composición de software, por su capacidad para producir listas de materiales precisas.
El crecimiento de los riesgos asociados con el software de código abierto
A medida que aumenta el uso del código abierto, otras empresas de ciberseguridad también destacan el riesgo que representa. Se detectó al menos una vulnerabilidad de código abierto conocida en el 84% de todas las bases de código empresariales, según la empresa de seguridad de aplicaciones Synopsys.
Además, el 48% de todas las bases de código analizadas por los investigadores de Synopsys contenían vulnerabilidades de alto riesgo, que son aquellas que se han explotado activamente, tienen explotaciones de prueba de concepto documentadas o están clasificadas como vulnerabilidades de ejecución remota de código.