On July 14, 2026 at 07:10 UTC, four official @asyncapi npm packages were trojanized with the Miasma RAT — and the attacker never once touched an npm token. Instead, they opened 37 pull requests to the AsyncAPI generator repository, exploited a single misconfigured pull_request_target GitHub Actions workflow to steal a privileged Personal Access Token, pushed malicious code to the next branch, and let AsyncAPI’s own CI/CD pipeline publish the packages to npm via OIDC. Five malicious versions reached 2.25 million weekly downloads before being unpublished. GitHub deployed the fix for this exact vulnerability class — actions/checkout v7today, July 16, 2026.

Le 14 juillet 2026 à 07h10 UTC, quatre packages npm officiels @asyncapi ont été troyanisés avec le Miasma RAT — et l’attaquant n’a jamais touché un token npm. Il a ouvert 37 pull requests sur le dépôt générateur AsyncAPI, exploité un seul workflow GitHub Actions pull_request_target mal configuré pour voler un Personal Access Token privilégié, poussé du code malveillant sur la branche next, et laissé le pipeline CI/CD d’AsyncAPI lui-même publier les packages npm via OIDC. Cinq versions malveillantes ont atteint 2,25 millions de téléchargements hebdomadaires avant d’être dépubliées. GitHub a déployé le correctif pour cette classe de vulnérabilité — actions/checkout v7aujourd’hui, 16 juillet 2026.

4
@asyncapi packages compromised
packages @asyncapi compromis
Source: StepSecurity, Socket.dev, July 2026
2.25M
weekly downloads at risk
téléchargements hebdomadaires à risque
Source: SafeDep.io, CyberSecurityNews, July 2026
37
pull requests opened as noise
pull requests ouvertes comme couverture
Source: Chainguard, Wiz / M-Red-Team, July 2026
92 000
lines in the Miasma RAT framework
lignes dans le framework Miasma RAT
Source: The Hacker News, GBHackers, July 2026

What Is AsyncAPI and Why Does It Matter?

Qu’est-ce qu’AsyncAPI et pourquoi est-ce important ?

AsyncAPI is the open standard for defining event-driven APIs — the “OpenAPI for message-driven architectures.” Its code-generation toolchain (@asyncapi/generator) is embedded in thousands of microservices, API gateways, and enterprise integration pipelines. The four packages compromised in this attack are foundational to that ecosystem:

AsyncAPI est le standard ouvert pour définir les APIs événementielles — l’“OpenAPI pour les architectures orientées messages.” Sa chaîne de génération de code (@asyncapi/generator) est intégrée dans des milliers de microservices, passerelles API et pipelines d’intégration d’entreprise. Les quatre packages compromis dans cette attaque sont fondamentaux pour cet écosystème :

Package                          Malicious version   Weekly downloads
@asyncapi/generator              3.3.1               ~900 000
@asyncapi/generator-helpers      1.1.1               ~600 000
@asyncapi/generator-components   0.7.1               ~500 000
@asyncapi/specs                  6.11.2 / 6.11.2-alpha.1   ~250 000
─────────────────────────────────────────────────────────────────
Total                            5 versions          ~2 250 000

Compromised @asyncapi packages — July 14, 2026 (Source: StepSecurity, Socket.dev, SafeDep.io)

Packages @asyncapi compromis — 14 juillet 2026 (Source : StepSecurity, Socket.dev, SafeDep.io)

The Attack: How a “Pwn Request” Published Without an npm Token

L’Attaque : Comment un “Pwn Request” a Publié sans Token npm

A “pwn request” (also called a pull_request_target exploitation) is a GitHub Actions attack that turns a repository’s own CI/CD pipeline into a weapon. Here is exactly how it played out on July 14, 2026, according to technical reports from Chainguard, StepSecurity, Wiz, and Datadog Security Labs:

Un “pwn request” (aussi appelé exploitation de pull_request_target) est une attaque GitHub Actions qui transforme le propre pipeline CI/CD d’un dépôt en arme. Voici exactement comment cela s’est déroulé le 14 juillet 2026, selon les rapports techniques de Chainguard, StepSecurity, Wiz et Datadog Security Labs :

