Un cortafuegos de dependencias es un punto de control que bloquea los paquetes maliciosos antes de que se instalen, independientemente de si los ha solicitado un desarrollador, un proceso de integración continua (CI) o un agente de programación basado en IA. Funciona de forma similar a un cortafuegos de red, salvo que, en este caso, el tráfico lo constituyen paquetes de código abierto en lugar de paquetes de red, y el punto de entrada es el comando de instalación.
Los cortafuegos de dependencias existen porque el volumen de ataques a la cadena de suministro los ataques a la cadena de suministro necesarios. Aikido Intel analiza ahora hasta 100 000 paquetes maliciosos al día en los registros de código abierto, frente a los aproximadamente 20 000 de hace un año. Solo en el segundo trimestre de 2026, analizó unos 7,5 millones de versiones de paquetes y confirmó que 19 500 eran maliciosas.
{{cta}}
¿Por qué son necesarios los cortafuegos de dependencias?
En el momento en que tu gestor de paquetes ejecuta una instalación, tu ordenador queda expuesto. Y, para empeorar las cosas, los atacantes son cada vez más rápidos, y la inteligencia artificial les ha proporcionado nuevas vías de acceso.
Los scripts de instalación son el mecanismo de distribución de la carga útil
Cuando ejecutas npm install, los paquetes pueden ejecutar código como parte del propio proceso de instalación. El gancho «postinstall» es donde ataques a la cadena de suministro muchos de ataques a la cadena de suministro modernos ataques a la cadena de suministro , ya que se ejecuta con los permisos del desarrollador antes de que nadie tenga la oportunidad de revisar el código.
En marzo de 2026, Los atacantes se hicieron con el control de la cuenta de npm del responsable del mantenimiento de Axios. y distribuyó dos versiones maliciosas de la biblioteca (utilizada en unos 100 millones de descargas semanales). La carga maliciosa se introdujo a través de una dependencia transitiva recién añadida, plain-crypto-js, cuyo script de postinstalación instalaba un RAT multiplataforma en todos los equipos en los que se ejecutaba la instalación.
Los agentes de codificación y los servidores MCP son nuevas superficies de instalación
La instalación de paquetes ya no siempre la inicia una persona. Los agentes de programación y los servidores MCP descargan paquetes de npm en los equipos de los desarrolladores que tienen acceso a código confidencial y credenciales. En septiembre de 2025, un atacante que se hizo pasar por Postmark publicó en npm un servidor MCP malicioso que, de forma sigilosa, enviaba en copia oculta (BCC) todos los correos electrónicos salientes a una dirección controlada por el atacante. Fue el primer servidor MCP malicioso confirmado en npm, y es un indicio de lo que está por venir.
Los agentes también cometen errores, y los atacantes han empezado a registrar los nombres de los paquetes para aprovecharse de ello. Los agentes que se equivocan corren ahora el riesgo de instalar un paquete que el atacante haya preparado de antemano. Este ataque, conocido a veces como «slopsquatting», no existía como categoría hace dos años.
Los plazos para lanzar ataques son cada vez más cortos
El malicioso plain-crypto-js El paquete que facilitó el ataque a Axios estuvo disponible menos de 24 horas antes de ser retirado. El debug y chalk: un compromiso Ha afectado a 18 paquetes con más de 2.000 millones de descargas semanales en total en una sola oleada. Cualquier medida de defensa que se ponga en marcha tras la instalación, ya sea un análisis nocturno o un aviso público, llega demasiado tarde.
Un paquete en el que confías puede traicionarte
ataques a la cadena de suministro más graves ataques a la cadena de suministro último año afectaron a bibliotecas con millones de descargas semanales. Los atacantes comprometieron las cuentas de los responsables del mantenimiento de axios, chalk y debug, robaron tokens de publicación y publicaron versiones maliciosas de los mismos paquetes que los usuarios ya tenían en sus archivos de bloqueo. La reputación y el número de descargas no te protegen frente a una nueva versión maliciosa. La comprobación debe realizarse en cada instalación.
Qué comprueba un cortafuegos de dependencias
Las comprobaciones específicas varían según la herramienta, pero un cortafuegos de dependencias que merezca la pena utilizar cubre la mayor parte de los siguientes aspectos. Además, cada comprobación debe aplicarse a las dependencias transitivas, ya que la mayoría de los ataques modernos se ocultan a varias capas de profundidad en el árbol de dependencias. El código malicioso plain-crypto-js El paquete que facilitó el ataque a Axios era una dependencia transitiva que casi nadie había instalado explícitamente.
Malware conocido
La comprobación básica. El cortafuegos compara cada paquete con una base de datos de amenazas en tiempo real y bloquea todo aquello que ya haya sido marcado como sospechoso. Esto incluye puertas traseras, programas de robo de credenciales, mineros de criptomonedas y otros paquetes conocidos por ser hostiles. Lo fundamental aquí es que la base de datos de inteligencia se actualiza más rápido que el atacante. Es probable que un paquete malicioso marcado como sospechoso tres días después de su publicación ya se haya ejecutado en el ordenador de alguien.
Edad mínima del paquete
La mayoría de las versiones maliciosas se detectan y se retiran en el plazo de uno o dos días tras su publicación. Un cortafuegos que bloquee o retrase los paquetes publicados en las últimas 24 a 48 horas elimina por completo la ventana de detección temprana. El resto del ecosistema está llegando a la misma conclusión. Todos los principales gestores de paquetes del ecosistema npm admiten ahora una configuración de antigüedad mínima de las versiones que impide instalar cualquier versión de un paquete más reciente que un umbral configurable. pnpm, Yarn, Bun y el propio npm la incluyen.
Confusión de dependencias, «typosquats» y nombres no reclamados
Se trata de tres patrones estrechamente relacionados. Los «typosquats» imitan nombres de paquetes populares (por ejemplo, «lodahs» en lugar de «lodash») y se basan en que un comando mal escrito pase desapercibido. La «confusión de dependencias» se centra en nombres de paquetes internos que una empresa no ha reservado en el registro público. El atacante publica una versión pública con un número más alto, y el resolutor elige la maliciosa, creyendo que se trata de una actualización segura. Y hay una superficie de ataque más reciente que Aikido ha estado rastreando, en la que se hace referencia a nombres de paquetes en la documentación y en los archivos README, pero que en realidad nunca se han publicado. Al quedar sin reclamar, cualquiera puede registrarlos, incluidos los atacantes. Los agentes de codificación que recopilan información de esos mismos documentos instalarán entonces lo que haya allí. Los tres son amenazas que un cortafuegos detecta antes de que se produzca la descarga.
Comportamiento del script de instalación
Las reglas estáticas y, en los cortafuegos más avanzados, la ejecución en entorno aislado (sandbox) analizan qué hacen realmente los scripts de instalación de un paquete, a dónde se conectan, qué leen y qué procesos generan. Ahí es donde se ocultan los ataques sofisticados y donde los más simples causan estragos. El gancho «postinstall» de Axios que incorporó «plain-crypto-js» es precisamente el patrón que esta comprobación está diseñada para detectar.
Señales relacionadas con el administrador y la apropiación de cuentas
Cuando se compromete la cuenta asociada a una biblioteca legítima y de uso generalizado, la versión maliciosa se distribuye a millones de archivos de bloqueo bajo un nombre en el que todo el mundo ya confía. Los buenos cortafuegos detectan las señales de una apropiación de cuenta, como un cambio inesperado de responsable, un aumento de versión sin el correspondiente commit en el código fuente o un paquete legítimo que de repente añade una nueva dependencia que nunca antes había necesitado.
Técnicas de ofuscación
Los atacantes se han vuelto muy creativos a la hora de decidir qué ocultar y cómo hacerlo. Entre los ejemplos recientes se incluyen malware escrito en caracteres Unicode invisibles que no se visualizan en un editor de código (os-info-checker-es6), cargas útiles ocultas en espacios en blanco que quedan fuera de la pantalla al desplazarse (react-html2pdf.js) y código camuflado dentro de archivos de imagen. Un cortafuegos que solo lee lo que vería un editor humano pasa por alto todo esto. La comprobación debe analizar los bytes sin procesar.
El cortafuegos de dependencias de Aikido
Para los equipos que necesitan una protección mediante cortafuegos para todo lo que los desarrolladores instalan en sus equipos (por ejemplo, extensiones de IDE, extensiones de navegador, servidores MCP o herramientas de programación basadas en IA), Aikido Device Protection es la solución. Se implementa a través de vuestro MDM actual, se ejecuta en el mismo hardware Intel y ofrece a los equipos de seguridad una visibilidad centralizada de todas las estaciones de trabajo.
Para desarrolladores individuales o equipos que quieran probar la comprobación durante la instalación sin tener que implementar nada de forma centralizada, Safe Chain es un cortafuegos de dependencias gratuito y de código abierto para npm, yarn, pnpm, pip, uv, poetry y otros gestores de paquetes. Instálalo una vez, reinicia tu shell y todas las instalaciones se ejecutarán a través del cortafuegos.
La inteligencia que hay detrás de ambos es Aikido Intel, que analiza las nuevas versiones de los paquetes en más de 20 ecosistemas en el momento mismo de su publicación, detectando la mayoría de ellas en una media de seis minutos y muchas de ellas en uno o dos. Funciona en cuatro niveles (reglas estáticas, ejecución en entorno aislado, razonamiento basado en IA sobre los archivos y revisión humana para los casos más complejos), y el propio feed es público y gratuito bajo la licencia AGPL.
Juntas, Safe Chain, Intel y Device Protection cubren todo el proceso de instalación a lo largo de la cadena de suministro, desde el comando «npm install» de un desarrollador hasta que un agente de IA se conecte a un servidor MCP en una estación de trabajo que nadie supervisa.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "BlogPosting",
"@id": "https://www.aikido.dev/blog/what-is-a-dependency-firewall#article",
"isPartOf": {
"@id": "https://www.aikido.dev/blog/what-is-a-dependency-firewall#webpage"
},
"mainEntityOfPage": {
"@id": "https://www.aikido.dev/blog/what-is-a-dependency-firewall#webpage"
},
"headline": "What is a dependency firewall?",
"description": "A dependency firewall is a checkpoint that blocks malicious open-source packages before they install, whether a developer, a CI pipeline, or an AI coding agent requested them. Learn how they work, what they check for, and how Aikido Safe Chain and Device Protection cover the full supply-chain install path.",
"url": "https://www.aikido.dev/blog/what-is-a-dependency-firewall",
"datePublished": "2026-07-13T00:00:00+00:00",
"dateModified": "2026-07-13T00:00:00+00:00",
"inLanguage": "en-US",
"wordCount": 1450,
"timeRequired": "PT7M",
"articleSection": "Supply Chain Security",
"keywords": [
"dependency firewall",
"software supply chain security",
"malicious npm packages",
"install-time protection",
"Aikido Safe Chain",
"Aikido Intel",
"Aikido Device Protection",
"slopsquatting",
"typosquatting",
"dependency confusion",
"postinstall hook attack",
"npm supply chain attack",
"MCP server security",
"AI coding agent security",
"minimum package age",
"package manager cooldown"
],
"author": {
"@id": "https://www.aikido.dev/authors/nicholas-thomson#person"
},
"publisher": {
"@id": "https://www.aikido.dev#organization"
},
"image": {
"@id": "https://www.aikido.dev/blog/what-is-a-dependency-firewall#primaryimage"
},
"about": [
{
"@type": "Thing",
"name": "Dependency firewall",
"description": "A security checkpoint that inspects and blocks malicious open-source packages before they install on a developer machine, CI pipeline, or AI coding agent."
},
{
"@type": "Thing",
"name": "Software supply chain security"
},
{
"@type": "Thing",
"name": "Install-time malware detection"
}
],
"mentions": [
{
"@type": "SoftwareApplication",
"name": "Aikido Safe Chain",
"applicationCategory": "SecurityApplication",
"operatingSystem": "Cross-platform",
"url": "https://github.com/AikidoSec/safe-chain",
"offers": {
"@type": "Offer",
"price": "0",
"priceCurrency": "USD"
}
},
{
"@type": "SoftwareApplication",
"name": "Aikido Device Protection",
"applicationCategory": "SecurityApplication",
"url": "https://www.aikido.dev/product/device-protection"
},
{
"@type": "Dataset",
"name": "Aikido Intel",
"description": "Open threat intelligence feed for malicious open-source packages, covering 20+ ecosystems in real time.",
"url": "https://intel.aikido.dev",
"license": "https://www.gnu.org/licenses/agpl-3.0.en.html"
},
{
"@type": "SoftwareApplication",
"name": "npm",
"applicationCategory": "DeveloperApplication"
},
{
"@type": "SoftwareApplication",
"name": "pnpm",
"applicationCategory": "DeveloperApplication"
},
{
"@type": "SoftwareApplication",
"name": "Yarn",
"applicationCategory": "DeveloperApplication"
},
{
"@type": "SoftwareApplication",
"name": "Bun",
"applicationCategory": "DeveloperApplication"
},
{
"@type": "Thing",
"name": "axios npm supply chain attack (March 2026)"
},
{
"@type": "Thing",
"name": "debug and chalk npm compromise (September 2025)"
},
{
"@type": "Thing",
"name": "postmark-mcp malicious MCP server (September 2025)"
},
{
"@type": "Thing",
"name": "Slopsquatting"
},
{
"@type": "Thing",
"name": "Typosquatting"
},
{
"@type": "Thing",
"name": "Dependency confusion"
}
],
"speakable": {
"@type": "SpeakableSpecification",
"cssSelector": ["h1", "h2", ".faq-question", ".faq-answer"]
}
},
{
"@type": "WebPage",
"@id": "https://www.aikido.dev/blog/what-is-a-dependency-firewall#webpage",
"url": "https://www.aikido.dev/blog/what-is-a-dependency-firewall",
"name": "What is a dependency firewall? | Aikido Security",
"isPartOf": {
"@id": "https://www.aikido.dev#website"
},
"primaryImageOfPage": {
"@id": "https://www.aikido.dev/blog/what-is-a-dependency-firewall#primaryimage"
},
"datePublished": "2026-07-13T00:00:00+00:00",
"dateModified": "2026-07-13T00:00:00+00:00",
"breadcrumb": {
"@id": "https://www.aikido.dev/blog/what-is-a-dependency-firewall#breadcrumb"
},
"inLanguage": "en-US",
"potentialAction": [
{
"@type": "ReadAction",
"target": ["https://www.aikido.dev/blog/what-is-a-dependency-firewall"]
}
]
},
{
"@type": "BreadcrumbList",
"@id": "https://www.aikido.dev/blog/what-is-a-dependency-firewall#breadcrumb",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Home",
"item": "https://www.aikido.dev"
},
{
"@type": "ListItem",
"position": 2,
"name": "Blog",
"item": "https://www.aikido.dev/blog"
},
{
"@type": "ListItem",
"position": 3,
"name": "What is a dependency firewall?",
"item": "https://www.aikido.dev/blog/what-is-a-dependency-firewall"
}
]
},
{
"@type": "Organization",
"@id": "https://www.aikido.dev#organization",
"name": "Aikido Security",
"url": "https://www.aikido.dev",
"logo": {
"@type": "ImageObject",
"url": "https://www.aikido.dev/logo.png",
"width": 512,
"height": 512
},
"sameAs": [
"https://www.linkedin.com/company/aikido-security/",
"https://x.com/AikidoSecurity",
"https://www.youtube.com/@aikidosecurity",
"https://github.com/AikidoSec"
]
},
{
"@type": "WebSite",
"@id": "https://www.aikido.dev#website",
"url": "https://www.aikido.dev",
"name": "Aikido Security",
"publisher": {
"@id": "https://www.aikido.dev#organization"
},
"inLanguage": "en-US"
},
{
"@type": "Person",
"@id": "https://www.aikido.dev/authors/nicholas-thomson#person",
"name": "Nicholas Thomson",
"jobTitle": "Senior SEO & Growth Lead",
"worksFor": {
"@id": "https://www.aikido.dev#organization"
},
"url": "https://www.aikido.dev/authors/nicholas-thomson",
"sameAs": [
"https://www.linkedin.com/",
"https://x.com/"
]
},
{
"@type": "ImageObject",
"@id": "https://www.aikido.dev/blog/what-is-a-dependency-firewall#primaryimage",
"url": "https://www.aikido.dev/blog/what-is-a-dependency-firewall/og-image.png",
"contentUrl": "https://www.aikido.dev/blog/what-is-a-dependency-firewall/og-image.png",
"caption": "What is a dependency firewall?"
},
{
"@type": "DefinedTerm",
"@id": "https://www.aikido.dev/blog/what-is-a-dependency-firewall#definedterm",
"name": "Dependency firewall",
"description": "A dependency firewall is a checkpoint that blocks malicious open-source packages before they install, whether a developer, a CI pipeline, or an AI coding agent requested them. It works similarly to a network firewall, except the traffic is open-source packages instead of network packets and the point of entry is the install command.",
"inDefinedTermSet": {
"@type": "DefinedTermSet",
"name": "Aikido Security Glossary",
"url": "https://www.aikido.dev/glossary"
}
},
{
"@type": "FAQPage",
"@id": "https://www.aikido.dev/blog/what-is-a-dependency-firewall#faq",
"mainEntity": [
{
"@type": "Question",
"name": "How do I stop malicious npm packages from getting installed?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Install a dependency firewall that runs at the install command. Safe Chain is free and open source, wraps npm, yarn, pnpm, pip, and other package managers, and checks every install against Aikido Intel before the download completes. If the package is flagged, the install fails and nothing lands on your disk. Setup is one command plus a shell restart."
}
},
{
"@type": "Question",
"name": "How do I protect against typosquatting and dependency confusion?",
"acceptedAnswer": {
"@type": "Answer",
"text": "For dependency confusion specifically, use scoped package names for anything internal (e.g., @yourcompany/<package>) so there's no ambiguous name for an attacker to hijack. For typosquats, use an install-time dependency firewall that checks each package against a real-time threat feed. Safe Chain blocks both across every package manager it wraps."
}
},
{
"@type": "Question",
"name": "How do I stop AI coding agents from installing malicious packages?",
"acceptedAnswer": {
"@type": "Answer",
"text": "When an agent tries to npm install a hallucinated package name that an attacker has pre-registered (an attack called slop squatting), a dependency firewall will stop it from being downloaded at install time. But agents also install through IDE extensions, browser extensions, and MCP servers that bypass the terminal entirely. For that, Aikido Device Protection covers everything a developer machine can install, including extensions and MCP servers."
}
},
{
"@type": "Question",
"name": "What does Safe Chain cost?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Nothing. Safe Chain is free and open source under an MIT license, and it doesn't require an Aikido account to use. The threat feed it checks against, Aikido Intel, is also free and public."
}
},
{
"@type": "Question",
"name": "How do I roll out a dependency firewall across a whole team?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Aikido Device Protection provides a dependency firewall at the org level, deploying through whatever MDM you already run (Jamf, Kandji, Fleet, others) so every workstation is covered from day one. It runs on the same threat intelligence as Safe Chain and gives security teams centralized visibility across every machine."
}
}
]
}
]
}
</script>

