alone5511 npm Afhankelijkheidsverwarringsaanval

alone5511 npm Afhankelijkheidsverwarringsaanval

TL; DR

Tussen 1 en 6 mei 2026 zal één enkele npm-publisher, alone5511, heeft acht pakketten zonder afhankelijkheden uitgebracht die zich lijken te richten op Microsoft / Interne pakketnaamruimten in Azure-stijl.

De pakketten gebruikten namen zoals cosmos-explorer, ms.analytics-web, icons.generated, latency-tracking-internal, carbonite-internalen carboniteappVerschillende versies gebruikten hoge semver-waarden, zoals 99.9.0 en 99.9.13Dit is een veelgebruikte tactiek om verwarring over afhankelijkheden te creëren, bedoeld om interne privépakketten voorrang te geven.

Alle acht verwante pakketten waren tussen 1 en 6 mei 2026 al door de uitgever van npm verwijderd. Directe registermetadata bevestigden dat de tarballs nu een HTTP 404-foutmelding geven vanaf het npm CDN.

De cluster blijft echter van belang.

De nuttige lading in de canonieke monsters, carbonite-internal:99.9.0 en carboniteapp:99.9.0, wordt tijdens de installatie uitgevoerd via een preinstall haak. Het verzamelt host-fingerprintgegevens en haalt het openbare IP-adres van de machine op. api.ipify.org, stelt een nep "PROFESSIONEEL INTELLIGENTIERAPPORT" samen en bestempelt de presentator als RCE VERIFIEDen stuurt het rapport via de Telegram Bot API naar een Telegram-bot.

Xygeni's vroegtijdige waarschuwing voor malware (MEW) Het systeem classificeerde de canonieke voorbeelden als waarschijnlijk kwaadaardig met een score van meer dan 91/100.

We volgen dit als een interne campagne van Microsoft om verwarring te zaaien over naamafhankelijkheden, met gebruikmaking van host-fingerprinting tijdens de installatie en het uitlekken van Telegram-beacons.

Het cluster: acht pakketten, één uitgever

Het uitgeversaccount alone5511 gebruikte het e-mailadres:

Het account had geen geverifieerd e-mailadres, geen SCM verificatie en een npm reputatiescore van 2.

Een gekoppelde GitHub-identiteit, alonebeast002/beastcryptverscheen ook in de clustercontext.

De uitgever bracht in een periode van zes dagen acht gerelateerde pakketten uit. Alle pakketten hadden geen afhankelijkheden en volgden hetzelfde algemene patroon: een klein pakket, een installatiescript, host fingerprinting en Telegram beaconing.

# Pakket Kwaadaardige versie Aangemaakt, UTC Niet gepubliceerd, UTC Lading bevestigd Haak installeren
1 kosmos-verkenner 1.1.3 2026-05-01T18:26Z 2026-05-01T19:01Z Afgeleid, dezelfde uitgever/cluster vooraf geïnstalleerd, vermoedelijk
2 signalsdk-web 1.0.0, 10.0.0 2026-05-04T13:57Z 2026-05-04T18:51Z Afgeleide vooraf geïnstalleerd, vermoedelijk
3 ms.analytics-web 99.0.0, 99.9.13 2026-05-04T18:47Z 2026-05-05T10:07Z Afgeleide vooraf geïnstalleerd, vermoedelijk
4 iconen gegenereerd 99.9.13 2026-05-05T10:02Z 2026-05-05T12:57Z Afgeleide vooraf geïnstalleerd, vermoedelijk
5 latency-tracking 99.9.0 2026-05-05T11:57Z 2026-05-05T12:57Z Afgeleide vooraf geïnstalleerd, vermoedelijk
6 latency-tracking-internal Versies verwijderd uit registerrecord 2026-05-06T06:02Z 2026-05-06T08:35Z Afgeleide vooraf geïnstalleerd, vermoedelijk
7 carboniteapp 99.9.0 2026-05-06T05:49Z 2026-05-06T08:35Z Ja, volledige scannercodeflow preinstall: node index.js
8 carboniet-intern 99.9.0 2026-05-06T06:14Z 2026-05-06T08:36Z Ja, volledige scannercodeflow preinstall: node index.js

