Two npm supply chain attacks hit the crypto world in the span of four days in July 2026. On July 8, a compromised GitHub account silently hooked the Injective SDK's key-derivation functions, exfiltrating BIP-39 seed phrases from 175,000 monthly downloads across 18 republished packages. Three days later, on July 11, jscrambler — a commercial JavaScript security tool — was trojaned with a 7.8 MB Rust infostealer that targeted AWS, Azure, GCP, Bitwarden, and the config files of Claude Desktop and Cursor. A headline from Startup Fortune summed it up bluntly: "Two npm attacks in four days show crypto's weak point is the supply chain."

Deux attaques supply chain npm ont frappé le monde crypto en l'espace de quatre jours en juillet 2026. Le 8 juillet, un compte GitHub compromis a silencieusement hooké les fonctions de dérivation de clés de l'Injective SDK, exfiltrant des seed phrases BIP-39 depuis 175 000 téléchargements mensuels via 18 packages republiés. Trois jours plus tard, le 11 juillet, jscrambler — outil commercial de sécurité JavaScript — a été troyanisé avec un infostealer Rust de 7,8 Mo ciblant AWS, Azure, GCP, Bitwarden et les fichiers de config de Claude Desktop et Cursor. Un titre de Startup Fortune l'a résumé sans détour : « Deux attaques npm en quatre jours montrent que le maillon faible de la crypto, c'est la supply chain. »

These attacks are not anomalies. They are the new normal for anyone building Web3 applications with npm dependencies. Supply chain attacks have officially overtaken smart contract exploits as the most devastating attack vector in the crypto ecosystem. The Bybit hack in February 2025 — $1.46 billion stolen through a compromised UI library — made this shift impossible to ignore. This guide explains how these attacks work at the technical level, what North Korean state actors specifically target on your development machine, and how to architect Web3 applications so that a compromised npm dependency cannot steal cryptographic keys — no matter what it tries.

Ces attaques ne sont pas des anomalies. Elles constituent la nouvelle norme pour quiconque construit des applications Web3 avec des dépendances npm. Les attaques supply chain ont officiellement dépassé les exploits de smart contracts comme vecteur d'attaque le plus dévastateur dans l'écosystème crypto. Le hack Bybit en février 2025 — 1,46 milliard de dollars volés via une bibliothèque UI compromise — a rendu ce changement impossible à ignorer. Ce guide explique comment ces attaques fonctionnent au niveau technique, ce que les acteurs étatiques nord-coréens ciblent spécifiquement sur votre machine de développement, et comment architecturer les applications Web3 de sorte qu'une dépendance npm compromise ne puisse pas voler des clés cryptographiques — quoi qu'elle tente.

$1.46B
Bybit theft via UI library
Vol Bybit via bibliothèque UI
Source: NCC Group, Check Point Research (Feb 2025)
2.6B
Weekly downloads at risk (chalk/debug Shai-Hulud)
Téléchargements hebdo à risque (chalk/debug)
Source: Upwind, Wiz Blog, Semgrep (Sept 2025)
76%
Of all crypto hack losses attributed to DPRK (Q1-Q2 2026)
Des pertes crypto attribuées à la Corée du Nord (T1-T2 2026)
Source: sanctions.io, Crypto Impact Hub (2026)
49 min
Injective SDK malicious versions live before removal
Durée des versions malveillantes Injective avant suppression
Source: StepSecurity, BleepingComputer (Jul 2026)

The Bybit Precedent: How $1.46 Billion Was Stolen Through a JavaScript Library

Le Précédent Bybit : Comment 1,46 Milliard de Dollars ont été Volés via une Bibliothèque JavaScript

On February 21, 2025, attackers executed the largest cryptocurrency theft ever recorded. Bybit lost more than $1.46 billion — over 401,000 ETH — from a cold wallet. The attack did not exploit any vulnerability in the Ethereum protocol, any smart contract flaw, or any weakness in Bybit's own code. It exploited a UI library.

Le 21 février 2025, des attaquants ont réalisé le plus grand vol de cryptomonnaies jamais enregistré. Bybit a perdu plus de 1,46 milliard de dollars — plus de 401 000 ETH — depuis un portefeuille froid. L'attaque n'a exploité aucune vulnérabilité dans le protocole Ethereum, aucune faille de smart contract, ni aucune faiblesse dans le propre code de Bybit. Elle a exploité une bibliothèque UI.