1

Reconnaissance & Noise Generation

Reconnaissance & Génération de Bruit

The attacker opened 37 pull requests to the asyncapi/generator repository. Almost all added a fake charity donation page — a distraction to drown out the single malicious PR in GitHub notification noise.

L’attaquant a ouvert 37 pull requests sur le dépôt asyncapi/generator. Presque toutes ajoutaient une fausse page de dons caritatifs — une distraction pour noyer la seule PR malveillante dans le bruit des notifications GitHub.

2

The Vulnerability: Unsafe pull_request_target

La Vulnérabilité : pull_request_target non sécurisé

The asyncapi/generator repository contained a workflow triggered by pull_request_target that then checked out the pull request’s code with actions/checkout. This is the critical flaw: pull_request_target runs in the context of the base repository, with full access to secrets and OIDC token minting. When the workflow fetches and executes attacker-controlled code from the fork, those secrets become accessible.

Le dépôt asyncapi/generator contenait un workflow déclenché par pull_request_target qui checkoutait ensuite le code de la pull request avec actions/checkout. C’est la faille critique : pull_request_target s’exécute dans le contexte du dépôt de base, avec un accès complet aux secrets et au minting de tokens OIDC. Quand le workflow récupère et exécute du code contrôlé par l’attaquant depuis le fork, ces secrets deviennent accessibles.

# The dangerous pattern — triggers with base repo privileges
# but executes PR (attacker-controlled) code
on:
  pull_request_target:   # <-- runs with BASE REPO secrets
    types: [opened, synchronize]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          ref: ${{ github.event.pull_request.head.sha }}
          # <--- DANGER: fetches ATTACKER code into a privileged context

The vulnerable workflow pattern — PAT and OIDC tokens are accessible to attacker code

Le pattern de workflow vulnérable — le PAT et les tokens OIDC sont accessibles au code de l’attaquant

3

Token Theft & Branch Push

Vol du Token & Push sur la Branche

The malicious PR triggered the vulnerable workflow, which exposed a highly privileged Personal Access Token. The attacker used this token to push backdoored commits directly to the repository’s next branch under a placeholder git identity. No npm token was stolen — the attacker never needed one.

La PR malveillante a déclenché le workflow vulnérable, qui a exposé un Personal Access Token hautement privilégié. L’attaquant a utilisé ce token pour pousser des commits backdoorés directement sur la branche next du dépôt sous une identité git factice. Aucun token npm n’a été volé — l’attaquant n’en avait jamais besoin.

4

Legitimate CI/CD Does the Publishing

Le CI/CD Légitime Fait la Publication

The branch push triggered AsyncAPI’s real release workflow. That workflow used npm’s GitHub OIDC trusted publisher integration to authenticate to npm and publish the packages. The result: five malicious package versions carrying valid npm provenance attestations — published by AsyncAPI’s own infrastructure, signed by AsyncAPI’s own identity.

Le push sur la branche a déclenché le vrai workflow de release d’AsyncAPI. Ce workflow a utilisé l’intégration npm trusted publisher via OIDC GitHub pour s’authentifier à npm et publier les packages. Résultat : cinq versions de packages malveillants avec des attestations de provenance npm valides — publiés par l’infrastructure même d’AsyncAPI, signés par l’identité même d’AsyncAPI.

The Payload: Miasma RAT Returns in RAT-First Mode

Le Payload : Le Miasma RAT Revient en Mode “RAT-First”

The payload is a new iteration of the Miasma malware framework — the same threat actor responsible for the Miasma Waves 1–3 attacks in June 2026 (Red Hat @redhat-cloud-services, @vapi-ai, and 73 Microsoft Azure GitHub repos). This time, automatic worm propagation is disabled, but the RAT capabilities are fully active. Security researchers from JFrog noted this as “Miasma Worm Returns as RAT-First npm Attack With Automatic Propagation Disabled.”

Le payload est une nouvelle itération du framework malveillant Miasma — le même acteur de menace responsable des attaques Miasma Waves 1 à 3 en juin 2026 (Red Hat @redhat-cloud-services, @vapi-ai, et 73 dépôts GitHub Microsoft Azure). Cette fois, la propagation automatique en ver est désactivée, mais les capacités RAT sont pleinement actives. Les chercheurs JFrog l’ont noté comme “Miasma Worm Returns as RAT-First npm Attack With Automatic Propagation Disabled.”

