Aikido

Qu'est-ce qu'un pare-feu de dépendance ?

Écrit par
Nicholas Thomson

Un pare-feu de dépendances est un point de contrôle qui bloque les paquets malveillants avant leur installation, qu’ils aient été demandés par un développeur, un pipeline d’intégration continue ou un agent de codage basé sur l’IA. Il fonctionne de manière similaire à un pare-feu réseau, à la différence près que le trafic concerné ici est constitué de paquets open source plutôt que de paquets réseau, et que le point d’entrée est la commande d’installation.

Les pare-feu de dépendances ont vu le jour car l’ampleur des attaques de la chaîne d’approvisionnement les attaques de la chaîne d’approvisionnement indispensables. Aikido analyse désormais jusqu’à 100 000 paquets malveillants par jour dans les registres open source, contre environ 20 000 il y a un an. Rien qu’au deuxième trimestre 2026, la société a analysé environ 7,5 millions de versions de paquets et en a identifié 19 500 comme malveillantes.

{{cta}}

Pourquoi les pare-feu de dépendance sont-ils nécessaires ?

Dès que votre gestionnaire de paquets lance une installation, votre ordinateur est exposé. Pour ne rien arranger, les pirates ont gagné en rapidité, et l'intelligence artificielle leur a ouvert de nouvelles voies d'accès.

Les scripts d'installation constituent le mécanisme de diffusion de la charge utile

Lorsque vous exécutez npm install, les paquets peuvent exécuter du code dans le cadre même de leur installation. C’est dans le hook « postinstall » que attaques de la chaîne d’approvisionnement de nombreuses attaques de la chaîne d’approvisionnement modernes attaques de la chaîne d’approvisionnement , car il s’exécute avec les droits de l’ développeur avant que quiconque n’ait eu l’occasion d’examiner le code. 

En mars 2026, Des pirates ont piraté le compte npm du responsable du projet Axios et a diffusé deux versions malveillantes de cette bibliothèque (utilisée dans environ 100 millions de téléchargements hebdomadaires). La charge utile s'est introduite via une dépendance transitive récemment ajoutée, plain-crypto-js, dont le hook post-installation a implanté un RAT multiplateforme sur chaque machine ayant exécuté le programme d'installation.

Les agents de codage et les serveurs MCP constituent de nouvelles surfaces d'installation

L'installation des paquets n'est plus toujours lancée par un utilisateur. Des agents de codage et des serveurs MCP récupèrent des paquets depuis npm sur les machines des développeurs ayant accès à du code sensible et à des identifiants. En septembre 2025, un pirate se faisant passer pour Postmark a publié sur npm un serveur MCP malveillant qui, à l'insu des utilisateurs, envoyait en copie cachée (BCC) chaque e-mail sortant vers une adresse contrôlée par le pirate. Il s'agissait du premier serveur MCP malveillant confirmé sur npm, et cela annonce la tendance à venir.

Les agents peuvent également se tromper, et les pirates ont commencé à enregistrer les noms de paquets pour tirer parti de cette faille. Les agents qui font une erreur risquent désormais d'installer un paquet préparé à l'avance par le pirate. Cette attaque, parfois appelée « slopsquatting », n'existait pas en tant que catégorie il y a deux ans. 

Les fenêtres d'attaque sont de plus en plus courtes

La version malveillante plain-crypto-js Le paquet à l'origine de l'attaque contre Axios n'a existé que moins de 24 heures avant d'être retiré. Le débogage et compromis « chalk » a touché 18 paquets totalisant plus de 2 milliards de téléchargements hebdomadaires en une seule vague. Toute mesure de protection mise en place après l'installation, qu'il s'agisse d'une analyse nocturne ou d'un avis public, arrive trop tard.

Un logiciel auquel vous faites confiance peut se retourner contre vous

attaques de la chaîne d’approvisionnement les plus graves attaques de la chaîne d’approvisionnement l’année dernière ont touché des référentiels enregistrant des millions de téléchargements hebdomadaires. Les pirates ont compromis les comptes des responsables de maintenance d’axios, de chalk et de debug, ont volé des jetons de publication et ont publié des versions malveillantes des mêmes paquets que les utilisateurs avaient déjà dans leurs fichiers de verrouillage. La réputation et le nombre de téléchargements ne vous protègent pas contre une nouvelle version malveillante. La vérification doit avoir lieu à chaque installation.

