Ataque a la cadena de suministro de axios: cómo protegerte
Dos versiones comprometidas de axios instalaron un RAT multiplataforma. Estas configuraciones reducen el riesgo en npm, Bun y Python.
Comparte este artículo
Publicado originalmente en LinkedIn.
Axios, la librería HTTP más usada de JavaScript con más de 100 millones de descargas semanales, sufrió un ataque a la cadena de suministro. Un atacante comprometió la cuenta npm del mantenedor principal, publicó dos versiones envenenadas (1.14.1 y 0.30.4) e inyectó una dependencia falsa.
La dependencia instalaba un RAT multiplataforma capaz de robar credenciales, tokens SSH y secretos de CI/CD, entre otra información sensible.
Cómo protegerse
Hay una configuración sin trade-offs que habría bloqueado este ataque:
# ~/.npmrc
ignore-scripts=true
Esto impide que cualquier paquete ejecute código arbitrario durante la instalación, que es exactamente el vector utilizado en este caso.
Si usas Bun, ya estás protegido por defecto: bloquea los lifecycle scripts de paquetes no confiables sin configuración adicional.
Detección proactiva
Socket añade otra capa de protección. Analiza cada paquete antes de instalarlo y detecta comportamientos sospechosos en tiempo real.
Existe además otra configuración que añade protección, aunque con un trade-off:
# npm
min-release-age=7
# uv
exclude-newer = "7 days"
Ambas opciones bloquean paquetes publicados hace menos de un número determinado de días. Reducen la exposición a versiones recién comprometidas, pero también retrasan la llegada de parches de seguridad urgentes.
Esa misma semana, el paquete LiteLLM fue comprometido en PyPI en sus versiones 1.82.7 y 1.82.8, robando credenciales y otra información sensible. En Python, este límite de antigüedad resulta especialmente útil porque, a diferencia de npm, no existen lifecycle scripts que podamos bloquear.