Three-Stage Infection Chain

Chaîne d’Infection en Trois Étapes

Unlike previous supply chain attacks that relied on install hooks, the malicious code in the AsyncAPI packages fires when the infected module is loaded by Node.js — not at install time. This entirely bypasses npm v12’s install script blocking.

Contrairement aux précédentes attaques supply chain qui s’appuyaient sur des hooks d’installation, le code malveillant dans les packages AsyncAPI se déclenche quand le module infecté est chargé par Node.js — pas au moment de l’installation. Cela contourne entièrement le blocage des scripts d’installation de npm v12.

Stage 1 — Dropper (embedded in package, fires on require/import)
  ↓  Obfuscated JavaScript launcher
  ↓  Spawns a detached background node process

Stage 2 — IPFS Loader
  ↓  Downloads encrypted second-stage payload from IPFS
  ↓  Decrypts and executes in memory

Stage 3 — Miasma RAT (92,000-line modular framework)
  ├── C2 channels: HTTP + Nostr relays + Ethereum smart contracts + libp2p mesh
  ├── Persistence: systemd (Linux) / launchd (macOS) / Windows Registry
  ├── Credential theft: browsers, SSH, npm/GitHub tokens, AWS, macOS Keychain,
  │   crypto wallets
  ├── AI tool poisoning: .claude/settings.json, .cursor/settings.json, .gemini/
  ├── LAN lateral movement
  └── Optional: worm propagation to npm, PyPI, Cargo (disabled this iteration)

Miasma RAT infection chain — July 2026 iteration (Source: THN, GBHackers, JFrog Security Research)

Chaîne d’infection Miasma RAT — itération juillet 2026 (Source : THN, GBHackers, JFrog Security Research)

The use of IPFS for stage-2 delivery is significant: the payload URL is immutable and censorship-resistant, meaning registry operators cannot take down the C2 infrastructure simply by unpublishing the npm package. Even after the malicious versions were removed, any developer who had already installed the packages remained infected.

L’utilisation d’IPFS pour la livraison du stage 2 est significative : l’URL du payload est immuable et résistante à la censure, ce qui signifie que les opérateurs du registre ne peuvent pas démonter l’infrastructure C2 simplement en dépubliant le package npm. Même après la suppression des versions malveillantes, tout développeur ayant déjà installé les packages restait infecté.

The “Pwn Request” Pattern: Third Major npm Attack in 14 Months

Le Pattern “Pwn Request” : Troisième Grande Attaque npm en 14 Mois

The pull_request_target vulnerability is not new — but attackers keep finding open-source projects that haven’t patched it. This is the third major npm supply chain attack exploiting this vector in 14 months:

La vulnérabilité pull_request_target n’est pas nouvelle — mais les attaquants continuent de trouver des projets open source qui ne l’ont pas corrigée. C’est la troisième grande attaque supply chain npm exploitant ce vecteur en 14 mois :

Date Date Target Cible Impact Impact
March 2025 Mars 2025 tj-actions/changed-files tj-actions/changed-files Secrets leaked across 23,000+ repos Secrets exfiltrés de 23 000+ dépôts
May 2026 Mai 2026 TanStack (Mini Shai-Hulud) TanStack (Mini Shai-Hulud) 84 packages, SLSA L3 provenance forged, CVE-2026-45321 CVSS 9.6 84 packages, provenance SLSA L3 forgée, CVE-2026-45321 CVSS 9.6
July 14, 2026 14 juillet 2026 @asyncapi (Miasma RAT) @asyncapi (Miasma RAT) 4 packages, 5 versions, 2.25M weekly downloads 4 packages, 5 versions, 2,25M téléchargements/semaine

The pattern is always the same: a public repository accepts external pull requests, a pull_request_target workflow checks out the PR code, secrets leak, the attacker publishes malicious packages using the project’s own identity. GitHub’s OIDC trusted publisher feature — designed to improve security by eliminating long-lived npm tokens — ironically becomes the final delivery mechanism.

