News

Kompromittierte AsyncAPI npm-Pakete verbreiten Miasma Botnet Loader

Kompromittierte AsyncAPI npm-Pakete verbreiten Miasma Botnet Loader

Das Wichtigste in Kürze

  • Vier npm-Pakete im AsyncAPI-Namespace wurden kompromittiert und verteilten den Miasma-Botnet-Loader.
  • Die betroffenen Pakete sind: @asyncapi/generator-helpers@1.1.1, @asyncapi/generator-components@0.7.1, @asyncapi/generator@3.3.1 sowie @asyncapi/specs (Versionen 6.11.2 und 6.11.2-alpha.1).
  • Der Angriff nutzte eine Schwachstelle in GitHub Actions, um bösartigen Code direkt in die Quellcode-Dateien zu integrieren, anstatt auf Installationsskripte zurückzugreifen.
  • Die Malware wird beim Laden der Bibliothek ausgeführt und umgeht so herkömmliche Schutzmechanismen.
  • Die Infektionskette umfasst eine dreistufige Ausführung, die in der Bereitstellung des Miasma-Botnet-Frameworks mündet.
  • Organisationen werden dringend empfohlen, ihre Abhängigkeiten zu überprüfen, kompromittierte Versionen zu entfernen und betroffene Systeme forensisch zu untersuchen.

Aktuelle Sicherheitsbedrohung: AsyncAPI npm-Pakete mit Miasma Botnet Loader infiziert

Die digitale Lieferkette ist erneut ins Visier von Angreifern geraten. Aktuelle Analysen zeigen, dass vier npm-Pakete im AsyncAPI-Ökosystem kompromittiert wurden. Diese Pakete verteilten unwissentlich eine Variante des Miasma-Botnet-Loaders, was eine erhebliche Sicherheitslücke für Entwickler und Unternehmen darstellt, die diese Bibliotheken nutzen. Dieser Vorfall unterstreicht die Notwendigkeit robuster Sicherheitsmaßnahmen in der Software-Lieferkette und die ständige Wachsamkeit gegenüber neuen Angriffsmethoden.

Details der Kompromittierung

Die Sicherheitsforscher von Socket haben eine detaillierte Untersuchung des Vorfalls durchgeführt. Demnach wurden die folgenden AsyncAPI npm-Pakete mit einem verschleierten First-Stage-Implantat kompromittiert:

  • @asyncapi/generator-helpers@1.1.1
  • @asyncapi/generator-components@0.7.1
  • @asyncapi/generator@3.3.1
  • @asyncapi/specs (in den Versionen 6.11.2 und 6.11.2-alpha.1)

Die Analyse ergab, dass die unmittelbar vor diesen kompromittierten Versionen liegenden Releases keine Anzeichen des bösartigen Codes aufwiesen. Dies deutet auf eine gezielte Injektion zu einem bestimmten Zeitpunkt hin.

Angriffsmethode und Umgehung von Schutzmechanismen

Ein entscheidendes Merkmal dieses Angriffs ist die ausgeklügelte Evasionsstrategie. Der bösartige Code wurde direkt in legitime Quellcode-Dateien eingebettet, anstatt sich auf die üblichen 生命周期-Skripte von Paketen zu verlassen. Dies bedeutet, dass die Malware nicht bei der Installation des Pakets, sondern beim Laden der infizierten Bibliothek aktiviert wird. Sobald ein Node.js-Code eines dieser infizierten Module importiert, wird das Implantat sofort zur Ladezeit aktiv.

Diese Methode umgeht gängige Schutzmechanismen wie Installations-Hooks oder Skript-Blocker, da die Ausführung nicht während des Installationsprozesses stattfindet. Jede Entwicklungsumgebung, jeder CI-Runner, jede Testsuite oder jeder Anwendungspfad, der das Modul importiert, wird somit zum potenziellen Ausführungspunkt für die Malware.

Zeitlicher Ablauf und die Rolle von GitHub Actions

Die schädlichen Pakete wurden am 14. Juli 2026 in zwei Wellen veröffentlicht. Die generatorbezogenen Pakete erschienen innerhalb weniger Sekunden gegen 07:10 UTC, gefolgt von den beiden @asyncapi/specs-Releases etwa eine Stunde später. Problematisch ist hierbei, dass die npm-Metadaten jede Veröffentlichung der GitHub Actions-Identität zuordnen, die für das "Trusted Publishing" verwendet wird. Die drei Generator-Pakete weisen identische Metadaten auf, einschließlich der Node.js- und npm-Versionen, des Quell-Commits, des Repositories, des Branches (next), des Release-Workflows und der Actions-Run-ID.