The target was Safe{Wallet}, a widely-used multi-signature wallet solution. Attackers social-engineered a Safe{Wallet} developer, compromised their workstation, and used stolen AWS credentials to access the S3 bucket that hosted the wallet's frontend JavaScript. The injected code then manipulated what Bybit's signers saw on their screens during a routine transfer, causing them to unknowingly approve a transaction that drained the wallet to attacker-controlled addresses. Everything looked legitimate because the compromise happened at the UI layer — the layer that npm dependencies directly control.

La cible était Safe{Wallet}, une solution de portefeuille multi-signature largement utilisée. Les attaquants ont usé d'ingénierie sociale contre un développeur Safe{Wallet}, compromis sa machine, et utilisé des identifiants AWS volés pour accéder au bucket S3 hébergeant le JavaScript frontend du portefeuille. Le code injecté a ensuite manipulé ce que les signataires de Bybit voyaient à l'écran lors d'un transfert de routine, les amenant à approuver inconsciemment une transaction qui a vidé le portefeuille vers des adresses contrôlées par l'attaquant. Tout semblait légitime car la compromission s'est produite au niveau de la couche UI — la couche que les dépendances npm contrôlent directement.

The lesson for Web3 developers is not "use a better wallet UI." The lesson is that any dependency with access to the DOM, to transaction-signing APIs, or to the process memory where private keys reside is a potential attack vector — and the attacker does not need to exploit your code at all.

La leçon pour les développeurs Web3 n'est pas « utilisez une meilleure interface de portefeuille ». La leçon est que toute dépendance ayant accès au DOM, aux API de signature de transactions, ou à la mémoire de processus où résident les clés privées, est un vecteur d'attaque potentiel — et l'attaquant n'a pas besoin d'exploiter votre propre code.

Shai-Hulud: When chalk and debug Became Crypto Drainers (September 2025)

Shai-Hulud : Quand chalk et debug Sont Devenus des Crypto Drainers (Septembre 2025)

On September 8, 2025, npm's first genuinely self-propagating malware turned 18 popular packages — including chalk and debug — into cryptocurrency drainers. Sonatype and Socket identified close to 500 impacted packages by September 16, with combined weekly downloads exceeding 2.6 billion. The initial vector was a phishing email that mimicked an npm account recovery notification, sent from a fake domain (npmjs.help). The attacker collected the maintainer's username, password, and a live TOTP code, then published malicious versions within 16 minutes of gaining access.

Le 8 septembre 2025, le premier malware véritablement auto-propagant de npm a transformé 18 packages populaires — dont chalk et debug — en draineurs de cryptomonnaies. Sonatype et Socket ont identifié près de 500 packages impactés au 16 septembre, avec des téléchargements hebdomadaires cumulatifs dépassant 2,6 milliards. Le vecteur initial était un email de phishing imitant une notification de récupération de compte npm, envoyé depuis un faux domaine (npmjs.help). L'attaquant a collecté le nom d'utilisateur, le mot de passe et un code TOTP en direct du mainteneur, puis publié des versions malveillantes dans les 16 minutes suivant l'obtention de l'accès.

The malicious code executed in browser environments with surgical precision. It hooked into window.ethereum — the Web3 provider injected by MetaMask and most other browser wallets — to intercept outgoing transaction calls. When a user initiated a transaction, the code silently replaced the recipient address with an attacker-controlled address, using a Levenshtein nearest-match algorithm to substitute visually similar addresses that would pass a casual glance. It also overrode fetch and XMLHttpRequest to scan API responses for blockchain addresses, then replaced them on the fly. The malicious versions stayed live for two hours — but in npm terms, two hours is enough to poison millions of node_modules directories.

