Un firewall de dependencias es un punto de control que bloquea los paquetes maliciosos antes de que se instalen, independientemente de si los solicitó un desarrollador, una pipeline de CI o un agente de codificación de IA. Funciona de manera similar a un firewall de red, excepto que el tráfico aquí son paquetes de código abierto en lugar de paquetes de red, y el punto de entrada es el comando de instalación.
Los firewalls de dependencias existen porque el volumen de ataques a la cadena de suministro los hace necesarios. Aikido Intel ahora analiza hasta 100.000 paquetes maliciosos al día en registros de código abierto, frente a los aproximadamente 20.000 de hace un año. Solo en el segundo trimestre de 2026, analizó aproximadamente 7,5 millones de versiones de paquetes y confirmó 19.500 como maliciosas.
{{cta}}
¿Por qué son necesarios los firewalls de dependencias?
En el momento en que su gestor de paquetes ejecuta una instalación, su máquina queda expuesta. Para empeorar las cosas, los atacantes se han vuelto más rápidos y la IA les ha proporcionado nuevas vías de entrada.
Los scripts de instalación son el mecanismo de entrega de la carga útil
Cuando ejecutas npm install, los paquetes pueden ejecutar código como parte de la propia instalación. El hook postinstall es donde residen muchos ataques modernos a la cadena de suministro porque se ejecuta con los permisos del desarrollador antes de que nadie tenga la oportunidad de revisar el código.
En marzo de 2026, atacantes secuestraron la cuenta npm del mantenedor de axios y subieron dos versiones maliciosas de la librería (utilizada en aproximadamente 100 millones de descargas semanales). La carga útil entró a través de una dependencia transitiva recién añadida, plain-crypto-js, cuyo hook postinstall dejó caer un RAT multiplataforma en cada máquina que ejecutó 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 es iniciada por un humano. Los agentes de codificación y los servidores MCP extraen de npm en máquinas de desarrolladores con acceso a código y credenciales sensibles. En septiembre de 2025, un atacante que se hizo pasar por Postmark publicó un servidor MCP malicioso en npm que enviaba silenciosamente una copia oculta de cada correo electrónico saliente a una dirección controlada por el atacante. Fue el primer servidor MCP malicioso confirmado en npm, y es una señal de lo que está por venir.
Los agentes también alucinan, y los atacantes han empezado a registrar nombres de paquetes para aprovecharse de esto. Los agentes que adivinan mal ahora corren el riesgo de instalar un paquete que el atacante preparó de antemano. Este ataque, a veces llamado slopsquatting, no existía como categoría hace dos años.
Las ventanas de ataque son cada vez más cortas
El malicioso plain-crypto-js el paquete que alimentó el ataque a axios existió durante menos de 24 horas antes de ser retirado. El compromiso de debug y chalk afectó a 18 paquetes con más de 2 mil millones de descargas semanales combinadas en una sola oleada. Cualquier defensa que se ejecute después de una instalación, ya sea un escaneo nocturno o un aviso público, llega demasiado tarde.
Un paquete en el que confías puede volverse en tu contra
Los ataques a la cadena de suministro más trascendentales del último año involucraron librerías con millones de descargas semanales. Los atacantes comprometieron cuentas de mantenedores de axios, chalk y debug, robaron tokens de publicación y subieron versiones maliciosas de los mismos paquetes que los usuarios ya tenían en sus lockfiles. La reputación y el número de descargas no te protegen de una nueva versión maliciosa. La verificación debe realizarse en cada instalación.
Qué verifica un firewall de dependencias
Las verificaciones específicas varían entre herramientas, pero un firewall de dependencias que valga la pena usar cubre la mayoría de lo siguiente. Y cada verificación debe aplicarse a las dependencias transitivas, ya que la mayoría de los ataques modernos residen varias capas de profundidad en el árbol de dependencias. El paquete malicioso plain-crypto-js que alimentó el ataque a axios era una dependencia transitiva que casi nadie había instalado explícitamente.
Malware conocido
La verificación de referencia. El firewall coteja cada paquete con una fuente de amenazas en vivo y bloquea cualquier cosa que ya haya sido marcada. Esto cubre puertas traseras, ladrones de credenciales, mineros de criptomonedas y otros paquetes conocidos por ser hostiles. Lo crítico aquí es que la fuente de inteligencia se mueve más rápido que el atacante. Un paquete malicioso marcado tres días después de su publicación probablemente ya se haya ejecutado en la máquina de alguien.
Antigüedad mínima del paquete
La mayoría de las versiones maliciosas son detectadas y retiradas en uno o dos días desde su publicación. Un firewall que bloquea o retrasa 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. Cada gestor de paquetes principal en el ecosistema npm ahora soporta una configuración de antigüedad mínima de lanzamiento que se niega a instalar cualquier versión de paquete más reciente que un umbral configurable. pnpm, Yarn, Bun y npm mismo lo incluyen.
Confusión de dependencias, typosquats y nombres no reclamados
Estos son 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 dirige a 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 superior, y el resolvedor elige la maliciosa, pensando que es una actualización segura. Y hay una nueva superficie de ataque que Aikido ha estado rastreando, donde los nombres de los paquetes se referencian en la documentación y los archivos README, pero nunca se publican realmente. Si no se reclaman, son libres para que cualquiera los registre, incluidos los atacantes. Los agentes de codificación que rastrean la misma documentación instalarán entonces lo que haya allí. Los tres son capturas que un firewall realiza antes de que se produzca la descarga.
Comportamiento del script de instalación
Las reglas estáticas y, en firewalls más capaces, la ejecución en sandbox inspeccionan lo que realmente hacen los scripts de instalación de un paquete, dónde se conectan, qué leen, qué generan. Aquí es donde se esconden los ataques sofisticados y donde los más sencillos causan daño. El hook postinstall de axios que introdujo plain-crypto-js es exactamente el patrón que esta comprobación está diseñada para detectar.
Señales de compromiso de mantenedor y cuenta
Cuando la cuenta detrás de una librería legítima y ampliamente utilizada se ve comprometida, la versión maliciosa se envía a millones de lockfiles bajo un nombre en el que todos ya confían. Los buenos firewalls señalan las señales de una toma de control de cuenta, como un cambio de mantenedor inesperado, un aumento de versión sin un commit de origen coincidente, 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 creativos sobre qué ocultan y cómo. Ejemplos recientes incluyen malware escrito en caracteres Unicode invisibles que no se renderizan en un editor de código (os-info-checker-es6), payloads ocultos en espacios en blanco desplazados fuera de la pantalla (react-html2pdf.js) y código introducido de contrabando dentro de archivos de imagen. Un firewall que solo lee lo que mostraría un editor humano se pierde todo esto. La verificación debe examinar los bytes sin procesar.
Firewall de dependencias de Aikido
Para los equipos que necesitan cobertura de firewall para desarrolladores para todo lo que estos instalan en sus máquinas (por ejemplo, extensiones de IDE, extensiones de navegador, servidores MCP, herramientas de codificación con IA), Aikido Device Protection es la respuesta. Se implementa a través de su MDM existente, se ejecuta en el mismo Intel subyacente y proporciona a los equipos de seguridad visibilidad centralizada en cada estación de trabajo.
Para desarrolladores individuales, o equipos que desean probar la verificación en tiempo de instalación sin implementar nada de forma centralizada, Safe Chain es un firewall de dependencias gratuito y de código abierto para npm, yarn, pnpm, pip, uv, poetry y otros gestores de paquetes. Instálelo una vez, reinicie su shell y cada instalación se ejecutará a través del firewall.
La inteligencia detrás de ambos es Aikido Intel, que analiza nuevas versiones de paquetes en más de 20 ecosistemas en el momento de su publicación, marcando la mayoría en un promedio de seis minutos y muchas en uno o dos. Se ejecuta en cuatro capas (reglas estáticas, ejecución en sandbox, razonamiento de IA entre archivos, revisión humana para los casos más difíciles), y la propia fuente es pública y gratuita bajo AGPL.
Juntos, Safe Chain, Intel y Device Protection cubren la ruta completa de instalación de la cadena de suministro, desde la instalación de npm de un desarrollador hasta un agente de IA que descarga un servidor MCP en una estación de trabajo sin supervisión.
<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>

