Los nuevos hallazgos de la firma de seguridad cibernética JFrog muestran que el malware dirigido al ecosistema npm puede evadir los controles de seguridad aprovechando un “comportamiento inesperado” en la herramienta de interfaz de línea de comandos (CLI) de npm.
npm CLI Instalar en pc y auditoría comandos tienen capacidades integradas para verificar un paquete y todas sus dependencias en busca de vulnerabilidades conocidas, actuando efectivamente como un mecanismo de advertencia para los desarrolladores al resaltar las fallas.
Pero como estableció JFrog, los avisos de seguridad no se muestran cuando los paquetes siguen ciertos formatos de versión, creando un escenario en el que se podrían introducir fallas críticas en sus sistemas, ya sea directamente o a través de las dependencias del paquete.
Específicamente, el problema surge solo cuando la versión del paquete instalado contiene un guión (por ejemplo, 1.2.3-a), que se incluye para indicar un versión preliminar de un módulo npm.
Si bien los mantenedores del proyecto tratan la discrepancia entre las versiones regulares del paquete npm y las versiones previas al lanzamiento como una funcionalidad prevista, esto también hace que sea propicio para el abuso por parte de los atacantes que buscan envenenar el ecosistema de código abierto.
“Los actores de amenazas podrían explotar este comportamiento al plantar intencionalmente código vulnerable o malicioso en sus paquetes de aspecto inocente que otros desarrolladores incluirán debido a la funcionalidad valiosa o como un error debido a técnicas de infección como error tipográfico o confusión de dependencia”, Or Peles dijo.
En otras palabras, un adversario podría publicar un paquete aparentemente inofensivo que está en el formato de versión preliminar, que luego podría ser recogido por otros desarrolladores y no ser alertado del hecho de que el paquete es malicioso a pesar de la evidencia de lo contrario.
El desarrollo reitera una vez más cómo la cadena de suministro de software se construye como una cadena de confianza entre varias partes, y cómo el compromiso de un enlace puede afectar a todas las aplicaciones posteriores que consumen la dependencia de terceros no autorizados.
Para contrarrestar tales amenazas, se recomienda que los desarrolladores eviten instalar paquetes npm con una versión preliminar, a menos que se sepa que la fuente es completamente confiable.