Le code malveillant s'exécutait dans les environnements navigateur avec une précision chirurgicale. Il s'accrochait à window.ethereum — le fournisseur Web3 injecté par MetaMask et la plupart des autres portefeuilles navigateur — pour intercepter les appels de transactions sortantes. Lorsqu'un utilisateur initiait une transaction, le code remplaçait silencieusement l'adresse du destinataire par une adresse contrôlée par l'attaquant, en utilisant un algorithme de distance de Levenshtein pour substituer des adresses visuellement similaires passant inaperçues au premier coup d'œil. Il surchargeait également fetch et XMLHttpRequest pour analyser les réponses API à la recherche d'adresses blockchain, puis les remplaçait à la volée. Les versions malveillantes sont restées en ligne deux heures — mais en termes npm, deux heures suffisent à empoisonner des millions de répertoires node_modules.

The Shai-Hulud worm's self-propagation mechanism was what made it historically significant: once installed, it searched the local npm registry configuration and published malicious versions of other packages the same account had access to, spreading without any further action from the attacker. This is the characteristic that separates the 2025-2026 threat landscape from everything that came before.

Le mécanisme d'auto-propagation du ver Shai-Hulud est ce qui l'a rendu historiquement significatif : une fois installé, il recherchait la configuration du registre npm local et publiait des versions malveillantes des autres packages auxquels le même compte avait accès, se propageant sans aucune action supplémentaire de l'attaquant. C'est cette caractéristique qui distingue le paysage des menaces 2025-2026 de tout ce qui précèdait.

Injective July 2026: Hooking Key-Derivation Functions via Fake Telemetry

Injective Juillet 2026 : Hook des Fonctions de Dérivation de Clés via Fausse Télémétrie

The July 8, 2026 Injective attack introduced a pattern that security researchers at Datadog Security Labs called "telemetry camouflage." An attacker used a compromised GitHub account to introduce a fake key-derivation timing measurement module into the @injectivelabs/sdk-ts package. The module was structured to look like a legitimate performance telemetry system — measuring how long key operations took to complete.

L'attaque Injective du 8 juillet 2026 a introduit un pattern que les chercheurs en sécurité de Datadog Security Labs ont appelé « camouflage de télémétrie ». Un attaquant a utilisé un compte GitHub compromis pour introduire un faux module de mesure de performance de dérivation de clés dans le package @injectivelabs/sdk-ts. Le module était structuré pour ressembler à un système légitime de télémétrie de performance — mesurant la durée des opérations de clé.

In practice, it hooked two methods: PrivateKey.fromMnemonic() and PrivateKey.fromHex(). Every time a wallet was created or a key was loaded from a BIP-39 mnemonic phrase, the hook fired — capturing the raw mnemonic and encoding it in Base64 inside a custom HTTP header, X-Request-Id, sent to a server disguised as Injective's own testnet archival infrastructure. The choice of header was deliberate: X-Request-Id appears in legitimate API traffic and passes most WAF and firewall rules without inspection.

En pratique, il hookait deux méthodes : PrivateKey.fromMnemonic() et PrivateKey.fromHex(). Chaque fois qu'un portefeuille était créé ou qu'une clé était chargée depuis une phrase mnémonique BIP-39, le hook se déclenchait — capturant le mnémonique brut et l'encodant en Base64 dans un header HTTP personnalisé, X-Request-Id, envoyé à un serveur déguisé en infrastructure archivale de testnet Injective. Le choix du header était délibéré : X-Request-Id apparaît dans le trafic API légitime et passe la plupart des règles WAF et pare-feu sans inspection.

GitHub Actions then automatically republished 18 packages in the @injectivelabs scope in 82 seconds — all bearing the malicious dependency. The versions stayed live for 49 minutes before detection. The same week, 17 additional fake payment SDKs mimicking Paysafe, Skrill, and Neteller appeared on npm and PyPI, stealing PAYSAFE_API_KEY, AWS_SECRET_ACCESS_KEY, and GITHUB_TOKEN environment variables from any CI/CD pipeline that installed them. These two campaigns — running simultaneously — show how state-sponsored actors now operate: multiple attack vectors, synchronized deployment, and precision targeting of specific developer ecosystems.

GitHub Actions a ensuite automatiquement republié 18 packages du scope @injectivelabs en 82 secondes — tous portant la dépendance malveillante. Les versions sont restées en ligne 49 minutes avant détection. La même semaine, 17 faux SDKs de paiement imitant Paysafe, Skrill et Neteller sont apparus sur npm et PyPI, volant les variables d'environnement PAYSAFE_API_KEY, AWS_SECRET_ACCESS_KEY et GITHUB_TOKEN depuis tout pipeline CI/CD les ayant installés. Ces deux campagnes — menées simultanément — montrent comment les acteurs étatiques opèrent désormais : multiples vecteurs d'attaque, déploiement synchronisé et ciblage précis d'écosystèmes de développeurs spécifiques.

