Una línea en .npmrc que blinda tu proyecto contra ataques a npm

Si trabajas con WordPress y tienes un build de JavaScript por medio (Gutenberg, temas modernos, plugins con React…), estás usando npm. Y npm lleva meses siendo el patio de recreo favorito de los ataques de cadena de suministro: alguien compromete la cuenta del mantenedor de un paquete popular, publica una versión con código malicioso, y en cuestión de horas hay miles de proyectos infectados por el mundo.

La buena noticia: hay una línea de configuración que corta la mayoría de estos ataques en seco.

La línea mágica

Abre (o crea) el archivo .npmrc en la raíz de tu proyecto y añade:

min-release-age=7

Ya está. Eso es todo.

Qué hace exactamente

Con esa línea, npm ignora cualquier versión de cualquier paquete publicada hace menos de 7 días. Es decir: aunque paquete-popular@2.5.7 acabe de salir hace 3 horas, tu instalación no la tocará. Se quedará en la última versión que ya tenga al menos una semana de vida.

¿Por qué funciona esto contra los ataques? Porque cuando comprometen un paquete popular, la comunidad lo detecta muy rápido —normalmente en horas— y la versión maliciosa se retira. Con una ventana de 7 días, tú ni siquiera llegas a instalarla. El ataque pasa por delante de tu proyecto sin tocarlo.

Requisitos

Necesitas npm 11.10.0 o superior. Comprueba tu versión con:

npm --version

Y si te hace falta, actualiza con:

npm install -g npm@latest

Dos cosas que NO arregla (importante saberlas)

Esto no es una bala de plata. Hay dos escenarios en los que min-release-age no te salva:

  1. Si tu package-lock.json ya está envenenado, da igual. El lockfile manda: si dice que hay que instalar la versión X, npm instala la versión X, tenga la antigüedad que tenga. Revisa siempre los cambios en el lockfile antes de mergear pull requests, especialmente los automáticos de Dependabot y compañía.

  2. npx se salta la protección. npx ejecuta paquetes sin pasar por tu configuración de instalación, así que la restricción no se aplica. Ojo con lo que ejecutas por ahí, sobre todo en scripts de CI.

¿Por qué deberías hacerlo hoy?

Porque el coste es literalmente escribir una línea en un archivo, y el beneficio es blindarte contra el 90% de los ataques de cadena de suministro que están pasando ahora mismo en npm.

Si mantienes un proyecto WordPress con build de JavaScript —un tema propio, un plugin con bloques Gutenberg, un headless con Next.js encima— esta es probablemente la mejor relación coste/beneficio en seguridad que puedes conseguir hoy en tu stack.

No lo dejes para mañana. Añádelo, commitea, y a otra cosa.

Comparte en redes o resume con la IA

Deja un comentario

ÚLTIMOS ARTÍCULOS

Cierre Ventana

Una línea en .npmrc que blinda tu proyecto contra ataques a npm

Los ataques de cadena de suministro en npm están a la orden del día. Con una sola línea…

Cierre Ventana

Automatiza el archivo de distribución de tus plugins y temas en WordPres

Hace un tiempo conté en la WordCamp Madrid cómo generar el ZIP de distribución de un plugin con…

Cierre Ventana

Claude Code como empleado 24/7: cómo lo adapto a WordPress

Llevo meses usando Claude Code a diario y esta semana he escuchado un episodio que me ha hecho…