Totaal aantal kwaadaardige versie-tuples in het cluster: 9+.

Bij sommige records van verwante pakketten zijn de versies verwijderd na de depublicatie, wat een exacte reconstructie op basis van openbare registergegevens alleen bemoeilijkt.

Waarom namen ertoe doen

De pakketnamen zijn het sterkste signaal.

Het lijkt erop dat het interne SDK-, telemetrie-, pictogramgeneratie-, verkenner- of latency-trackingpakketten zijn:

Dit is geen willekeurige naamgeving. Het lijkt weloverwogen gekozen. afhankelijkheid verwarring.

Verschillende latere pakketten gebruikten hoge versienummers:

Dat is belangrijk omdat aanvallen die afhankelijkheden verwarren vaak gebruikmaken van het feit dat openbare pakketten hogere versies hebben dan interne pakketten in een privéregister. Als een buildsysteem verkeerd geconfigureerd is, kan de pakketbeheerder de openbare npm-versie verkiezen boven de bedoelde interne versie.

De uitgever lijkt de druk in de loop der tijd ook op te voeren.

De eerste pakketten gebruikten normale versies, zoals 1.1.3 en 1.0.0Latere pakketten werden verplaatst naar 99.x.x en 99.9.xDie verschuiving is consistent met een actor die de campagne afstemt op het interne gedrag met betrekking tot de afhandeling van pakketten.

Wat gebeurt er tijdens de installatie?

De canonieke voorbeelden, carbonite-internal:99.9.0 en carboniteapp:99.9.0, verklaar een preinstall haak:

 

Dat betekent dat de payload wordt uitgevoerd voordat npm klaar is met het installeren van de afhankelijkheden.

Dit is het vroegst mogelijke moment om een ​​installatie te starten. De ontwikkelaar hoeft het pakket niet te importeren. De build hoeft geen applicatiecode uit te voeren. De installatie zelf is voldoende.

De gegevens zijn klein, ongeveer 2.4 KB, en hebben geen ander functioneel doel dan het uitzenden van een baken.

Payloadgedrag

De index.js Het bestand voert vier hoofdhandelingen uit.

Ten eerste roept het api.ipify.org om het openbare IP-adres van de host op te halen:

Ten tweede verzamelt het basisgegevens voor host-fingerprinting met behulp van Node.js OS API's:

Ten derde formatteert het de verzamelde gegevens tot een rapport met meerdere regels en een letterlijke banner:

Het rapport eindigt met:

Ten vierde stuurt het het rapport via een naar Telegram. sendTelegram(report) functie, gebruikmakend van het Telegram Bot API-eindpunt:

Het exacte Telegram-bottoken wordt bewaard in de niet-gepubliceerde tarball-bestanden en zou terug te vinden moeten zijn in de interne opslag van npm.

Waarom de banner "RCE VERIFIED" belangrijk is

De letterlijke RCE VERIFIED De marker geeft operationeel veelzeggend weer.

De payload installeert geen backdoor. Hij blijft niet persistent. Hij steelt niet direct cloudreferenties. In plaats daarvan bevestigt hij dat er code-uitvoering heeft plaatsgevonden tijdens de installatie van het pakket.

Dat is voldoende voor een proof-of-execution-campagne gebaseerd op afhankelijkheidsverwarring.

Als de aanvaller een Telegram-bericht ontvangt vanuit een doelomgeving, weet hij dat het openbare npm-pakket is gevonden en uitgevoerd op een echte host, CI-runner, ontwikkelaarswerkstation of buildomgeving.

Met andere woorden, de malware verzamelt niet alleen hostmetadata. Het controleert ook of de pakketresolutie van het doelwit misbruikt kan worden.

Xygeni MEW-classificatie

Xygeni MEW classificeerde de canonieke monsters als waarschijnlijk kwaadaardigmet een score boven de 91/100.

De detecties omvatten:

Strengheid Detectie Betekenis
kritisch gevoelige_gegevens_exfiltratie req.write(data) verstuurt het host-fingerprint-rapport naar een uitgaande Telegram POST.
Hoge kwaadaardige_installatie_scripts preinstall: node index.js activeert de beacon tijdens de installatie.
Laag verdacht verzoek Openbare IP-adressen vinden via api.ipify.org
Laag verdacht verzoek Telegram Bot API uitgaand eindpunt
Laag triviaal_pakket Het pakket heeft geen enkel nuttig doel behalve het afbakenen van objecten.
Info gevoelige_gegevens_opsomming Hostgegevens zoals uptime, gebruikersinformatie en hostnaam worden opgesomd.

Beiden carbonite-internal:99.9.0 en carboniteapp:99.9.0 hadden identieke payloads, inclusief dezelfde codeflow-ID en byte-equivalente installatiescripts.

De MEW-index voor uitgeverprojecten markeerde alle acht pakketten als onderdeel van hetzelfde uitgever-/payloadcluster.

Waarom het patroon van zelf-ontpublicatie ertoe doet

Alle acht verwante pakketten werden door de uitgever binnen enkele minuten tot uren na publicatie weer uit de handel genomen.

Dat gedrag is belangrijk.

Legitieme beheerders verwijderen soms pakketten uit het publieke register, maar de timing in dit geval lijkt op een opruimactie van een aanvaller. De pakketten verschenen, voerden hun installatie-payload uit als deze door een doelwit werd herkend, en verdwenen vervolgens uit het publieke register.

Dat levert twee problemen op voor verdedigers.

Ten eerste worden de openbare npm-metadata onvolledig na het verwijderen van een publicatie. Sommige versiegegevens kunnen verloren gaan of moeilijker te reconstrueren zijn.

Ten tweede kunnen beveiligers die vertrouwen op de huidige registerstatus pakketten missen die tijdens de blootstellingsperiode aanwezig waren, maar nu niet meer installeerbaar zijn.

Daarom zou npm de niet-gepubliceerde tarball-bestanden intern moeten bewaren voor forensisch onderzoek. De Telegram-bot Het token in de tarball-bestanden kan helpen bij het in kaart brengen van het ontvangende kanaal en het reconstrueren van mogelijke slachtoffers.

Indicatoren van inbreuk en detectie

Uitgever en account

Veld Waarde
npm gebruikersnaam alone5511
npm publisher e-mail raistargaming703@gmail.com
npm reputatie 2
email geverifieerd Nee
SCM geverifieerd Nee
Verwezen GitHub-identiteit alonebeast002/beastcrypt

Betrokken pakketnamen

Verdachte versiepatronen

Deze hogere versies zijn vooral relevant bij onderzoek naar afhankelijkheidsverwarring, omdat ze mogelijk een hogere prioriteit hebben dan privé-pakketversies.

Netwerkeindpunten

Type Waarde
Openbaar IP-adresonderzoek https://api.ipify.org
Exfiltratiegootsteen https://api.telegram.org/bot<token>/sendMessage
Exfiltratiemethode Telegram Bot API POST

Laadvermogenmarkeringen

Zoek in installatiescripts naar deze tekenreeksen:

Markeer ook dit manifestpatroon:

Vooral in combinatie met:

  • Nul afhankelijkheden
  • Zeer kleine verpakking
  • Intern ogende pakketnaam
  • Hoge semver-versie
  • API's voor host-fingerprinting
  • Telegram Bot API-verkeer

Host-vingerafdruk-API's

De standaard payload gebruikt:

Het richt zich ook tot:

om het openbare IP-adres van de host vast te leggen.

Detectie-aantekeningen

Verschillende regels kunnen deze campagne en vergelijkbare varianten ervan ondervangen.

Controleer allereerst of npm-installatiescripts contact opnemen met Telegram:

Een installatiescript voor pakketten mag vrijwel nooit een POST-verzoek naar Telegram sturen. Beschouw dit als een ongewenste actie, tenzij er een zeer duidelijke en goedgekeurde uitzondering is.

Ten tweede, vlag preinstall scripts in kleine pakketjes zonder afhankelijkheden en met namen die intern lijken te werken.