What DPRK Specifically Targets on a Web3 Developer's Machine

Ce que la Corée du Nord Cible Spécifiquement sur la Machine d'un Développeur Web3

North Korean state actors — operating under the Lazarus Group umbrella and tracked by SecurityScorecard STRIKE as the Contagious Interview cluster — are responsible for 76% of all crypto hack losses in the first half of 2026, totaling approximately $577 million of $759 million stolen across the entire crypto industry. Their npm-based campaigns are not generic infostealers. They are precision tools built to harvest the specific credentials that let an attacker move laterally from a developer's machine to production infrastructure and live wallets.

Les acteurs étatiques nord-coréens — opérant sous l'ombrelle du Lazarus Group et suivis par SecurityScorecard STRIKE comme le cluster Contagious Interview — sont responsables de 76% de toutes les pertes crypto au premier semestre 2026, représentant environ 577 millions des 759 millions de dollars volés dans l'ensemble de l'industrie crypto. Leurs campagnes basées sur npm ne sont pas des infostealers génériques. Ce sont des outils de précision conçus pour récolter les identifiants spécifiques permettant à un attaquant de se déplacer latéralement depuis la machine d'un développeur vers l'infrastructure de production et les portefeuilles actifs.

Analysis of the Lazarus rollup polyfill campaign (JFrog, July 2026), the Miasma Phantom Gyp campaigns (Wiz, Microsoft, Snyk, June 2026), and the jscrambler attack (Socket, July 2026) reveals a consistent targeting pattern. The payloads methodically search for:

L'analyse de la campagne Lazarus rollup polyfill (JFrog, juillet 2026), des campagnes Miasma Phantom Gyp (Wiz, Microsoft, Snyk, juin 2026) et de l'attaque jscrambler (Socket, juillet 2026) révèle un pattern de ciblage cohérent. Les payloads recherchent méthodiquement :

The exfiltration channels have also evolved. Early campaigns used straightforward HTTPS POST requests. Recent campaigns use DNS TXT queries (node-ipc, May 2026), HTTP header smuggling (Injective, July 2026), and even blockchain RPC calls to TRON and Aptos networks as C2 channels (PolinRider, July 2026) — all to bypass network monitoring tools that only inspect conventional HTTP traffic.

Les canaux d'exfiltration ont également évolué. Les premières campagnes utilisaient des requêtes HTTPS POST directes. Les campagnes récentes utilisent des requêtes DNS TXT (node-ipc, mai 2026), la contrebande de headers HTTP (Injective, juillet 2026), et même des appels RPC blockchain vers les réseaux TRON et Aptos comme canaux C2 (PolinRider, juillet 2026) — tout cela pour contourner les outils de surveillance réseau qui n'inspectent que le trafic HTTP conventionnel.

Key Isolation: Building Web3 Apps That Can't Leak Private Keys

Isolation des Clés : Construire des Apps Web3 qui ne Peuvent pas Fuiter de Clés Privées

The fundamental security principle violated in every Web3 supply chain attack is key isolation: the private key must never share a process, a memory space, or a filesystem path with any untrusted dependency. Most Web3 applications violate this principle by default. They load a private key from an environment variable or a keystore file into the same Node.js process that also runs dozens of npm dependencies — any one of which could be compromised at any moment.

Le principe de sécurité fondamental violé dans chaque attaque supply chain Web3 est l'isolation des clés : la clé privée ne doit jamais partager un processus, un espace mémoire ou un chemin de système de fichiers avec une dépendance non approuvée. La plupart des applications Web3 violent ce principe par défaut. Elles chargent une clé privée depuis une variable d'environnement ou un fichier keystore dans le même processus Node.js qui exécute également des dizaines de dépendances npm — dont n'importe laquelle pourrait ême compromise à tout moment.

Architecture Pattern: The Signing Service

Pattern d'Architecture : Le Service de Signature