Ce que vérifie un pare-feu de dépendance

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 éléments suivants. Et chaque vérification doit s'appliquer aux dépendances transitives, car la plupart des attaques modernes se nichent à plusieurs niveaux de profondeur dans l'arborescence des dépendances. Le code malveillant plain-crypto-js Le paquet à l'origine de l'attaque Axios était une dépendance transitive que presque personne n'avait installée explicitement.

Logiciels malveillants connus

La vérification de base. Le pare-feu compare chaque paquet à une base de données en temps réel répertoriant les menaces et bloque tout ce qui a déjà été signalé. Cela concerne les portes dérobées, les programmes de vol d’identifiants, les mineurs de cryptomonnaie et tout autre paquet connu pour être malveillant. L’élément essentiel ici est que la mise à jour de la base de données s’effectue plus rapidement que l’attaquant. Un paquet malveillant signalé trois jours après sa publication a probablement déjà été exécuté sur l’ordinateur d’un utilisateur.

Âge minimum requis pour l'achat d'un forfait

La plupart des versions malveillantes sont détectées et retirées dans les un ou deux jours suivant leur publication. Un pare-feu qui bloque ou retarde les paquets publiés au cours des dernières 24 à 48 heures élimine complètement toute possibilité de détection précoce. Le reste de l’écosystème en arrive à la même conclusion. Tous les principaux gestionnaires de paquets de l’écosystème npm prennent désormais en charge un paramètre définissant un âge minimum de publication, qui refuse d’installer toute version de paquet plus récente qu’un seuil configurable. pnpm, Yarn, Bun et npm lui-même intègrent tous cette fonctionnalité.

Confusion entre dépendances, « typosquats » et noms non réclamés

Il s’agit de trois techniques étroitement liées. Les « typosquats » imitent les noms de paquets populaires (par exemple, « lodahs » au lieu de « lodash ») et misent sur le fait qu’une commande mal saisie passe inaperçue. La « confusion de dépendances » cible les noms de paquets internes qu’une entreprise n’a pas réservés dans le registre public. L’attaquant publie une version publique avec un numéro plus élevé, et le résolveur sélectionne la version malveillante, pensant qu’il s’agit d’une mise à jour sûre. Il existe également une nouvelle surface d’attaque Aikido , où les noms de paquets sont mentionnés dans la documentation et les fichiers README, mais ne sont jamais réellement publiés. S’ils ne sont pas revendiqués, n’importe qui peut les enregistrer, y compris des attaquants. Les agents de codage qui extraient ces mêmes documents installeront alors tout ce qui s’y trouve. Ces trois types d’attaques sont détectés par un pare-feu avant même que le téléchargement n’ait lieu.

Comportement du script d'installation

Les règles statiques et, dans les pare-feu plus performants, l'exécution en bac à sable analysent ce que font réellement les scripts d'installation d'un paquet, où ils se connectent, ce qu'ils lisent et ce qu'ils lancent. C'est là que se cachent les attaques sophistiquées, et que les attaques rudimentaires causent des dégâts. Le hook post-installation d'Axios qui a intégré « plain-crypto-js » correspond exactement au type de scénario que ce contrôle est censé détecter.

Signaux relatifs au responsable de la maintenance et à la prise de contrôle de compte

Lorsqu'un compte associé à une bibliothèque légitime et largement utilisée est piraté, la version malveillante est diffusée vers des millions de fichiers de verrouillage sous un nom auquel tout le monde fait déjà confiance. Les bons pare-feu détectent les signes d'un piratage de compte, tels qu'un changement inattendu de responsable, une mise à jour de version sans commit correspondant dans le code source, ou encore l'ajout soudain, par un paquet légitime, d'une nouvelle dépendance dont il n'avait jamais eu besoin auparavant.

Techniques d'obfuscation

Les pirates font preuve de plus en plus de créativité quant à ce qu’ils dissimulent et à la manière dont ils s’y prennent. Parmi les exemples récents, on peut citer des logiciels malveillants écrits en caractères Unicode invisibles qui ne s'affichent pas dans un éditeur de code (os-info-checker-es6), des charges utiles dissimulées dans des espaces blancs défilant hors de l'écran (react-html2pdf.js) et du code dissimulé dans des fichiers image. Un pare-feu qui se contente de lire ce qu'un éditeur humain pourrait afficher passe à côté de tous ces éléments. La vérification doit porter sur les octets bruts.

Le pare-feu de dépendances Aikido