De combinatie van een klein pakket, een hoge semver-versie en een interne naamgeving in de stijl van een namespace is een sterk signaal van afhankelijkheidsverwarring.

Ten derde, wees alert op pakketnamen die lijken op privé-engineeringmodules die zijn gepubliceerd door openbare npm-accounts met een lage reputatie.

Voorbeelden uit deze groep zijn:

Ten vierde, zoek naar verwijzingen in lockfiles naar de acht pakketnamen in CI-systemen en op ontwikkelwerkstations.

Zoeken:

Elke overeenkomst zou een beoordeling op mogelijke afhankelijkheidsverwarring moeten activeren.

Voorgestelde acties in het register

Deze cluster was ten tijde van het rapport al niet meer gepubliceerd. Het niet meer publiceren neemt het risico echter niet weg.

Aanbevolen acties aan de npm-kant:

  • Bevestig of de verwijderingen het gevolg waren van een opruimactie van de aanvaller of van een legitieme actie van de beheerder.
  • Schors of blokkeer het uitgeversaccount. alone5511.
  • Voeg de uitgever, het e-mailadres, de pakketnamen en de payload-markers toe aan de blokkeerlijsten voor misbruik en de toeleveringsketen.
  • Bewaar niet-gepubliceerde tarball-bestanden intern voor forensisch onderzoek.
  • Haal het Telegram-bottoken uit de bewaarde tarball-bestanden.
  • Werk waar mogelijk samen met Telegram om het ontvangende kanaal te identificeren en mogelijke telemetriegegevens van het slachtoffer te reconstrueren.

Checklist voor reactie op een compromis

Als een van de getroffen pakketten tijdens de blootstellingsperiode in uw lockfiles, buildlogs, pakketcache of CI-installatiegeschiedenis is verschenen, beschouw dit dan als een uitvoeringsgebeurtenis die te maken heeft met een afhankelijkheidsverwarring.

Aanbevolen antwoord:

  • Geef aan waar het pakket is geïnstalleerd: lokaal werkstation, CI-runner, build-agent of containerimage.
  • Bewaar lockfiles, npm cache, buildlogs, shellgeschiedenis en de uitvoer van de pakketbeheerder.
  • Controleer de uitgaande netwerklogboeken voor api.telegram.org en api.ipify.org tijdens de installatieperiode.
  • Controleer of de installatie is uitgevoerd in een omgeving met gevoelige variabelen, inloggegevens of toegang tot een intern netwerk.
  • Draai de tokens die aan de installatieomgeving zijn blootgesteld als de host een CI-runner met beheerdersrechten of een ontwikkelaarswerkstation was.
  • Auditpakketconfiguratie voor het oplossen van verwarring tussen openbare en privéregisters.
  • Dwing het vastzetten van privé-pakketten en registerverankering af.
  • Blokkeer niet-goedgekeurde openbare pakketten die overeenkomen met interne naamgevingspatronen.
  • Toevoegen guardrails voor installatiescripts, met name preinstall, installen postinstall.

Wat verdedigers hiervan moeten leren.

Deze campagne is technisch gezien niet complex. Juist daarom is hij zo belangrijk.

De payload is klein, direct en gemakkelijk uit te voeren. De aanvaller heeft geen persistentie of geavanceerde malware nodig. Eén verkeerd geconfigureerd pad voor pakketresolutie is voldoende.

Het werkelijke risico is verwarring over de onderlinge afhankelijkheden.

Een pakket met een intern bekende naam, een hoog versienummer en een preinstall een haak kan een normale haak veranderen npm install in een baken vanuit je eigen omgeving.

Bij DevSecOps Voor alle teams is de les duidelijk: interne pakketnamen zijn gevoelige gegevens. Behandel ze als een potentieel aanvalsoppervlak.

Gerapporteerd aan npm voor handhaving op accountniveau, blokkering en het bewaren van niet-gepubliceerde tarball-bestanden.

sca-tools-software-compositie-analyse-tools
Prioriteer, herstel en beveilig uw softwarerisico's
Maak nu een gratis account aan.
Geen kredietkaart nodig.

Beveilig uw softwareontwikkeling en -levering

met Xygeni-productsuite