The recommended architecture for production Web3 applications separates key operations into a dedicated signing service with a minimal, pinned dependency tree. The main application — which handles business logic, user interactions, and npm dependencies from the broader ecosystem — never touches private keys. It sends unsigned transaction data to the signing service and receives a signed transaction in return. The signing service runs in a separate process (or separate container), has no public-facing network interface, and communicates only via a local IPC socket or an authenticated internal API.

L'architecture recommandée pour les applications Web3 en production sépare les opérations de clé dans un service de signature dédié avec un arbre de dépendances minimal et pinned. L'application principale — qui gère la logique métier, les interactions utilisateur et les dépendances npm de l'écosystème plus large — ne touche jamais les clés privées. Elle envoie des données de transaction non signées au service de signature et reçoit une transaction signée en retour. Le service de signature s'exécute dans un processus séparé (ou un conteneur séparé), n'a pas d'interface réseau publique et communique uniquement via un socket IPC local ou une API interne authentifiée.


┌─────────────────────────────────────────────────────────────────┐
│  Application Process (many npm deps, full ecosystem exposure)   │
│  ┌──────────────┐     unsigned tx      ┌──────────────────────┐ │
│  │  Business    │ ─────────────────── ▶│  Signing Service     │ │
│  │  Logic       │ ◀─────────────────── │  (3 pinned deps max) │ │
│  └──────────────┘     signed tx        │  Private key: HSM /  │ │
│                                        │  AWS KMS / Vault     │ │
│                                        └──────────────────────┘ │
│  KEY RULE: private key never crosses this boundary              │
└─────────────────────────────────────────────────────────────────┘

┌──────────────────────────────────────────────────────────────────┐
│  Processus Application (nombreuses deps npm, exposition totale)  │
│  ┌──────────────┐   tx non signée    ┌──────────────────────┐   │
│  │  Logique     │ ─────────────────── ▶│  Service de Signature│   │
│  │  Métier      │ ◀─────────────────── │  (3 deps pinées max) │   │
│  └──────────────┘   tx signée         │  Clé privée : HSM /  │   │
│                                         │  AWS KMS / Vault     │   │
│                                         └──────────────────────┘   │
│  RÈGLE ABSOLUE : la clé privée ne franchit jamais cette limite │
└──────────────────────────────────────────────────────────────────┘

Key Storage Options by Risk Level

Options de Stockage des Clés par Niveau de Risque

For production environments handling real funds, the signing service should delegate key storage to a dedicated system:

Pour les environnements de production manipulant de vrais fonds, le service de signature doit déléguer le stockage des clés à un système dédié :

CI/CD & Development Hardening for Web3 Teams

Durcissement CI/CD & Développement pour les Équipes Web3

Key isolation solves the production problem. Development environments are the other half of the attack surface — and the Injective, jscrambler, and Lazarus campaigns all explicitly targeted developer machines. The following measures reduce the blast radius of a compromised dependency in a development context:

L'isolation des clés résout le problème de production. Les environnements de développement constituent l'autre moitié de la surface d'attaque — et les campagnes Injective, jscrambler et Lazarus ont toutes explicitement ciblé les machines des développeurs. Les mesures suivantes réduisent le rayon d'explosion d'une dépendance compromise dans un contexte de développement :

Immediate Response: Were You Affected?

Réponse Immédiate : Êtes-vous Impacté ?

If your project installed any of the following packages during their compromise windows, rotate all credentials immediately — do not wait for further analysis:

Si votre projet a installé l'un des packages suivants pendant leurs fenêtres de compromission, faites pivoter tous les identifiants immédiatement — n'attendez pas d'analyse supplémentaire :

Affected Packages & Windows

