Uma firewall de dependências é um ponto de controlo que bloqueia pacotes maliciosos antes da sua instalação, independentemente de terem sido solicitados por um programador, por um pipeline de CI ou por um agente de codificação baseado em IA. Funciona de forma semelhante a uma firewall de rede, com a diferença de que, neste caso, o tráfego consiste em pacotes de código aberto em vez de pacotes de rede, e o ponto de entrada é o comando de instalação.
Os firewalls de dependências existem porque o volume de ataques à Supply chain os ataques à Supply chain necessários. Aikido analisa agora até 100 000 pacotes maliciosos por dia em registos de código aberto, o que representa um aumento em relação aos cerca de 20 000 de há um ano. Só no segundo trimestre de 2026, analisou cerca de 7,5 milhões de versões de pacotes e confirmou que 19 500 eram maliciosas.
{{cta}}
Por que razão são necessários os firewalls de dependência?
No momento em que o seu gestor de pacotes executa uma instalação, o seu computador fica exposto. Para piorar a situação, os atacantes tornaram-se mais rápidos e a IA proporcionou-lhes novas formas de acesso.
Os scripts de instalação são o mecanismo de entrega da carga útil
Quando você executa npm install, os pacotes podem executar código como parte da própria instalação. O gancho «postinstall» é onde muitos ataques à Supply chain modernos ataques à Supply chain , uma vez que é executado com as permissões do programador antes de alguém ter oportunidade de analisar o código.
Em março de 2026, Os atacantes comprometeram a conta npm do responsável pela manutenção do Axios e disseminou duas versões maliciosas da biblioteca (utilizada em cerca de 100 milhões de downloads semanais). A carga maliciosa foi introduzida através de uma dependência transitiva recentemente adicionada, plain-crypto-js, cujo hook pós-instalação introduziu um RAT multiplataforma em todas as máquinas que executaram a instalação.
Os agentes de codificação e os servidores MCP são novas plataformas de instalação
A instalação de pacotes já não é sempre iniciada por um utilizador. Agentes de programação e servidores MCP descarregam do npm em computadores de programadores com acesso a código sensível e credenciais. Em setembro de 2025, um atacante que se fazia passar pela Postmark publicou um servidor MCP malicioso no npm que, discretamente, colocava em cópia oculta (BCC) todos os e-mails enviados para um endereço controlado pelo atacante. Foi o primeiro servidor MCP malicioso confirmado no npm e é um sinal do que está para vir.
Os agentes também sofrem de «alucinações», e os atacantes começaram a registar os nomes dos pacotes para tirar partido desta situação. Os agentes que adivinham mal correm agora o risco de instalar um pacote que o atacante preparou antecipadamente. Este ataque, por vezes denominado «slopsquatting», ainda não existia como categoria há dois anos.
Os intervalos de tempo para os ataques estão a ficar mais curtos
A versão maliciosa plain-crypto-js O pacote que serviu de base ao ataque ao Axios esteve disponível durante menos de 24 horas antes de ser retirado. O compromisso entre a depuração e o giz atingiu 18 pacotes com mais de 2 mil milhões de downloads semanais no total, numa única onda. Qualquer medida de defesa que seja implementada após a instalação, quer se trate de uma verificação noturna ou de um aviso público, chega demasiado tarde.
Um pacote em que confias pode virar-se contra ti
ataques à Supply chain mais graves ataques à Supply chain último ano envolveram bibliotecas com milhões de downloads semanais. Os atacantes comprometeram as contas dos responsáveis pela manutenção do axios, do chalk e do debug, roubaram tokens de publicação e introduziram versões maliciosas dos mesmos pacotes que os utilizadores já tinham nos seus ficheiros de bloqueio. A reputação e o número de downloads não protegem contra uma nova versão maliciosa. A verificação tem de ser feita em cada instalação.
O que um firewall de dependências verifica
As verificações específicas variam consoante as ferramentas, mas um firewall de dependências que valha a pena utilizar abrange a maior parte dos seguintes aspetos. Além disso, cada verificação tem de se aplicar às dependências transitivas, uma vez que a maioria dos ataques modernos se encontra a várias camadas de profundidade na árvore de dependências. O código malicioso plain-crypto-js O pacote que serviu de base ao ataque ao Axios era uma dependência transitiva que quase ninguém tinha instalado explicitamente.
Malware conhecido
A verificação de base. A firewall compara cada pacote com uma base de dados de ameaças em tempo real e bloqueia tudo o que já tenha sido sinalizado. Isto abrange backdoors, programas de roubo de credenciais, minadores de criptomoedas e outros pacotes conhecidos por serem hostis. O mais importante aqui é que a base de dados de inteligência se atualiza mais rapidamente do que o atacante. Um pacote malicioso sinalizado três dias após a sua publicação provavelmente já foi executado no computador de alguém.
Idade mínima para a aquisição do pacote
A maioria das versões maliciosas é detetada e retirada em apenas um ou dois dias após a publicação. Uma firewall que bloqueia ou atrasa a instalação de pacotes publicados nas últimas 24 a 48 horas elimina por completo a janela de deteção precoce. O resto do ecossistema está a chegar à mesma conclusão. Todos os principais gestores de pacotes do ecossistema npm suportam agora uma configuração de idade mínima de lançamento que recusa a instalação de qualquer versão de pacote mais recente do que um limiar configurável. O pnpm, o Yarn, o Bun e o próprio npm incluem todos esta funcionalidade.
Confusão de dependências, «typosquats» e nomes não reivindicados
Trata-se de três padrões intimamente relacionados. Os «typosquats» imitam nomes de pacotes populares (por exemplo, «lodahs» em vez de «lodash») e contam com o facto de um comando digitado incorretamente passar despercebido. A «confusão de dependências» tem como alvo nomes de pacotes internos que uma empresa não reservou no registo público. O atacante publica uma versão pública com um número mais elevado e o resolvedor seleciona a versão maliciosa, pensando que se trata de uma atualização segura. E há uma nova superfície de ataque Aikido monitorizar, em que os nomes dos pacotes são referenciados na documentação e nos ficheiros README, mas nunca são efetivamente publicados. Se não forem reivindicados, ficam disponíveis para qualquer pessoa registar, incluindo os atacantes. Os agentes de codificação que extraem os mesmos documentos irão então instalar o que quer que lá esteja. Todos os três são detetados por uma firewall antes de o download ocorrer.
Comportamento do script de instalação
As regras estáticas e, em firewalls mais avançados, a execução em ambiente isolado (sandbox) analisam o que os scripts de instalação de um pacote realmente fazem, aonde se ligam, o que lêem e o que executam. É aqui que se escondem os ataques sofisticados e onde os ataques mais simples causam os seus danos. O gancho de pós-instalação do axios que introduziu o plain-crypto-js é exatamente o padrão que esta verificação foi concebida para detetar.
Sinais relativos ao responsável pela manutenção e à apropriação de contas
Quando a conta associada a uma biblioteca legítima e amplamente utilizada é comprometida, a versão maliciosa é distribuída para milhões de ficheiros de bloqueio sob um nome em que todos já confiam. Os bons firewalls detetam os sinais de uma apropriação de conta, tais como uma mudança inesperada de responsável pela manutenção, um aumento de versão sem um commit correspondente no código-fonte ou um pacote legítimo que, de repente, adiciona uma nova dependência de que nunca precisou antes.
Técnicas de ofuscação
Os atacantes têm-se tornado cada vez mais criativos no que dizem respeito ao que escondem e à forma como o fazem. Exemplos recentes incluem malware escrito em caracteres Unicode invisíveis que não são apresentados num editor de código (os-info-checker-es6), cargas úteis escondidas em espaços em branco que ficam fora do ecrã (react-html2pdf.js) e código infiltrado em ficheiros de imagem. Uma firewall que apenas analisa o que um editor humano veria não deteta nada disto. A verificação tem de analisar os bytes em bruto.
A firewall de dependências Aikido
Para equipas que necessitam de proteção por firewall para tudo o que os programadores instalam nos seus computadores (por exemplo, extensões de IDE, extensões de navegador, servidores MCP, ferramentas de programação com IA), Aikido Protection é a solução. É implementado através do seu MDM existente, funciona na mesma plataforma Intel subjacente e proporciona às equipas de segurança uma visibilidade centralizada de todas as estações de trabalho.
Para programadores individuais ou equipas que pretendam experimentar a verificação durante a instalação sem terem de implementar nada a nível central, o Safe Chain é um firewall de dependências gratuito e de código aberto para o npm, yarn, pnpm, pip, uv, poetry e outros gestores de pacotes. Basta instalá-lo uma vez, reiniciar o shell e todas as instalações passarão pelo firewall.
A tecnologia por trás de ambas é Aikido , que analisa novas versões de pacotes em mais de 20 ecossistemas assim que são publicadas, identificando a maioria em média seis minutos e muitas delas em apenas um ou dois. Funciona em quatro camadas (regras estáticas, execução em sandbox, raciocínio de IA sobre ficheiros e revisão humana para os casos mais complexos), e o próprio feed é público e gratuito ao abrigo da licença AGPL.
Em conjunto, a Safe Chain, a Intel e a Device Protection cobrem todo o percurso de instalação ao longo da cadeia de abastecimento, desde o comando «npm install» de um programador até um agente de IA que acede a um servidor MCP numa estação de trabalho que ninguém está a vigiar.
<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>

