Los investigadores de seguridad advierten que muchos paquetes npm están siendo obsoletos y abandonados por sus mantenedores sin una advertencia clara a los usuarios. Estos paquetes pueden acumular vulnerabilidades graves con el tiempo y, a veces, sus encargados incluso los abandonan, especialmente porque no tienen el tiempo o el interés para solucionar los problemas de seguridad informados.
De los 50.000 paquetes más descargados en el registro npm, alrededor del 8% están «oficialmente» en desuso o tienen una dependencia directa que está en desuso. Esto significa que sus autores marcaron esos paquetes como obsoletos y publicaron una advertencia a los usuarios. Sin embargo, investigadores de la firma de seguridad de la cadena de suministro de software Aqua Security descubrieron que al ampliar la búsqueda con otros criterios que podrían indicar una desaprobación “engañosa” o no explícita, la tasa aumenta al 21% de los paquetes.
El problema probablemente sea mucho peor porque Aqua solo verificó las dependencias directas, no también las transitorias: las dependencias de las dependencias. La cadena de dependencia para los paquetes npm puede llegar a muchos niveles de profundidad y no tener en cuenta esto es una razón común por la cual el código vulnerable puede llegar a proyectos sin ser detectado.
«Esta situación se vuelve crítica cuando los mantenedores, en lugar de abordar las fallas de seguridad con parches o asignaciones CVE, optan por desaprobar los paquetes afectados», dijeron los investigadores de Aqua en su informe. «Lo que hace que esto sea particularmente preocupante es que, a veces, estos mantenedores no marcan oficialmente el paquete como obsoleto en npm, lo que deja una brecha de seguridad para los usuarios que pueden permanecer inconscientes de posibles amenazas».
Para ayudar a las organizaciones, Aqua Security lanzó una herramienta de código abierto llamada Comprobador de desaprobación de dependencias que puede tomar el paquete.json de un proyecto e iterar a través de su árbol de dependencia para encontrar paquetes que coincidan con los criterios de obsolescencia elegidos por el usuario.
Depreciación oficial versus práctica
En términos prácticos, el código de software puede considerarse obsoleto cuando su autor toma la decisión de no actualizar más el código o solucionar problemas encontrados en él, relacionados con la seguridad o de otro tipo. Esto puede suceder porque ya no tienen tiempo para mantenerlo (la mayor parte del desarrollo de código abierto es trabajo voluntario) y no han encontrado a alguien más que se haga cargo del trabajo, porque alguien más creó una alternativa mejor, originalmente la crearon ellos mismos. y desde entonces han pasado a otras cosas, o simplemente porque se molestaron con la respuesta de la comunidad.
Cuando se trata de código abierto, tomar esa decisión está perfectamente bien porque el código no viene con un contrato de soporte adjunto y está disponible para que cualquiera lo tome, modifique y mejore si quiere seguir usándolo. El autor tampoco tiene que anunciar su decisión y depende de los usuarios determinar cuándo la calidad del código ya no satisface sus expectativas.