TL; DR
Zwischen dem 1. Mai und dem 6. Mai 2026 wird ein einzelner npm-Publisher alone5511, veröffentlichte acht Pakete ohne Abhängigkeiten, die offenbar auf Folgendes abzielen Microsoft / Interne Paket-Namespaces im Azure-Stil.
Die Pakete verwendeten Namen wie cosmos-explorer, ms.analytics-web, icons.generated, latency-tracking-internal, carbonite-internal und carboniteappMehrere Versionen verwendeten hohe Semver-Werte, wie zum Beispiel 99.9.0 als auch 99.9.13, was eine gängige Taktik zur Verwirrung von Abhängigkeiten ist, die darauf abzielt, private interne Pakete zu übergehen.
Alle acht Schwesterpakete wurden vom Herausgeber zwischen dem 1. und 6. Mai 2026 bereits von npm entfernt. Direkte Registry-Metadaten bestätigten, dass die Tarballs nun vom npm CDN den HTTP-Fehler 404 zurückgeben.
Das Cluster ist jedoch weiterhin von Bedeutung.
Die Nutzlast in den kanonischen Beispielen, carbonite-internal:99.9.0 als auch carboniteapp:99.9.0, wird zur Installationszeit durch ein preinstall Es sammelt Host-Fingerprint-Daten und ruft die öffentliche IP-Adresse des Rechners ab. api.ipify.orgErstellt einen gefälschten „PROFI-GEHEIMNISBERICHT“ und kennzeichnet den Gastgeber als RCE VERIFIEDund sendet den Bericht über die Telegram Bot API an einen Telegram-Bot.
Xygenis Malware-Frühwarnung (MEW) Das System stufte die kanonischen Beispiele als wahrscheinlich bösartig mit einer Punktzahl über 91/100 ein.
Wir verfolgen dies als eine Kampagne von Microsoft, die auf interner Namensverwirrung, Host-Fingerprinting zur Installationszeit und Telegram-Beacon-Exfiltration basiert.
Das Cluster: Acht Pakete, ein Verlag
Das Herausgeberkonto alone5511 verwendete die E-Mail-Adresse:
raistargaming703@gmail.com
Das Konto hatte keine verifizierte E-Mail-Adresse, keine SCM Verifizierung und ein npm-Reputationswert von 2.
Eine referenzierte GitHub-Identität, alonebeast002/beastcrypt, erschien auch im Clusterkontext.
Der Herausgeber veröffentlichte innerhalb von sechs Tagen acht zusammenhängende Pakete. Alle Pakete hatten keine Abhängigkeiten und folgten demselben allgemeinen Muster: kleines Paket, Installationsskript, Host-Fingerprinting und Telegram-Beaconing.
| # | Verpackung | Schädliche Version | Erstellt, UTC | Unveröffentlicht, UTC | Nutzlast bestätigt | Haken installieren |
|---|---|---|---|---|---|---|
| 1 | Kosmosforscher | 1.1.3 | 2026-05-01T18:26Z | 2026-05-01T19:01Z | Vermutlich derselbe Herausgeber/Cluster | Vorinstallation, angenommen |
| 2 | signalsdk-web | 1.0.0, 10.0.0 | 2026-05-04T13:57Z | 2026-05-04T18:51Z | Gefolgert | Vorinstallation, angenommen |
| 3 | ms.analytics-web | 99.0.0, 99.9.13 | 2026-05-04T18:47Z | 2026-05-05T10:07Z | Gefolgert | Vorinstallation, angenommen |
| 4 | icons.generated | 99.9.13 | 2026-05-05T10:02Z | 2026-05-05T12:57Z | Gefolgert | Vorinstallation, angenommen |
| 5 | Latenzverfolgung | 99.9.0 | 2026-05-05T11:57Z | 2026-05-05T12:57Z | Gefolgert | Vorinstallation, angenommen |
| 6 | interne Latenzverfolgung | Aus dem Registrierungseintrag entfernte Versionen | 2026-05-06T06:02Z | 2026-05-06T08:35Z | Gefolgert | Vorinstallation, angenommen |
| 7 | Carbonite-App | 99.9.0 | 2026-05-06T05:49Z | 2026-05-06T08:35Z | Ja, vollständiger Scanner-Code-Ablauf | Vorinstallation: node index.js |
| 8 | Carbonit-intern | 99.9.0 | 2026-05-06T06:14Z | 2026-05-06T08:36Z | Ja, vollständiger Scanner-Code-Ablauf | Vorinstallation: node index.js |
Gesamtzahl der bösartigen Versionstupel im gesamten Cluster: 9+.
Bei einigen Geschwisterpaketen wurden die Versionsnummern nach der Deinstallation entfernt, was eine exakte Rekonstruktion allein anhand öffentlicher Registerdaten einschränkt.
Warum die Namen wichtig sind
Die Paketnamen sind das stärkste Signal.
Sie sehen aus wie interne SDK-, Telemetrie-, Symbolgenerierungs-, Explorer- oder Latenz-Tracking-Pakete:
cosmos-explorer
signalsdk-web
ms.analytics-web
icons.generated
latency-tracking
latency-tracking-internal
carbonite-internal
carboniteapp
Das ist keine zufällige Namensgebung. Es sieht so aus, als wäre es darauf abgestimmt. Abhängigkeitsverwirrung.
Mehrere spätere Pakete verwendeten hohe Versionsnummern:
99.0.0
99.9.0
99.9.13
10.0.0
Das ist relevant, da Angriffe, die Abhängigkeitskonflikte ausnutzen, häufig darauf beruhen, dass öffentliche Pakete höhere Versionen aufweisen als interne Pakete aus privaten Registries. Bei einer Fehlkonfiguration des Build-Systems kann der Paketmanager die öffentliche npm-Version der vorgesehenen internen Version vorziehen.
Der Verlag scheint im Laufe der Zeit auch immer aggressiver zu werden.
Frühe Pakete verwendeten normal aussehende Versionen, wie zum Beispiel 1.1.3 als auch 1.0.0Spätere Pakete wurden verschoben nach 99.x.x als auch 99.9.xDiese Verschiebung ist vereinbar mit der Annahme, dass ein Akteur die Kampagne auf das interne Paketauflösungsverhalten abstimmt.
Was passiert bei der Installation?
Die kanonischen Beispiele, carbonite-internal:99.9.0 als auch carboniteapp:99.9.0, erklären Sie preinstall Haken:
{
"scripts": {
"preinstall": "node index.js"
}
}
Das bedeutet, dass die Nutzlast ausgeführt wird, bevor npm die Installation der Abhängigkeiten abgeschlossen hat.
Dies ist der frühestmögliche Installationsschritt. Der Entwickler muss das Paket nicht importieren. Der Build-Prozess muss keinen Anwendungscode ausführen. Die Installation selbst genügt.
Die Nutzlast ist klein, etwa 2.4 KB, und hat außer dem Signalisieren keinen funktionalen Zweck.
Nutzlastverhalten
Das index.js Die Datei führt vier Hauptaktionen aus.
Erstens ruft es api.ipify.org um die öffentliche IP-Adresse des Hosts abzurufen:
https://api.ipify.org
Zweitens sammelt es grundlegende Host-Fingerprinting-Daten mithilfe der Node.js OS-APIs:
os.userInfo()
os.hostname()
os.platform()
os.networkInterfaces()
os.uptime()
Drittens werden die gesammelten Daten in einen mehrzeiligen Bericht mit einem Textbanner formatiert:
PRO-LEVEL INTELLIGENCE REPORT
Der Bericht endet mit:
Status: 🟢 RCE VERIFIED
Viertens sendet es den Bericht über einen Telegram-Kanal an Telegram. sendTelegram(report) Funktion, die den Telegram Bot API-Endpunkt verwendet:
https://api.telegram.org/bot<token>/sendMessage
Das genaue Telegram-Bot-Token ist in den unveröffentlichten Tarballs gespeichert und sollte aus dem internen Speicher von npm wiederhergestellt werden können.
Warum das „RCE VERIFIED“-Banner wichtig ist
Das wörtliche RCE VERIFIED Der Marker ist betrieblich aussagekräftig.
Die Nutzlast installiert keine Hintertür. Sie ist nicht persistent. Sie stiehlt keine Cloud-Zugangsdaten direkt. Stattdessen bestätigt sie, dass während der Paketinstallation Code ausgeführt wurde.
Das genügt für eine Proof-of-Execution-Kampagne, die auf Abhängigkeitsverwirrung basiert.
Wenn der Angreifer eine Telegram-Nachricht aus einer Zielumgebung erhält, weiß er, dass das öffentliche npm-Paket aufgelöst und innerhalb eines realen Hosts, CI-Runners, Entwicklerarbeitsplatzes oder einer Build-Umgebung ausgeführt wurde.
Mit anderen Worten: Die Malware sammelt nicht nur Metadaten des Hostsystems. Sie prüft auch, ob die Paketauflösung des Zielsystems angreifbar ist.
Xygeni MEW Klassifizierung
Xygeni MEW klassifizierte die kanonischen Proben als wahrscheinlich böswilligmit einer Punktzahl über 91/100.
Zu den festgestellten Mängeln gehörten:
| Schwere | Detection | Bedeutung |
|---|---|---|
| Kritische | sensible_Datenexfiltration | req.write(data) überträgt den Host-Fingerprint-Bericht in einen ausgehenden Telegram POST-Request. |
| Hoch | bösartige Installationsskripte | Vorinstallation: node index.js löst den Beacon bei der Installation aus. |
| Niedrig | verdächtige Anfrage | Öffentliche IP-Adressen ermitteln über api.ipify.org |
| Niedrig | verdächtige Anfrage | Telegram Bot API ausgehender Endpunkt |
| Niedrig | triviales_Paket | Das Paket hat außer dem Beaconing keinen sinnvollen Zweck. |
| Infos | Aufzählung sensibler Daten | Hostdetails wie Betriebszeit, Benutzerinformationen und Hostname werden aufgelistet |
Beides carbonite-internal:99.9.0 als auch carboniteapp:99.9.0 hatten identische Nutzdaten, einschließlich der gleichen Code-Flow-ID und byteäquivalenter Installationsskripte.
Im MEW-Publisher-Projekt-Index wurden alle acht Pakete als Teil desselben Publisher-/Payload-Clusters gekennzeichnet.
Warum das Muster der Selbst-Entöffentlichung wichtig ist
Alle acht Schwesterpakete wurden vom Verlag innerhalb von Minuten bis Stunden nach Veröffentlichung zurückgezogen.
Dieses Verhalten ist wichtig.
Legitime Paketbetreuer entfernen zwar gelegentlich Pakete, doch der Zeitpunkt hier deutet auf eine Bereinigung durch Angreifer hin. Die Pakete erschienen, führten ihre Installations-Payload aus, sofern sie von einem Zielsystem aufgelöst wurden, und verschwanden anschließend aus dem öffentlichen Registry-Zugriff.
Das schafft zwei Probleme für die Verteidiger.
Erstens werden die öffentlichen npm-Metadaten nach dem Aufheben der Veröffentlichung unvollständig. Einige Versionsdatensätze können entfernt werden oder schwieriger wiederherzustellen sein.
Zweitens könnten Verteidiger, die sich auf den aktuellen Registry-Status verlassen, Pakete übersehen, die während des Expositionszeitraums vorhanden waren, aber nicht mehr installierbar sind.
Aus diesem Grund sollte npm die unveröffentlichten Tarballs intern für forensische Zwecke aufbewahren. Der Telegram-Bot Token innerhalb der Tarballs können helfen, den Empfangskanal aufzulisten und mögliche Opfer zu rekonstruieren.
Indikatoren für eine Kompromittierung und deren Aufdeckung
Herausgeber und Konto
| Feld | Wert |
|---|---|
| npm-Benutzername | alone5511 |
| npm-Publisher-E-Mail | raistargaming703@gmail.com |
| npm-Reputation | 2 |
| Email überprüft | Nein |
| SCM verified | Nein |
| Referenzierte GitHub-Identität | alonebeast002/beastcrypt |
Betroffene Paketnamen
cosmos-explorer
signalsdk-web
ms.analytics-web
icons.generated
latency-tracking
latency-tracking-internal
carbonite-internal
carboniteapp
Verdächtige Versionsmuster
10.0.0
99.0.0
99.9.0
99.9.13
Diese hohen Versionsnummern sind insbesondere bei Untersuchungen von Abhängigkeitskonflikten relevant, da sie unter Umständen private Paketversionen übertreffen.
Netzwerk-Endpunkte
| Typ | Wert |
|---|---|
| Öffentliche IP-Prüf | https://api.ipify.org |
| Abflussbecken | https://api.telegram.org/bot<token>/sendMessage |
| Exfiltrationsmethode | Telegram Bot API POST |
Nutzlastmarkierungen
Suchen Sie in den Installationsskripten nach diesen Zeichenfolgen:
PRO-LEVEL INTELLIGENCE REPORT
Status: 🟢 RCE VERIFIED
sendTelegram(
Dieses Manifestmuster sollte ebenfalls gekennzeichnet werden:
{
"scripts": {
"preinstall": "node index.js"
}
}
Insbesondere in Kombination mit:
- Null Abhängigkeiten
- Winzige Verpackungsgröße
- Intern wirkender Paketname
- High-Semver-Version
- Host-Fingerprinting-APIs
- Telegram Bot API-Verkehr
Host-Fingerprinting-APIs
Die kanonische Nutzlast verwendet:
os.userInfo()
os.hostname()
os.platform()
os.networkInterfaces()
os.uptime()
Es wendet sich auch an:
https://api.ipify.org
um die öffentliche IP-Adresse des Hosts zu erfassen.
Erkennungsnotizen
Mehrere Regeln können diese Kampagne erfassen und Varianten schließen.
Zuerst sollte auf npm-Installationsskripte geachtet werden, die Telegram kontaktieren:
api.telegram.org
Ein Paketinstallationsskript sollte so gut wie nie eine POST-Anfrage an Telegram senden. Behandeln Sie dies als feindselig, es sei denn, es gibt eine eindeutige und geprüfte Ausnahme.
Zweitens, Flagge preinstall Skripte in winzigen Paketen ohne Abhängigkeiten mit intern klingenden Namen.
Die Kombination aus einem kleinen Paket, einer hohen Semver-Version und einem internen Namespace-ähnlichen Namen ist ein starkes Indiz für Abhängigkeitsverwirrung.
Drittens, warnen Sie vor Paketnamen, die wie private Entwicklungsmodule aussehen, die von öffentlichen npm-Konten mit niedrigem Ansehen veröffentlicht wurden.
Beispiele aus diesem Cluster sind:
ms.analytics-web
latency-tracking-internal
carbonite-internal
icons.generated
Viertens: Suchen Sie in den CI-Systemen und Entwickler-Workstations nach Sperrdateiverweisen auf die acht Paketnamen.
Suche:
package-lock.json
yarn.lock
pnpm-lock.yaml
npm-shrinkwrap.json
Jede Übereinstimmung sollte eine Überprüfung auf Abhängigkeitsverwirrung auslösen.
Empfohlene Registry-Aktionen
Dieser Cluster war zum Zeitpunkt der Berichterstattung bereits nicht mehr veröffentlicht. Die Nichtveröffentlichung beseitigt das Risiko jedoch nicht.
Empfohlene npm-seitige Aktionen:
- Prüfen Sie, ob es sich bei den gelöschten Veröffentlichungen um eine vom Angreifer initiierte Bereinigungsmaßnahme oder um eine legitime Aktion des Wartungspersonals handelte.
- Das Herausgeberkonto sperren oder bannen
alone5511. - Fügen Sie den Herausgeber, die E-Mail-Adresse, die Paketnamen und die Payload-Markierungen zu Missbrauchs- und Lieferketten-Sperrlisten hinzu.
- Unveröffentlichte Tarballs sollten zur forensischen Untersuchung im internen Speicher aufbewahrt werden.
- Extrahieren Sie das Telegram-Bot-Token aus den erhaltenen Tarballs.
- Arbeiten Sie nach Möglichkeit mit Telegram zusammen, um den Empfangskanal zu identifizieren und die Telemetriedaten potenzieller Opfer zu rekonstruieren.
Checkliste für die Reaktion auf Kompromisse
Falls eines der betroffenen Pakete während des Expositionszeitraums in Ihren Sperrdateien, Build-Protokollen, im Paketcache oder im CI-Installationsverlauf aufgetaucht ist, behandeln Sie dies als ein Ausführungsereignis aufgrund von Abhängigkeitsverwirrung.
Empfohlene Antwort:
- Ermitteln Sie, wo das Paket installiert wurde: lokale Workstation, CI-Runner, Build-Agent oder Container-Image.
- Sperrdateien, npm-Cache, Build-Protokolle, Shell-Verlauf und Paketmanager-Ausgabe beibehalten.
- Überprüfen Sie die ausgehenden Netzwerkprotokolle auf
api.telegram.orgals auchapi.ipify.orgwährend des Installationsfensters. - Prüfen Sie, ob die Installation in einer Umgebung mit sensiblen Variablen, Anmeldeinformationen oder internem Netzwerkzugriff durchgeführt wurde.
- Rotieren Sie die der Installationsumgebung zugänglichen Token, wenn es sich bei dem Host um einen privilegierten CI-Runner oder eine Entwickler-Workstation handelt.
- Konfiguration der Paketauflösung für die Prüfung auf Verwechslungen zwischen öffentlichen und privaten Registrierungsstellen.
- Erzwinge die Festlegung von privaten Paketen mit Gültigkeitsbereich und die Registrierungsfixierung.
- Nicht genehmigte öffentliche Pakete, die internen Namensmustern entsprechen, werden blockiert.
- Speichern guardrails für Installationsskripte, insbesondere
preinstall,installundpostinstall.
Was Verteidiger mitnehmen sollten
Diese Kampagne ist technisch nicht komplex. Genau deshalb ist sie so wichtig.
Die Schadsoftware ist klein, direkt und einfach auszuführen. Der Angreifer benötigt weder Persistenz noch hochentwickelte Malware. Es genügt ein einziger falsch konfigurierter Paketauflösungspfad.
Das eigentliche Risiko besteht in der Verwirrung um Abhängigkeiten.
Ein Paket mit einem vertraut wirkenden, intern klingenden Namen, einer hohen Versionsnummer und einem preinstall Ein Haken kann einen normalen npm install in einen Beacon aus Ihrer Umgebung.
Für DevSecOps Teams, die Lehre daraus ist klar: Interne Paketnamen sind sensible Daten. Behandelt sie wie eine Angriffsfläche.
Gemeldet an npm wegen Durchsetzung von Account-Richtlinien, Sperrung und Aufbewahrung unveröffentlichter Tarballs.