Obwohl öffentliche GitHub-API-Aufrufe für die Workflow-Run- und Job-Logs während der Analyse 404-Fehler zurückgaben, bestätigt die Provenienz den Ursprung von einem GitHub-gehosteten Runner. Die zugrunde liegenden Quelldateien waren bereits in einem öffentlichen Commit vollständig manipuliert, den der "Trusted Publishing"-Workflow später erstellte und veröffentlichte. Der Commit selbst listet den Autor und Committer als "Your Name" mit einer Platzhalter-E-Mail auf, was auf eine ungültige E-Mail-Adresse in der GitHub-Benutzerzuordnung hindeutet.

Die mehrstufige Ausführungsarchitektur

Die Infektionskette entfaltet sich in drei stark verschleierten Stufen:

Stufe 1: Das initiale Implantat

Die erste Stufe besteht aus einer einzigen, stark verschleierten Anweisung, die in den Quellcode des Pakets eingefügt wird. Nach der Entschleierung werden Zeichenfolgen sichtbar, die einen Node-Child-Process-Spawn beschreiben, der mit detached, unref, ignore und windowsHide-Flags konfiguriert ist, um Heimlichkeit zu gewährleisten. Der Child-Prozess empfängt einen Downloader der zweiten Stufe als Argument für node -e.

Stufe 2: Der Downloader

Die Downloader-URL verweist auf ein IPFS-Gateway, das eine Datei namens sync.js bereitstellt. Sie zielt auf plattformspezifische Verzeichnisse ab, die so gewählt wurden, dass sie gewöhnliche Node.js-Laufzeitorte imitieren:

  • Windows: LocalAppData\NodeJS
  • macOS: Application Support/NodeJS
  • Linux: .local/share/NodeJS oder .config/node

Nach dem Schreiben initiiert ein weiterer getrennter Node-Prozess die 8,25 MB große sync.js-Datei.

Stufe 3: Entschlüsselung der Miasma-Payload

Der sync.js-Loader dient als Entschlüsselungs-Wrapper, der HKDF-SHA256 und AES-256-GCM zusammen mit einem Zeichenrotationsschritt verwendet. Nach erfolgreicher Entschlüsselung seiner eingebetteten Chiffretext-Blobs wertet der Loader 3,09 MB JavaScript aus.

Das Miasma Botnet Framework

Die entschlüsselte Payload identifiziert sich selbst als ein Tasking-Framework, das zur Miasma-Familie gehört. Es verwendet Konfigurationswerte wie einen Zielnamen von miasma-train-p1, Statusverzeichnisse unter .config/.miasma und einen Dienst namens miasma-monitor. Um verborgen zu bleiben, werden Tarnpfade verwendet, die mesa_shader_cache-Verzeichnisse wiederverwenden.

Die Konfiguration kennzeichnet explizit das npm-Ökosystem als aktives Ziel, während Verbreitungsmodule für PyPI, Ruby und Cargo derzeit deaktiviert sind.

Die Command-and-Control (C2)-Infrastruktur konzentriert sich auf eine einzige IPv4-Adresse, die REST-Endpunkte auf den Ports 8080, 8081 und 8091 hostet. Der unterstützende Code enthält ruhende Module für Nostr-Relays, IPFS, Ethereum RPC-Lookups, libp2p, BitTorrent DHT-Bootstrap-Nodes und lokale mDNS-Erkennung.

Dynamische Tests der Payload bestätigten, dass Handler für Dateilisting, -abruf, -schreiben, Shell-Ausführung, Payload-Updates und Beacon-Intervall-Updates alle funktionsfähig sind. Die Shell-Blacklist ist spärlich (beschränkt nur den Befehl killall), wodurch die meisten Shell-Aktivitäten uneingeschränkt bleiben. Unter Linux wird die Persistenz durch das Schreiben einer systemd-Benutzereinheit erreicht, die einen Hintergrund-Node-Prozess als miasma-monitor startet, gefolgt von der Ausgabe von daemon-reload- und enable-Befehlen.

Expositionskriterien und Abhilfemaßnahmen

