Un pare-feu de dépendances est un point de contrôle qui bloque les packages malveillants avant leur installation, qu'ils soient demandés par un développeur, un pipeline CI ou un agent de codage IA. Il fonctionne de manière similaire à un pare-feu réseau, à l'exception que le trafic ici est constitué de packages open-source au lieu de paquets réseau, et le point d'entrée est la commande d'installation.
Les pare-feu de dépendances existent car le volume des attaques de la chaîne d’approvisionnement les rend nécessaires. Aikido Intel analyse désormais jusqu'à 100 000 paquets malveillants par jour sur les registres open source, contre environ 20 000 il y a un an. Rien qu'au deuxième trimestre 2026, il a analysé environ 7,5 millions de versions de paquets et en a confirmé 19 500 comme malveillantes.
{{cta}}
Pourquoi les pare-feu de dépendances sont-ils nécessaires ?
Dès que votre gestionnaire de packages exécute une installation, votre machine est exposée. Pire encore, les attaquants sont devenus plus rapides, et l'IA leur a ouvert de nouvelles voies d'accès.
Les scripts d'installation sont le mécanisme de livraison de charge utile
Lorsque vous exécutez npm install, les packages peuvent exécuter du code dans le cadre de l'installation elle-même. Le hook postinstall est l'endroit où résident de nombreuses attaques modernes de la chaîne d’approvisionnement, car il s'exécute avec les permissions du développeur avant que quiconque n'ait la possibilité d'examiner le code.
En mars 2026, des attaquants ont piraté le compte npm du mainteneur d'axios et ont poussé deux versions malveillantes de la bibliothèque (utilisée pour environ 100 millions de téléchargements hebdomadaires). La charge utile est arrivée via une dépendance transitive nouvellement ajoutée, plain-crypto-js, dont le hook postinstall a déposé un RAT multiplateforme sur chaque machine ayant exécuté l'installation.
Les agents de codage et les serveurs MCP sont de nouvelles surfaces d'installation
L'installation de packages n'est plus toujours initiée par un humain. Les agents de codage et les serveurs MCP tirent des packages de npm sur des machines de développeurs ayant accès à du code et des identifiants sensibles. En septembre 2025, un attaquant se faisant passer pour Postmark a publié un serveur MCP malveillant sur npm qui a discrètement mis en CCI chaque e-mail sortant vers une adresse contrôlée par l'attaquant. C'était le premier serveur MCP malveillant confirmé sur npm, et c'est un signe de ce qui est à venir.
Les agents hallucinent également, et les attaquants ont commencé à enregistrer des noms de packages pour en tirer parti. Les agents qui se trompent risquent désormais d'installer un package préparé à l'avance par l'attaquant. Cette attaque, parfois appelée slopsquatting, n'existait pas en tant que catégorie il y a deux ans.
Les fenêtres d'attaque se raccourcissent
La version malveillante plain-crypto-js package qui a alimenté l'attaque axios a existé moins de 24 heures avant d'être intégré. Le compromission de debug et chalk a touché 18 packages avec plus de 2 milliards de téléchargements hebdomadaires combinés en une seule vague. Toute défense qui s'exécute après une installation, qu'il s'agisse d'un scan nocturne ou d'un avis public, est trop tardive.
Un package auquel vous faites confiance peut se retourner contre vous
Les attaques de la chaîne d’approvisionnement les plus importantes de l'année dernière ont impliqué des bibliothèques avec des millions de téléchargements hebdomadaires. Des attaquants ont compromis les comptes des mainteneurs d'axios, chalk et debug, ont volé des jetons de publication et ont poussé des versions malveillantes des mêmes packages que les utilisateurs avaient déjà dans leurs lockfiles. La réputation et le nombre de téléchargements ne vous protègent pas d'une nouvelle version malveillante. La vérification doit avoir lieu à chaque installation.
Ce qu'un pare-feu de dépendances vérifie
Les vérifications spécifiques varient d'un outil à l'autre, mais un pare-feu de dépendances digne de ce nom couvre la plupart des points suivants. Et chaque vérification doit s'appliquer aux dépendances transitives, car la plupart des attaques modernes se situent à plusieurs niveaux de profondeur dans l'arbre des dépendances. Le package malveillant plain-crypto-js qui a alimenté l'attaque axios était une dépendance transitive que presque personne n'avait explicitement installée.
Malware connu
La vérification de base. Le pare-feu compare chaque package à un flux de menaces en temps réel et bloque tout ce qui a déjà été signalé. Cela couvre les backdoors, les voleurs d'identifiants, les mineurs de crypto et d'autres packages connus pour être hostiles. L'élément crucial ici est que le flux d'intelligence se déplace plus vite que l'attaquant. Un package malveillant signalé trois jours après sa publication a probablement déjà été exécuté sur la machine de quelqu'un.
Âge minimal du package
La plupart des versions malveillantes sont détectées et retirées dans un délai d'un ou deux jours après leur publication. Un pare-feu qui bloque ou retarde les packages publiés au cours des dernières 24 à 48 heures élimine toute la fenêtre de détection précoce. Le reste de l'écosystème arrive à la même conclusion. Chaque gestionnaire de packages majeur de l'écosystème npm prend désormais en charge un paramètre d'âge minimal de publication qui refuse d'installer toute version de package plus récente qu'un seuil configurable. pnpm, Yarn, Bun, et npm lui-même l'intègrent tous.
Confusion de dépendances, typosquatting et noms non revendiqués
Ce sont trois modèles étroitement liés. Le typosquatting imite les noms de packages populaires (par exemple, lodahs au lieu de lodash) et repose sur une commande mal tapée qui passe inaperçue. La confusion de dépendances cible les noms de packages internes qu'une entreprise n'a pas réservés sur le registre public. L'attaquant publie une version publique avec un numéro plus élevé, et le résolveur choisit la version malveillante, pensant qu'il s'agit d'une mise à jour sûre. Et il existe une nouvelle surface d'attaque qu'Aikido a suivie, où les noms de packages sont référencés dans la documentation et les fichiers README mais ne sont jamais réellement publiés. Laissés non revendiqués, ils sont libres d'être enregistrés par n'importe qui, y compris les attaquants. Les agents de codage qui parcourent les mêmes documents installeront alors ce qui s'y trouve. Ces trois types d'attaques sont détectés par un pare-feu avant le téléchargement.
Comportement des scripts d'installation
Les règles statiques et, dans les pare-feu plus performants, l'exécution en sandbox inspectent ce que les scripts d'installation d'un paquet font réellement, où ils se connectent, ce qu'ils lisent, ce qu'ils génèrent. C'est là que se cachent les attaques sophistiquées et où les attaques moins coûteuses causent leurs dommages. Le hook postinstall d'axios qui a importé plain-crypto-js est exactement le modèle que cette vérification est conçue pour détecter.
Signaux de prise de contrôle de mainteneur et de compte
Lorsqu'un compte derrière une bibliothèque légitime et largement utilisée est compromis, la version malveillante est livrée à des millions de lockfiles sous un nom que tout le monde fait déjà confiance. Les bons pare-feu signalent les signes d'une prise de contrôle de compte, tels qu'un changement inattendu de mainteneur, une augmentation de version sans commit source correspondant, ou un package légitime ajoutant soudainement une nouvelle dépendance dont il n'a jamais eu besoin auparavant.
Techniques d'obfuscation
Les attaquants sont devenus créatifs quant à ce qu'ils cachent et comment. Des exemples récents incluent des malwares écrits en caractères Unicode invisibles qui ne s'affichent pas dans un éditeur de code (os-info-checker-es6), des charges utiles cachées dans des espaces blancs défilés hors de l'écran (react-html2pdf.js), et du code dissimulé dans des fichiers image. Un pare-feu qui ne lit que ce qu'un éditeur humain afficherait manque toutes ces techniques. La vérification doit examiner les octets bruts.
Le pare-feu de dépendances d'Aikido
Pour les équipes qui ont besoin d'une couverture de pare-feu développeur pour tout ce que les développeurs installent sur leurs machines (par exemple, extensions d'IDE, extensions de navigateur, serveurs MCP, outils de codage IA), Aikido Device Protection est la solution. Il se déploie via votre MDM existant, fonctionne sur la même base Intel, et offre aux équipes de sécurité une visibilité centralisée sur chaque poste de travail.
Pour les développeurs individuels, ou les équipes qui souhaitent essayer la vérification au moment de l'installation sans déployer quoi que ce soit de manière centralisée, Safe Chain est un pare-feu de dépendances gratuit et open-source pour npm, yarn, pnpm, pip, uv, poetry et d'autres gestionnaires de packages. Installez-le une fois, redémarrez votre shell, et chaque installation passera par le pare-feu.
L'intelligence derrière les deux est Aikido Intel, qui analyse les nouvelles versions de packages sur plus de 20 écosystèmes dès leur publication, en signalant la plupart en moyenne en six minutes et beaucoup en une ou deux. Il fonctionne en quatre couches (règles statiques, exécution en sandbox, raisonnement IA sur les fichiers, examen humain pour les cas les plus difficiles), et le flux lui-même est public et gratuit sous licence AGPL.
Ensemble, Safe Chain, Intel et Device Protection couvrent l'intégralité du chemin d'installation de la chaîne d'approvisionnement, depuis l'installation npm d'un développeur jusqu'à un agent IA important un serveur MCP sur un poste de travail non surveillé.
<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>