Le schéma est toujours le même : un dépôt public accepte des pull requests externes, un workflow pull_request_target checkote le code de la PR, les secrets fuient, l’attaquant publie des packages malveillants en utilisant l’identité même du projet. La fonctionnalité OIDC trusted publisher de GitHub — conçue pour améliorer la sécurité en éliminant les tokens npm de longue durée — devient ironiquement le mécanisme de livraison finale.

GitHub’s Fix Deployed Today: actions/checkout v7

Le Correctif GitHub Déployé Aujourd’hui : actions/checkout v7

GitHub announced safer pull_request_target defaults for actions/checkout on June 18, 2026. On July 16, 2026 (today), GitHub backported this protection to all currently supported major versions (v4, v5, v6, v7). Any workflow pinned to a floating major tag like actions/checkout@v4 will automatically pick up the change.

GitHub a annoncé des défauts plus sûrs pour pull_request_target dans actions/checkout le 18 juin 2026. Le 16 juillet 2026 (aujourd’hui), GitHub a rétro-porté cette protection à toutes les versions majeures actuellement supportées (v4, v5, v6, v7). Tout workflow pinned à un tag majeur flottant comme actions/checkout@v4 récupèrera automatiquement le changement.

# BEFORE (v4 before July 16, 2026) — VULNERABLE
- uses: actions/checkout@v4
  with:
    ref: ${{ github.event.pull_request.head.sha }}  # fetches attacker code

# AFTER (v4+ from July 16, 2026) — BLOCKED by default
# This will now FAIL with an error if used in pull_request_target context
# To opt out of the protection (for trusted contributors only):
- uses: actions/checkout@v4
  with:
    ref: ${{ github.event.pull_request.head.sha }}
    allow-unsafe-pr-checkout: true  # explicit opt-in required

The new behavior: checkout refuses to fetch fork code in pull_request_target by default (Source: GitHub Changelog, June 18 / July 16, 2026)

Le nouveau comportement : checkout refuse de récupérer le code du fork dans pull_request_target par défaut (Source : GitHub Changelog, 18 juin / 16 juillet 2026)

Important limitation: Workflows pinned to a specific SHA, minor, or patch version are NOT automatically protected and must upgrade manually. Additionally, pwn requests introduced via run blocks using git or gh CLI to pull untrusted refs are not covered by this change.

Limitation importante : Les workflows pinnés à un SHA, une version mineure ou de patch spécifique ne sont PAS automatiquement protégés et doivent être mis à jour manuellement. De plus, les pwn requests introduits via des blocs run utilisant git ou gh CLI pour pull des refs non-fiables ne sont pas couverts par ce changement.

Defense Checklist: Are Your Workflows Safe?

Checklist de Défense : Vos Workflows Sont-ils Sécurisés ?

Whether you are an open-source maintainer or a developer using @asyncapi packages, here is what to do right now:

Que vous soyez un mainteneur open source ou un développeur utilisant les packages @asyncapi, voici ce qu’il faut faire maintenant :

For Open-Source Maintainers

Pour les Mainteneurs Open Source

# 1. Find all pull_request_target workflows in your repo
grep -r "pull_request_target" .github/workflows/