Packages Impactés & Fenêtres de Compromission

  • @injectivelabs/sdk-ts v1.20.21 — July 8, 2026, 20:59–21:48 UTC. If installed: rotate all wallet mnemonics, private keys, and GitHub tokens immediately.
  • @injectivelabs/sdk-ts v1.20.21 — 8 juillet 2026, 20:59–21:48 UTC. Si installé : faites pivoter immédiatement tous les mnémoniques de wallet, clés privées et tokens GitHub.
  • jscrambler v8.14.0 through v8.20.0 (all versions between clean 8.13.x and clean 8.22.0) — July 11, 2026. If installed: rotate AWS/Azure/GCP credentials, npm tokens, Bitwarden master password, and revoke Claude/Cursor session tokens.
  • jscrambler v8.14.0 à v8.20.0 (toutes les versions entre la propre 8.13.x et la propre 8.22.0) — 11 juillet 2026. Si installé : faites pivoter les identifiants AWS/Azure/GCP, tokens npm, mot de passe maître Bitwarden, et révoquez les tokens de session Claude/Cursor.
  • chalk, debug, ansi-styles (and 15 other packages in the Shai-Hulud cluster) — malicious versions published September 8, 2025, live for ~2 hours. If your browser-facing app installed these during that window: audit for wallet address substitution in transaction history.
  • chalk, debug, ansi-styles (et 15 autres packages du cluster Shai-Hulud) — versions malveillantes publiées le 8 septembre 2025, en ligne ~2 heures. Si votre app browser-facing les a installées pendant cette fenêtre : auditez l'historique des transactions pour des substitutions d'adresses de wallet.

After rotating credentials, audit your lockfile diff to identify the exact version installed. Use npm ls --all | grep <package> to check for transitive dependencies that may have pulled in affected versions indirectly.

Après avoir fait pivoter les identifiants, auditez le diff de votre lockfile pour identifier la version exacte installée. Utilisez npm ls --all | grep <package> pour vérifier les dépendances transitives qui auraient pu tirer des versions impactées indirectement.

Frequently Asked Questions

Questions fréquentes

Does npm v12's install script blocking protect Web3 developers from these attacks?

Le blocage des scripts d'installation de npm v12 protège-t-il les développeurs Web3 contre ces attaques ?

Partially. npm v12 (available July 2026) blocks preinstall and postinstall hooks by default — which stopped early versions of the Phantom Gyp technique. However, the Injective attack used no install scripts at all; the hook was injected directly into the SDK's JavaScript source code and executed at import time. The jscrambler attack evolved from preinstall hooks (versions 8.14.0–8.17.0) to require()-time injection (8.18.0–8.20.0) precisely to bypass npm v12. npm v12 is a significant improvement, but it is not sufficient on its own for Web3 applications handling real funds.

Partiellement. npm v12 (disponible juillet 2026) bloque les hooks preinstall et postinstall par défaut — ce qui a arrêté les premières versions de la technique Phantom Gyp. Cependant, l'attaque Injective n'utilisait aucun script d'installation ; le hook était injecté directement dans le code source JavaScript du SDK et s'exécutait à l'import. L'attaque jscrambler a évolué des hooks preinstall (versions 8.14.0–8.17.0) vers l'injection require()-time (8.18.0–8.20.0) précisément pour contourner npm v12. npm v12 est une amélioration significative, mais il est insuffisant seul pour les applications Web3 manipulant de vrais fonds.

How does the window.ethereum hook in the Shai-Hulud attack actually work?

Comment fonctionne concrètement le hook window.ethereum dans l'attaque Shai-Hulud ?

When MetaMask or another browser wallet extension is active, it injects a window.ethereum object into every page. Web3 applications call methods like eth_sendTransaction on this object. The Shai-Hulud malicious code wrapped the real window.ethereum object with a Proxy that intercepted all method calls. When it detected a transaction call, it extracted the to field, ran a nearest-match algorithm against a list of attacker-controlled addresses (visually similar to the original), and replaced the recipient before passing the call through to the real wallet. The user saw a normal MetaMask confirmation prompt — but for a transaction to a different address. Since the malicious code ran inside the npm bundle loaded by the Web3 application, it had full DOM access and could modify the displayed address too, making the attack invisible.