Pour les équipes qui ont besoin d'une protection par pare-feu pour tout ce que les développeurs installent sur leurs machines (par exemple, des extensions d'IDE, des extensions de navigateur, des serveurs MCP ou des outils de codage basés sur l'IA), Aikido Protection est la solution idéale. Cette solution se déploie via votre système MDM existant, fonctionne sur la même infrastructure Intel et offre aux équipes de sécurité une visibilité centralisée sur l'ensemble des postes de travail.

Pour les développeurs individuels ou les équipes qui souhaitent tester la vérification au moment de l'installation sans avoir à déployer quoi que ce soit de manière centralisée, Safe Chain est un pare-feu de dépendances gratuit et open source destiné à npm, yarn, pnpm, pip, uv, poetry et d'autres gestionnaires de paquets. Installez-le une seule fois, redémarrez votre shell, et chaque installation passera par le pare-feu.

Derrière ces deux solutions se cache Aikido , qui analyse les nouvelles versions des paquets dans plus de 20 écosystèmes dès leur publication, en signalant la plupart d'entre elles en six minutes en moyenne, et beaucoup d'autres en une ou deux minutes. Le système fonctionne selon quatre niveaux (règles statiques, exécution en sandbox, raisonnement par IA sur les fichiers, vérification humaine pour les cas les plus complexes), et le flux lui-même est public et gratuit sous licence AGPL.

À eux trois, Safe Chain, Intel et Device Protection couvrent l'ensemble du parcours d'installation tout au long de la chaîne d'approvisionnement, depuis la commande « npm install » d'un développeur jusqu'à un agent IA qui télécharge un serveur MCP sur un poste de travail laissé sans surveillance.

Comment empêcher l'installation de paquets npm malveillants ?

Installez un pare-feu de dépendances qui s'exécute lors de la commande d'installation. Safe Chain est un outil gratuit et open source qui s'intègre à npm, yarn, pnpm, pip et d'autres gestionnaires de paquets, et vérifie chaque installation à l'aide Aikido avant la fin du téléchargement. Si le paquet est signalé comme suspect, l'installation échoue et rien n'est installé sur votre machine. La configuration se fait en une seule commande, suivie d'un redémarrage du shell.

Comment puis-je me protéger contre le « typosquatting » et la confusion liée aux dépendances ?

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.

Comment puis-je empêcher les agents de programmation basés sur l'IA d'installer des paquets malveillants ?

Lorsqu'un agent tente d'installer via npm un paquet dont le nom a été inventé de toutes pièces et qu'un attaquant a préenregistré (une attaque appelée « slop squatting »), un pare-feu de dépendances empêche son téléchargement au moment de l'installation. Cependant, les agents s'installent également via des extensions d'IDE, des extensions de navigateur et des serveurs MCP qui contournent complètement le terminal. C'est pourquoi Aikido Protection couvre tout ce qu'une machine de développeur peut installer, y compris les extensions et les serveurs MCP.

Combien coûte Safe Chain ?

Rien. Safe Chain est un logiciel gratuit et open source sous licence MIT, et son utilisation ne nécessite pas de Aikido . La source d'informations sur les menaces qu'il analyse, Aikido , est également gratuite et accessible à tous.

Comment mettre en place un pare-feu de dépendances à l'échelle de toute une équipe ?

Aikido Protection fournit un pare-feu de dépendances au niveau de l'organisation, qui se déploie via n'importe quelle solution MDM que vous utilisez déjà (Jamf, Kandji, Fleet, etc.), afin que chaque poste de travail soit protégé dès le premier jour. Il s'appuie sur les mêmes renseignement sur les menaces Safe Chain et offre aux équipes de sécurité une visibilité centralisée sur l'ensemble des machines.

Partager :

https://www.aikido.dev/blog/what-is-a-dependency-firewall

<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>

S'abonner aux actualités

4,7/5
Fatigué des faux positifs ?
Essayez Aikido, comme 100 000 autres.
Commencez maintenant
Obtenez une démonstration personnalisée

Approuvé par plus de 100 000 équipes

Réserver maintenant
Analysez votre application à la recherche d'IDORs et de chemins d'attaque réels

Approuvé par plus de 100 000 équipes

Démarrer l'analyse
Découvrez comment le pentest IA teste votre application

Approuvé par plus de 100 000 équipes

Démarrer les tests
Essayez Safe Chain, c'est gratuit

Pare-feu de dépendances au moment de l'installation

Procurez-vous une chaîne de sécurité

Sécurisez votre environnement dès maintenant.

Sécurisez votre code, votre cloud et votre environnement d’exécution dans un système centralisé unique.
Détectez et corrigez les vulnérabilités rapidement et automatiquement.

Aucune carte de crédit requise | Résultats en 32 secondes.