---
locale: "es"
translationKey: "axios-supply-chain-attack"
slug: "ataque-cadena-suministro-axios-protegerte"
title: "Ataque a la cadena de suministro de axios: cómo protegerte"
description: "Dos versiones comprometidas de axios instalaron un RAT multiplataforma. Estas configuraciones reducen el riesgo en npm, Bun y Python."
pubDate: 2026-03-31
tags: ["security", "npm", "python", "supply-chain"]
---

# 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.

---

[Publicado originalmente en LinkedIn.](https://www.linkedin.com/posts/mikelvillota_hoy-axios-la-librer%C3%ADa-http-m%C3%A1s-usada-de-share-7444759641751834624-rTF4/)

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:

```ini
# ~/.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](https://socket.dev/) 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*:

```ini
# npm
min-release-age=7
```

```toml
# 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.