Lorsque MetaMask ou une autre extension de wallet navigateur est active, elle injecte un objet window.ethereum dans chaque page. Les applications Web3 appellent des méthodes comme eth_sendTransaction sur cet objet. Le code malveillant Shai-Hulud a enveloppé le vrai objet window.ethereum avec un Proxy interceptant tous les appels de méthodes. En détectant un appel de transaction, il extrayait le champ to, exécutait un algorithme de correspondance la plus proche sur une liste d'adresses contrôlées par l'attaquant (visuellement similaires à l'originale), et remplaçait le destinataire avant de transmettre l'appel au vrai wallet. L'utilisateur voyait une invite de confirmation MetaMask normale — mais pour une transaction vers une adresse différente. Étant donné que le code malveillant s'exécutait dans le bundle npm chargé par l'application Web3, il avait un accès DOM complet et pouvait également modifier l'adresse affichée, rendant l'attaque invisible.

Is it safe to use Foundry for local development if I'm building a production Web3 application?

Est-il sûr d'utiliser Foundry pour le développement local si je construis une application Web3 en production ?

Foundry itself is safe, but the keystore files it creates at ~/.foundry/keystores/ are a high-value target. Multiple campaigns in 2026 — including Phantom Gyp, the Lazarus rollup packages, and the node-ipc 80KB stealer — specifically included code to locate and exfiltrate Foundry keystore files. Use a dedicated development machine (or VM/devcontainer) for Web3 development that is isolated from your host's Foundry directory. On your development machine, use a hardware wallet (Ledger, Trezor) for any real-asset keys, and fund Foundry testing accounts with only testnet ETH or trivial amounts.

Foundry lui-même est sûr, mais les fichiers keystore qu'il crée dans ~/.foundry/keystores/ sont une cible de haute valeur. Plusieurs campagnes en 2026 — dont Phantom Gyp, les packages Lazarus rollup et le stealer 80Ko node-ipc — incluaient spécifiquement du code pour localiser et exfiltrer les fichiers keystore Foundry. Utilisez une machine de développement dédiée (ou VM/devcontainer) pour le développement Web3, isolée du répertoire Foundry de votre hôte. Sur votre machine de développement, utilisez un hardware wallet (Ledger, Trezor) pour toutes les clés d'actifs réels, et n'alimentez les comptes de test Foundry qu'avec de l'ETH testnet ou des montants infimes.

What's the difference between a crypto drainer and a credential stealer in the npm supply chain context?

Quelle est la différence entre un crypto drainer et un infostealer dans le contexte de la supply chain npm ?

A crypto drainer operates at the browser/transaction layer: it intercepts wallet API calls, hooks into window.ethereum, and redirects outgoing transactions to steal funds directly from wallet interactions. It targets users of the Web3 application — not the developer. The chalk/debug Shai-Hulud attack was a crypto drainer. A credential stealer (infostealer) operates at the developer's machine layer: it harvests stored private keys, seed phrases, cloud credentials, and API tokens from the developer's local filesystem and environment. It targets the developer — to then compromise the production infrastructure or steal publishing rights. The Injective, jscrambler, and Lazarus campaigns were credential stealers targeting developers. Many advanced attacks now combine both: compromise the developer (credential stealer) to poison the package (crypto drainer).

Un crypto drainer opère au niveau de la couche navigateur/transaction : il intercepte les appels API de wallet, se hook dans window.ethereum, et redirige les transactions sortantes pour voler des fonds directement depuis les interactions de wallet. Il cible les utilisateurs de l'application Web3 — pas le développeur. L'attaque chalk/debug Shai-Hulud était un crypto drainer. Un infostealer opère au niveau de la machine du développeur : il récolte les clés privées stockées, les seed phrases, les identifiants cloud et les tokens API depuis le système de fichiers local et l'environnement du développeur. Il cible le développeur — pour ensuite compromettre l'infrastructure de production ou voler les droits de publication. Les campagnes Injective, jscrambler et Lazarus étaient des infostealers ciblant les développeurs. De nombreuses attaques avancées combinent désormais les deux : compromettre le développeur (infostealer) pour empoisonner le package (crypto drainer).

Monitor Your Web3 Dependencies Automatically

Surveillez Vos Dépendances Web3 Automatiquement

CVE OptiBot scans your lockfiles daily and alerts you the moment a dependency is flagged — before a compromised version reaches your production build. Add your Web3 project in minutes, no code changes required.

CVE OptiBot scanne vos lockfiles chaque jour et vous alerte dès qu'une dépendance est signalée — avant qu'une version compromise n'atteigne votre build de production. Ajoutez votre projet Web3 en quelques minutes, sans modification de code.

Start free monitoring Démarrer le monitoring gratuit