Socket weist darauf hin, dass das bloße Vorhandensein der betroffenen Pakete in einer Lockfile nicht automatisch zu einer Kompromittierung des Hosts führt. Eine Exposition erfordert explizit, dass Anwendungs-, Test-, CLI- oder Build-Code die infizierte Quelldatei importiert hat. Wenn dies nicht ausgeschlossen werden kann, muss der Host als exponiert behandelt werden.

Das einfache Entfernen von node_modules macht die Kompromittierung nicht rückgängig. Restartefakte aus einer zweiten oder dritten Stufe der Ausführung können Folgendes umfassen:

  • Einen Hintergrund-Node-Prozess
  • Die installierte sync.js-Datei
  • Eine .miasma-Lock-Datei
  • Getarnte Cache-Dateien
  • Restliche Spawn-Chain-Daten
  • Einen aktiven systemd-Benutzerdienst

Organisationen, die AsyncAPI-Tools verwenden, müssen ihre Abhängigkeitsbäume auf die aufgelisteten Versionen überprüfen und entweder auf saubere Versionen festlegen oder Patches anwenden, sobald diese verfügbar sind. Sicherheitsteams sollten gleichzeitig die Audit-Logs ihrer GitHub-Organisation auf Pushes überprüfen, die zu Commit 3eab3ec9304aa26081358330491d3cfeb55cc245 auf dem next-Branch führten.

Alle CI-Runner, die die Pakete importiert haben, erfordern eine forensische Untersuchung anhand der von Socket veröffentlichten Indikatoren. Dazu gehören der Datenverkehr zu 85.137.53.71, unerwarteter IPFS-/Nostr-/DHT-/Ethereum-RPC-Verkehr, der von Build-Agenten stammt, und das Vorhandensein von miasma-benannten systemd-Benutzereinheiten.

Automatisierungstools können diese Indikatoren nur aufdecken; die Last der Vertrauensschwellenwerte, der Credential-Rotation und der Abhilfestrategie liegt bei den internen Sicherheits- und Engineering-Teams.

Ausblick

Dieser Vorfall verdeutlicht die anhaltende Bedrohung durch Supply-Chain-Angriffe und die Notwendigkeit für Unternehmen, ihre Softwareentwicklungsprozesse kontinuierlich auf Schwachstellen zu überprüfen. Die Fähigkeit der Angreifer, legitimate Tools und Prozesse zu missbrauchen, erfordert eine proaktive und mehrschichtige Sicherheitsstrategie, die über traditionelle Erkennungsmethoden hinausgeht.

Bibliography

- Socket Research Team. (2026, July 14). Compromised npm Packages in the AsyncAPI Namespace Deliver Miasma Botnet Loader. Socket.dev. - Microsoft Security Research, Ravikant Tiwari, Sagar Patil, Suriyaraj Natarajan, Arvind Gowda. (2026, July 15). Unpacking the AsyncAPI npm supply chain compromise and import-time payload delivery. Microsoft Security Blog. - Prabhu, Rohan. (2026, July 14). Coordinated AsyncAPI Supply Chain Attack: Miasma RAT Delivered via Compromised CI/CD Pipelines in Two Repositories. StepSecurity. - LidorMachluf. (2026, July 14). [SECURITY] Malicious versions published via compromised next branch - @asyncapi/generator@3.3.1, generator-helpers@1.1.1, generator-components@0.7.1 · Issue #2184 · asyncapi/generator. GitHub. - Korolevski, Guy. (2026, July 14). Miasma Worm Returns to npm. JFrog Security Research. - Silva, Raphael. (2026, July 14). AsyncAPI npm packages backdoored via GitHub Actions. Aikido.dev. - Silva, Raphael. (2026, July 14). AsyncAPI npm packages compromised with Miasma variant. Aikido.dev. - Endor Labs. (2026, July 14). How Unprotected Release Branches Let Attackers Compromise AsyncAPI. Endor Labs Blog. - Daws, Ryan. (2026, July 15). Four AsyncAPI npm packages carry Miasma botnet loader. Developer-Tech. - Jack, Suriq's. (2026, July 16). AsyncAPI npm malware shipped with valid provenance. Suriq.io.

KI, die in Deutschland zu Hause ist.

Testen Sie Mindverse Studio oder sprechen Sie mit unserem Team über Ihren Anwendungsfall.