# 2. For each hit, check if it also does a checkout with a PR ref
grep -A 20 "pull_request_target" .github/workflows/*.yml | grep -E "head.sha|pull_request.head"

# 3. Upgrade actions/checkout to v7 (or ensure floating @v4 picks up the fix)
# In each workflow file, update:
#   uses: actions/checkout@v4
# is fine if pinned to floating major tag (gets the fix automatically)
# If pinned to SHA:
#   uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
# upgrade to the latest v4 SHA

# 4. Audit what your release workflows can publish
# - Review npm trusted publisher scopes
# - Ensure publish workflows only trigger on specific protected branches/tags
# - Use environment protection rules with required reviewers for npm publish

Open-Source Maintainer Security Checklist

Checklist Sécurité Mainteneur Open Source

  • Audit all pull_request_target workflows — never check out PR code in this context without explicit allow-unsafe-pr-checkout: true Auditer tous les workflows pull_request_target — ne jamais checker out le code de PR dans ce contexte sans allow-unsafe-pr-checkout: true explicite
  • Ensure actions/checkout uses a floating major tag (@v4 not @v4.1.2) to receive automatic security updates, or pin to the latest SHA S’assurer que actions/checkout utilise un tag majeur flottant (@v4 pas @v4.1.2) pour recevoir les mises à jour de sécurité automatiques, ou pinner au SHA le plus récent
  • Scope npm trusted publisher OIDC to specific protected branches only — never allow publishing from PR branches Limiter le scope OIDC du npm trusted publisher aux branches protégées uniquement — ne jamais autoriser la publication depuis des branches de PR
  • Add environment protection rules with required reviewers on any job that publishes to npm Ajouter des règles de protection d’environnement avec des reviewers requis sur tout job qui publie sur npm
  • Review all GITHUB_TOKEN and PAT permissions in workflows — use permissions: read-all at the workflow level and explicitly grant only what is needed Vérifier toutes les permissions GITHUB_TOKEN et PAT dans les workflows — utiliser permissions: read-all au niveau du workflow et accorder explicitement uniquement ce qui est nécessaire
  • Enable StepSecurity Harden-Runner in all GitHub Actions jobs to detect outbound network calls and flag unauthorized registry publishes Activer StepSecurity Harden-Runner dans tous les jobs GitHub Actions pour détecter les appels réseau sortants et signaler les publications de registre non autorisées

For Developers Using @asyncapi Packages

Pour les Développeurs Utilisant les Packages @asyncapi

# Check if you installed the malicious versions
npm ls @asyncapi/generator @asyncapi/generator-helpers @asyncapi/generator-components @asyncapi/specs

# Malicious versions to check:
# @asyncapi/generator@3.3.1
# @asyncapi/generator-helpers@1.1.1
# @asyncapi/generator-components@0.7.1
# @asyncapi/specs@6.11.2
# @asyncapi/specs@6.11.2-alpha.1

# If any match — update immediately:
npm update @asyncapi/generator @asyncapi/generator-helpers \
           @asyncapi/generator-components @asyncapi/specs

# Regenerate your lockfile to ensure clean state:
rm package-lock.json && npm install

# Then rotate ALL credentials on affected developer machines:
# - npm tokens: npm token revoke $(npm token list)
# - GitHub PATs: github.com/settings/tokens
# - AWS: aws iam list-access-keys --user-name <user>
# - SSH keys: check ~/.ssh/ for unexpected keys

How to Detect Miasma RAT on Compromised Systems

Comment Détecter le Miasma RAT sur les Systèmes Compromis

If you installed the malicious versions between July 14 and July 15, 2026, assume your developer machine is compromised. Miasma RAT establishes persistence via multiple mechanisms — check for these indicators of compromise (IOCs):

Si vous avez installé les versions malveillantes entre le 14 et le 15 juillet 2026, supposez que votre machine de développement est compromise. Miasma RAT établit une persistance via plusieurs mécanismes — vérifiez ces indicateurs de compromission (IOC) :

# Linux: check for suspicious systemd services
systemctl list-units --type=service | grep -v "\.service$" | head -20
systemctl list-units --type=service | grep -E "node|npm|async"

# Linux: check crontabs
crontab -l
ls -la /etc/cron.d/ /etc/cron.daily/

# macOS: check launchd agents
launchctl list | grep -E "node|npm|async|com\."
ls ~/Library/LaunchAgents/

# Windows: check registry autorun
reg query HKCU\Software\Microsoft\Windows\CurrentVersion\Run
reg query HKLM\Software\Microsoft\Windows\CurrentVersion\Run

# All platforms: check for unexpected background node processes
ps aux | grep -E "node|npm" | grep -v "grep"

# Check for unusual network connections (Nostr relays, IPFS, Ethereum nodes)
# Linux/macOS:
lsof -i -n | grep -E "ESTABLISHED|LISTEN" | grep node

Miasma also targets AI tool configuration files, poisoning them to execute commands on every session start. Check these files for unexpected content:

Miasma cible également les fichiers de configuration des outils IA, les empoisonnant pour exécuter des commandes à chaque démarrage de session. Vérifiez ces fichiers pour du contenu inattendu :

# Check AI tool configs for injected commands
cat ~/.claude/settings.json | python3 -m json.tool
cat ~/.cursor/settings.json 2>/dev/null
ls -la ~/.gemini/ 2>/dev/null

# Look for unexpected "hooks", "scripts", or "SessionStart" entries
grep -r "SessionStart\|preToolUse\|postToolUse\|bash\|curl\|wget" \
     ~/.claude/ ~/.cursor/ 2>/dev/null

Frequently Asked Questions

Questions fréquentes

Am I at risk if I use @asyncapi packages in my project?

Suis-je à risque si j’utilise des packages @asyncapi dans mon projet ?

You are at risk only if you installed (or your CI/CD installed) one of the five specific malicious versions between July 14 and July 15, 2026: @asyncapi/generator@3.3.1, generator-helpers@1.1.1, generator-components@0.7.1, or specs@6.11.2 or 6.11.2-alpha.1. All five have been unpublished. If your package-lock.json was committed before July 14, you are not affected. Run npm ls @asyncapi/generator to verify your installed version.

Vous n’êtes à risque que si vous avez installé (ou votre CI/CD a installé) l’une des cinq versions malveillantes spécifiques entre le 14 et le 15 juillet 2026 : @asyncapi/generator@3.3.1, generator-helpers@1.1.1, generator-components@0.7.1, ou specs@6.11.2 ou 6.11.2-alpha.1. Les cinq ont été dépubliées. Si votre package-lock.json a été commité avant le 14 juillet, vous n’êtes pas affecté. Exécutez npm ls @asyncapi/generator pour vérifier votre version installée.

Does npm audit detect this attack?

npm audit détecte-t-il cette attaque ?

No. npm audit checks for CVEs in the npm advisory database, but malicious packages are removed before a CVE is assigned. By the time you run npm audit, the packages have been unpublished and the advisory may not yet exist. Socket.dev and SafeDep runtime monitoring are the tools that detected this attack within hours of publication. Continuous lockfile monitoring (checking for unexpected version changes since your last deploy) is more effective than point-in-time audit commands.

Non. npm audit vérifie les CVE dans la base de données des advisories npm, mais les packages malveillants sont supprimés avant qu’un CVE soit assigné. Au moment où vous exécutez npm audit, les packages ont été dépubliés et l’advisory peut ne pas encore exister. Socket.dev et le monitoring runtime SafeDep sont les outils qui ont détecté cette attaque dans les heures suivant la publication. Le monitoring continu des lockfiles (vérification des changements de version inattendus depuis votre dernier déploiement) est plus efficace que les commandes d’audit ponctuelles.

Does the Miasma RAT evade antivirus detection?

Le Miasma RAT échappe-t-il à la détection antivirus ?

The first-stage dropper is a small, heavily obfuscated JavaScript file that evades most static analysis tools. The second and third-stage payloads are downloaded from IPFS after installation, meaning they are not present in the npm package that gets scanned. The C2 infrastructure uses Nostr relays and Ethereum smart contracts — network connections that are difficult to block without breaking legitimate applications. Traditional AV is largely ineffective; behavioral monitoring (StepSecurity Harden-Runner, runtime process monitoring, outbound network allowlisting) is necessary.

Le dropper de première étape est un petit fichier JavaScript fortement obfusqué qui échappe à la plupart des outils d’analyse statique. Les payloads des deuxième et troisième étapes sont téléchargés depuis IPFS après l’installation, ce qui signifie qu’ils ne sont pas présents dans le package npm analysé. L’infrastructure C2 utilise des relais Nostr et des smart contracts Ethereum — des connexions réseau difficiles à bloquer sans casser des applications légitimes. L’AV traditionnel est largement inefficace ; la surveillance comportementale (StepSecurity Harden-Runner, monitoring de processus runtime, allowlisting réseau sortant) est nécessaire.

Is this the same “Miasma” as the Red Hat and Microsoft Azure attacks in June 2026?

Est-ce le même “Miasma” que les attaques Red Hat et Microsoft Azure de juin 2026 ?

Yes, it is the same threat actor and malware framework. JFrog researchers explicitly tracked this as “Miasma Worm Returns as RAT-First npm Attack.” The key difference from the June 2026 waves is that worm propagation (automatic infection of developer dependencies) is disabled in this iteration — the attacker chose to operate stealthily as a RAT rather than as a self-spreading worm. The 92,000-line modular framework, IPFS C2, and Nostr communication channels are consistent across all Miasma variants.

Oui, il s’agit du même acteur de menace et du même framework malveillant. Les chercheurs JFrog l’ont explicitement tracé comme “Miasma Worm Returns as RAT-First npm Attack.” La différence clé avec les vagues de juin 2026 est que la propagation en ver (infection automatique des dépendances des développeurs) est désactivée dans cette itération — l’attaquant a choisi d’opérer discrètement comme un RAT plutôt que comme un ver auto-propagant. Le framework modulaire de 92 000 lignes, le C2 IPFS et les canaux de communication Nostr sont cohérents entre toutes les variantes Miasma.

Does pinning my package-lock.json protect against this?

Le pinning de mon package-lock.json me protège-t-il de cela ?

Partially. If your lockfile was committed before July 14, 2026, and your CI/CD runs npm ci (which uses the lockfile exactly), you are protected — the malicious versions won’t be installed. However, if a developer or automated process ran npm install or npm update after July 14, the lockfile may have been updated to include the malicious versions. The safest approach is to use npm ci in all CI/CD pipelines, review lockfile diffs in every PR, and never run npm update in production environments.

Partiellement. Si votre lockfile a été commité avant le 14 juillet 2026, et que votre CI/CD exécute npm ci (qui utilise exactement le lockfile), vous êtes protégé — les versions malveillantes ne seront pas installées. Cependant, si un développeur ou un processus automatisé a exécuté npm install ou npm update après le 14 juillet, le lockfile peut avoir été mis à jour pour inclure les versions malveillantes. L’approche la plus sûre est d’utiliser npm ci dans tous les pipelines CI/CD, de revoir les diffs de lockfile dans chaque PR, et de ne jamais exécuter npm update dans les environnements de production.

How do I protect my own open-source project from pwn requests?

Comment protéger mon propre projet open source contre les pwn requests ?

The most important change is to upgrade to actions/checkout v7 (or ensure you use a floating major tag like @v4, which now includes the fix). Never check out untrusted PR code in a pull_request_target context. Separate your CI jobs : run tests on the untrusted PR code using pull_request (no secrets), and only run privileged jobs (deployment, npm publish) on protected branches via push triggers. Use environment protection rules with required reviewers for any job that publishes to a package registry.

Le changement le plus important est de passer à actions/checkout v7 (ou de s’assurer d’utiliser un tag majeur flottant comme @v4, qui inclut maintenant le correctif). Ne jamais checker out du code de PR non-fiable dans un contexte pull_request_target. Séparez vos jobs CI : exécutez les tests sur le code de PR non-fiable en utilisant pull_request (sans secrets), et exécutez uniquement les jobs privilégiés (déploiement, publication npm) sur des branches protégées via des déclencheurs push. Utilisez des règles de protection d’environnement avec des reviewers requis pour tout job qui publie vers un registre de packages.

Monitor Your npm Dependencies — Including Lockfile Changes

Surveillez Vos Dépendances npm — Y Compris les Changements de Lockfile

The AsyncAPI attack shows why npm audit alone is not enough: malicious packages are unpublished before a CVE is assigned. CVE OptiBot scans your lockfiles daily against OSV.dev, GHSA, and NVD — and alerts you the moment a dependency you already have installed is flagged, even if it was clean at install time.

L’attaque AsyncAPI montre pourquoi npm audit seul ne suffit pas : les packages malveillants sont dépubliés avant qu’un CVE soit assigné. CVE OptiBot scanne vos lockfiles chaque jour contre OSV.dev, GHSA et NVD — et vous alerte dès qu’une dépendance que vous avez déjà installée est signalée, même si elle était propre au moment de l’installation.

Start free dependency monitoring Démarrer le monitoring gratuit