Um firewall de dependência é um ponto de verificação que bloqueia pacotes maliciosos antes que sejam instalados, independentemente de terem sido solicitados por um desenvolvedor, pipeline de CI ou agente de codificação de IA. Funciona de forma semelhante a um firewall de rede, exceto que o tráfego aqui são pacotes open-source em vez de pacotes de rede, e o ponto de entrada é o comando de instalação.
Firewalls de dependência existem porque o volume de ataques à supply chain os torna necessários. Aikido Intel agora analisa até 100.000 pacotes maliciosos por dia em registros de código aberto, um aumento de cerca de 20.000 há um ano. Somente no segundo trimestre de 2026, ele analisou aproximadamente 7,5 milhões de versões de pacotes e confirmou 19.500 como maliciosas.
{{cta}}
Por que firewalls de dependência são necessários?
No momento em que seu gerenciador de pacotes executa uma instalação, sua máquina fica exposta. Para piorar a situação, os atacantes ficaram mais rápidos, e a IA lhes deu novas formas de acesso.
Scripts de instalação são o mecanismo de entrega de payload
Quando você executa npm install, pacotes podem executar código como parte da própria instalação. O hook postinstall é onde muitos ataques à Supply chain modernos residem porque ele é executado com as permissões do desenvolvedor antes que alguém tenha a chance de analisar o código.
Em março de 2026, atacantes sequestraram a conta npm do mantenedor do axios e publicaram duas versões maliciosas da biblioteca (usada em cerca de 100 milhões de downloads semanais). O payload entrou por meio de uma dependência transitiva recém-adicionada, plain-crypto-js, cujo hook postinstall instalou um RAT multiplataforma em todas as máquinas que executaram a instalação.
Agentes de codificação e servidores MCP são novas superfícies de instalação
A instalação de pacotes nem sempre é mais iniciada por um humano. Agentes de codificação e servidores MCP puxam do npm em máquinas de desenvolvedores com acesso a código e credenciais sensíveis. Em setembro de 2025, um atacante se passando por Postmark publicou um servidor MCP malicioso no npm que silenciosamente enviava cópias ocultas de todos os e-mails de saída para um endereço controlado pelo atacante. Foi o primeiro servidor MCP malicioso confirmado no npm, e é um sinal do que está por vir.
Agentes também alucinam, e atacantes começaram a registrar nomes de pacotes para tirar proveito disso. Agentes que erram agora correm o risco de instalar um pacote que o atacante preparou antecipadamente. Este ataque, às vezes chamado de slopsquatting, não existia como categoria há dois anos.
Janelas de ataque estão ficando mais curtas
A versão maliciosa plain-crypto-js pacote que alimentou o ataque ao axios existiu por menos de 24 horas antes de ser incorporado. O comprometimento de debug e chalk atingiu 18 pacotes com mais de 2 bilhões de downloads semanais combinados em uma única onda. Qualquer defesa que seja executada após uma instalação, seja uma varredura noturna ou um aviso público, é tarde demais.
Um pacote em que você confia pode se voltar contra você
Os ataques à Supply chain mais impactantes do último ano envolveram bibliotecas com milhões de downloads semanais. Atacantes comprometeram contas de mantenedores de axios, chalk e debug, roubaram tokens de publicação e publicaram versões maliciosas dos mesmos pacotes que os usuários já tinham em seus lockfiles. Reputação e contagens de download não protegem você de uma nova versão maliciosa. A verificação precisa acontecer em cada instalação.
O que um firewall de dependência verifica
As verificações específicas variam entre as ferramentas, mas um firewall de dependência que vale a pena usar cobre a maioria dos seguintes. E cada verificação deve se aplicar a dependências transitivas, já que a maioria dos ataques modernos reside em várias camadas da árvore de dependências. O malicioso plain-crypto-js pacote que alimentou o ataque ao axios era uma dependência transitiva que quase ninguém havia instalado explicitamente.
Malware conhecido
A verificação de linha de base. O firewall faz referência cruzada de cada pacote com um feed de ameaças em tempo real e bloqueia qualquer coisa que já tenha sido sinalizada. Isso abrange backdoors, ladrões de credenciais, mineradores de criptomoedas e outros pacotes conhecidos por serem hostis. O ponto crítico aqui é que o feed de inteligência se move mais rápido que o atacante. Um pacote malicioso sinalizado três dias após a publicação provavelmente já foi executado na máquina de alguém.
Idade mínima do pacote
A maioria das versões maliciosas é detectada e removida em um ou dois dias após a publicação. Um firewall que bloqueia ou atrasa pacotes publicados nas últimas 24 a 48 horas elimina completamente a janela de detecção precoce. O restante do ecossistema está chegando à mesma conclusão. Todo grande gerenciador de pacotes no ecossistema npm agora suporta uma configuração de idade mínima de lançamento que se recusa a instalar qualquer versão de pacote mais recente do que um limite configurável. pnpm, Yarn, Bun e o próprio npm já o incluem.
Confusão de dependência, typosquatting e nomes não reivindicados
Estes são três padrões intimamente relacionados. Typosquatting imita nomes de pacotes populares (por exemplo, lodahs em vez de lodash) e depende de um comando digitado incorretamente passar despercebido. A confusão de dependência visa nomes de pacotes internos que uma empresa não reservou no registro público. O atacante publica uma versão pública com um número superior, e o resolvedor escolhe a maliciosa, pensando que é uma atualização segura. E há uma nova superfície de ataque que a Aikido tem rastreado, onde nomes de pacotes são referenciados em documentações e arquivos README, mas nunca são realmente publicados. Deixados sem reivindicação, eles ficam livres para qualquer um registrar, incluindo atacantes. Agentes de codificação que fazem scraping das mesmas documentações instalarão então o que estiver lá. Todos os três são detecções que um firewall faz antes que o download ocorra.
Comportamento do script de instalação
Regras estáticas e, em firewalls mais capazes, execução em sandbox inspecionam o que os scripts de instalação de um pacote realmente fazem, onde se conectam, o que leem, o que geram. É aqui que ataques sofisticados se escondem e onde os mais simples causam danos. O hook postinstall do axios que puxou o plain-crypto-js é exatamente o padrão que esta verificação foi projetada para detectar.
Sinais de mantenedor e account takeover
Quando a conta por trás de uma biblioteca legítima e amplamente utilizada é comprometida, a versão maliciosa é distribuída para milhões de lockfiles sob um nome em que todos já confiam. Bons firewalls sinalizam os indícios de um account takeover, como uma mudança inesperada de mantenedor, um aumento de versão sem um commit de origem correspondente, ou um pacote legítimo que de repente adiciona uma nova dependência que nunca precisou antes.
Técnicas de ofuscação
Atacantes têm sido criativos sobre o que escondem e como. Exemplos recentes incluem malware escrito em caracteres Unicode invisíveis que não são renderizados em um editor de código (os-info-checker-es6), payloads ocultos em espaços em branco rolados para fora da tela (react-html2pdf.js) e código contrabandeado dentro de arquivos de imagem. Um firewall que lê apenas o que um editor humano mostraria perde todos esses casos. A verificação precisa analisar os bytes brutos.
O firewall de dependência da Aikido
Para equipes que precisam de cobertura de firewall de desenvolvedor para tudo o que os desenvolvedores instalam em suas máquinas (por exemplo, extensões IDE, extensões de navegador, servidores MCP, ferramentas de codificação de IA), Aikido Device Protection é a resposta. Ele é implantado através do seu MDM existente, funciona com a mesma Intel subjacente e oferece às equipes de segurança visibilidade centralizada em todas as estações de trabalho.
Para desenvolvedores individuais, ou equipes que desejam experimentar a verificação no momento da instalação sem implantar nada centralmente, Safe Chain é um firewall de dependência gratuito e de código aberto para npm, yarn, pnpm, pip, uv, poetry e outros gerenciadores de pacotes. Instale-o uma vez, reinicie seu shell, e cada instalação será executada através do firewall.
A inteligência por trás de ambos é a Aikido Intel, que analisa novas versões de pacotes em mais de 20 ecossistemas no momento em que são publicadas, sinalizando a maioria em uma média de seis minutos e muitas em um ou dois. Ele opera em quatro camadas (regras estáticas, execução em sandbox, raciocínio de IA entre arquivos, revisão humana para os casos mais difíceis), e o próprio feed é público e gratuito sob a licença AGPL.
Juntos, Safe Chain, Intel e Device Protection cobrem todo o caminho de instalação da cadeia de suprimentos, desde um `npm install` de um desenvolvedor até um agente de IA puxando um servidor MCP em uma estação de trabalho que ninguém está monitorando.
<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>

