Pakaĵo DeviceDoor npm Liveranta Aparat-kodan Ŝteltrukan Kadron de Microsoft 365

DeviceDoor: publika npm-pakaĵo liveranta Microsoft 365 aparat-kodan fiŝkaptadon kaj amaspoŝtan kadron

TL; DR

nolimit-agent estas npm-pakaĵo kies publikigitaj versioj — 1.0.299 tra 1.0.307, publikigitaj dum kvar tagoj de 2026-06-26 ĝis 2026-06-29 — ĉiu portas kompleta kadro por fiŝkaptado kaj amaspoŝto ene de kaŝita, tute malklarigita dosierujo. En ĉiu versio la ĉefa eniro solviĝas al .ad/x0.js, unu el ~86 dosieroj en dosierujo nomita "dotfile" enhavanta proksimume 4 200 javascript-obfuscator ĉen-araajn blokojn; la instal-hoko kaj la enira aranĝo estas identaj tra la tuta linio.

Malantaŭ la malklareco sidas Fluo de aparato-kodo de Microsoft 365 OAuth (login[.]microsoftonline[.]com/common/oauth2/v2.0/devicecode) kiu, post kiam kodo estas aprobita, legas la Outlook-enirkeston de la viktimo kaj sendis erojn per la Microsoft Graph API; amasa SMTP kaj SMS-senda motoro funkciigata de ricevantlistoj provizitaj de la funkciigisto; mark-imitilaj mesaĝŝablonoj; malferma-alidirektada ligokonstruado; kaj sciigo per DNS-super-HTTPS, WHOIS, kaj GitHub-kodserĉo. Rultempaj trafiksignaloj al funkciigista infrastrukturo ĉe api[.]nolimitent[.]xyz:4100.

Trafita: ĉiu, kiu instalas iun ajn version de la pakaĵo, kaj iu ajn Microsoft 365 poŝtkesto kies posedanto aprobas aparatkodon prezentitan per ĝi. La plej freŝa versio, 1.0.307, estas la nuna plej nova etikedo kaj portas la saman kapablon de poŝtkesto por aparatkodo — la malica kodo ne estas limigita al unu antaŭa versio.

Severeco: kritikaTrafita ekosistemo: npmLa sola indikilo serĉenda unue: la gastiganto api[.]nolimitent[.]xyz.

La atako: kiel ĝi funkcias

Bonkora ŝelo super kaŝita utila ŝarĝo

La pakaĵo prezentas ordinaran surfacon. pako.json deklaras postinstalo hoko – 

text postinstall: node scripts/postinstall.js 

— kaj post inspektado skriptoj/postinstalo.js estas sendanĝera: ĝi instalas Vindozan komandan ŝablonon kaj eliras. La hoko ne estas kie la konduto loĝas. La ĉefa kaj am kampoj ambaŭ montras al .anonco/, dosierujo kies komenca punkto tenas ĝin for de hazardaj ls eligo, kaj kies enhavo estas unuforme maŝine malklarigita. La statika skanilo kalkulis ~4 293 ĉifritajn utilajn ŝarĝajn interspacojn tra la .anonco/ modula aro; Javaskripto-obfuscator estas deklarita evoluiga dependeco, kiu kongruas kun la formo `string-array-rotacy` de la kunigitaj dosieroj.

La disigo estas la unua signalo inda je nomo: la instala hoko, kiun recenzisto ekzamenus, estas pura, dum la funkcia kodo troviĝas unu dosierujon for, kaŝita kaj malklarigita, atingebla nur kiam la eksportita enirejo de la pakaĵo funkcias.

Aliro al poŝtkesto per aparatkodo de Microsoft 365

La modulo .ad/x12.js portas la plej gravan kapablon de la kadro. Ĝi pelas la rajtigon de aparatoj de Microsoft 365 OAuth 2.0:

text POST login[.]microsoftonline[.]com/common/oauth2/v2.0/devicecode 

La aparatkoda permeso estas legitima Microsoft-fluo desegnita por enig-limigitaj aparatoj: servo petas kodon, la uzanto tajpas tiun kodon en microsoft.com/aparatologin` sur dua aparato kaj aprobas, kaj la petanta servo ricevas ĵetonojn. Kiam la petanta servo apartenas al iu alia ol la posedanto de la poŝtkesto, aprobo donas al tiu tria partio ĵetonon. Post kiam ĵetono estas akirita, `.ad/x12.js` legas la poŝtkeston rekte per Microsoft Graph:

text GET graph[.]microsoft[.]com/v1.0/me/mailFolders/inbox/messages?$top=250&$select=from GET graph[.]microsoft[.]com/v1.0/me/mailFolders/sentitems/messages?$top=250&$select=toRecipients 

la $selekti projekcioj tiras sendintadresojn el la leterkesto kaj ricevantadresojn el senditaj eroj — la kruda materialo por mapi la korespondantojn de viktimo. Ĉi tio estas aliro de tipo "kontraŭulo-en-la-mezo" (AiTM) per konsento anstataŭ per pasvorta kapto: ne ekzistas akreditaĵo por trompŝteli en la klasika senco, nur kodo por esti aprobita.

Poŝtpoŝto kaj SMS-sistemo kun ŝablonoj por imitado

Ĉirkaŭ la aliro al la poŝtkesto troviĝas poŝtsendilo. La pakaĵo sendas de funkciigisto redakteblajn datendosierojn — sendintlistojn (sendintoj.txt, smts.txt) kaj ŝablonan dosieron (funkcioj.txt) — kies provizoraj adresoj legiĝas kiel gisadfolio por imitado: sekureco@apple.com, login-konfirmo, OAuth-servo, fakturado kaj konto-sciigsendintoj kontraŭ viadominio.com anstataŭanto, kiun la funkciigisto anstataŭigas. La SMS-flanko portas telefononebook kaj agordo de la pordego. La retpoŝtilo ripetas de la funkciigisto provizitajn ricevantajn listojn kaj sendas per agorditaj SMTP-relajsoj.

Por ke ligiloj alteriĝu, .ad/xu.js kaj .ad/xq.js konstrui URL-ojn kiuj ekspluatas URL-analizan ambiguecon kaj klakspuradon. La parodiaj ŝablonoj enkorpigas fidindan aŭtoritaton antaŭ @ do la videbla prefikso diferencas de la vera gastiganto:

text https://trusted[.]com@      https://trusted[.]com%40      https://trusted[.]com:80@ https://redirect[.]example[.]com/      https://track[.]example[.]com/click? 

La kadro ankaŭ kaptas favikonojn de gravaj konsumantoj kaj enterprise retpoŝtaj provizantoj — rutina tekniko por prezenti konvinkan provizant-markitan promptilon aŭ surteriĝan paĝon.

Celo kaj infrastruktursciigo

Pluraj moduloj kolektas kuntekston antaŭ sendado. .ad/x0.js solvas nomojn per DNS-super-HTTPS (dns[.]google/solvi), .ad/xa.js serĉoj WHOIS (api[.]whois[.]vu), Kaj .ad/x9.js ekzekutas GitHub-kodserĉon (api[.]github[.]com/serĉo/kodo?q=) — ŝablono kongrua kun malkovro de eksponita poŝtservila agordo kaj SMTP-akreditaĵoj por nutri la relajsliston. .ad/xs.js pridemandas la CDX-indekson de Wayback Machine.

Komando kaj kontrolo

Trans la malklarigita aro, .ad/x4.js referencas la finpunkton de la funkciigisto:

text http://api[.]nolimitent[.]xyz:4100 

La gastiganto dividas sian senlima marko kun la propra nomado de la eldonisto, kaj la : 4100 haveno estas la hejma alvoko-kanalo de la kadro. Ĉi tiu estas la plej daŭra indikilo por defendantoj: pakaĵo, programista laborstacio aŭ konstruagento atinganta api[.]nolimitent[.]xyz ruligis ĉi tiun kodon.

Indikiloj de kompromiso

La indikiloj sube estas tiuj, laŭ kiuj defendanto povas agi — grep a lockfile, block a host, aŭ search proxy and DNS protokolojn. Microsoft-finpunktoj aperas ĉar la kadro misuzas ilin; ili mem ne estas malicaj kaj ne devus esti blokitaj.

indikilo tipo kie Defendanta ago
nolimit-agent (ĉiuj versioj 1.0.299–1.0.307) pakaĵo npm Grep-ŝlosdosieroj / instalaj protokoloj
api[.]nolimitent[.]xyz (:4100) C2-gastiganto .ad/x4.js Bloki; serĉi DNS + prokurilo-protokolojn
.ad/ kaŝita dosierujo kiel ĉefa/ujo celo strukturo package.json Statika signalo en registro-revizio
trusted[.]com@ / %40 / :80@ ligformularoj URL-parodio .ad/xu.js, .ad/xq.js Inspektado de retpoŝta/prokura URL
Aparatkoda permeso + Grafeo inbox/sentitems legi Kutimaro .ad/x12.js Ensaluto al M365 + revizio de Graph-audito

Dosieraj haŝoj kaptitaj ĉe triaĝo:

  • pakaĵo/.ad/x0.js — ŝa256 e4153bb614ee03ec456e6b5b41926385db6aae0e4f3e771d18e581571ad7ca2a

  • pakaĵo/pakaĵo.json — ŝa256 8618064f1f6146b4a8f0459aff9154dca1847e3936aa44f4d4cd37e127075644

Signalo de luanto de Microsoft 365, kiun valoras serĉi sendepende de ĉi tiu pakaĵo: sukcesaj ensalutoj per aparatkodo tuj sekvataj de grafeaj legadoj de retpoŝtoDosierujoj/enirkesto kaj retpoŝtajDosierujoj/sentimentoj, precipe de sesio, kiun la uzanto ne rekonas.

Atribuo kaj observita konduto

Kio estas observebla restas aparte de kiu estas malantaŭ ĝi.

Observeblaj faktoj: la pakaĵo estas publikigita sub la tenilo senlima-agento kun nekonfirmita Gmail-adreso kaj neniu ligita fontdeponejo; ĝia pako.json priskribas ĝin kiel "altnivelan retpoŝtan sendilon" kaj etikedas ĝin per la ruĝa teamo ŝlosilvorto; la rultempa kodo estas koncentrita en kaŝita, malklarigita .anonco/ dosierujo kies ilĉeno (Javaskripto-obfuscator) estas deklarita dependeco; kaj la telefona hejma gastiganto api[.]nolimitent[.]xyz reuzas la senlima marko. Ĉi tio estas ununura pakaĵo kun unu funkciigist-kontrolita infrastruktura orientilo — ne plurpakaĵa aro, kaj neniu interkovro kun antaŭe nomita kampanjo estis identigita.

la ruĝa teamo ŝlosilvorto ne ŝanĝas la klasifikon. Legitimaj ofensivaj sekurecaj iloj, kiuj liveras duobluzan kapablon, faras tion travideble: legebla fonto, celoj provizitaj de la funkciigisto, kaj neniu kaŝita hejma alvoko. Ĉi tiu pakaĵo renversas ĉiun el tiuj ecoj - ĝia funkcia kodo estas malklarigita kaj kaŝita, kaj ĝi signalas al fiksa funkciigista infrastrukturo anstataŭ al celo provizita de la uzanto. La konduto, ne la etikedo, regas la juĝon, kiu estas malica.

Intenco ne estas asertita ĉi tie. La afiŝo priskribas kion la kodo faras — peti aparatkodon, legi poŝtkeston per Graph, sendi amaspoŝton per konfiguritaj relajsoj, signali al fiksa gastiganto — kaj lasas la motivon nedifinita.

Efiko, tendencoj kaj gvidlinioj por defendantoj

Du instaltempaj efikoj gravas. Unue, ĉiu programisto aŭ CI-agento kiu instalas senlima-agento alportas la kadron sur tiun gastiganton kaj establas la hejman vokon al api[.]nolimitent[.]xyzDue, la kapablo pri aparatkodo etendas atingon preter la instalanta gastiganto: poŝtkesto de Microsoft 365, kies posedanto estas instigita aprobi prezentitan kodon, estas legata rekte tra Graph, sen ke pasvorto iam ajn transiru la drato.

La pli larĝa tendenco estas tiu de internigo. Aparat-koda (AiTM) fiŝado moviĝis de memstara fiŝada infrastrukturo al pakaĵo en publika registro — distribuo per npaga instali anstataŭ per retpoŝta ligilo. Paki la ilaron tielmaniere interŝanĝas la problemon de gastigado kaj liglindirado de la fiŝisto kontraŭ la atingo de registro, kaj kaŝas la funkcian kodon malantaŭ pura instala hoko kaj malklarigita dosierujo nomita per punktodosiero, kiu malhelpas rapidan manan trarigardon.

Por defendantoj:

  • Revizio de registro kaj dependecoj. Traktu pakaĵon kies ĉefa/am solviĝas en kaŝitan (punkt-prefiksitan) dosierujon de unuforme malklarigita unuaparta kodo kiel alt-riska laŭ strukturo sole, sendepende de ĉu la instala hoko aspektas pura. Minimumigo ne estas malklarigo — pordego sur la ĉen-ara malĉifrila signaturo, ne sur liniolongo.
  • Plifortigo de Microsoft 365. Limigu la fluon de rajtigo de aparat-kodo per Kondiĉa Aliro kie ĝi ne estas funkcie necesa; permesiloj de aparat-kodo estas konata AiTM-vektoro kaj malofte estas bezonataj de interagaj uzantoj. Kontrolu ensalutojn de aparat-kodo sekvatajn de tuja listigo de la poŝtkesto de Graph.
  • Retodetekto. Bloki kaj averti ŝaltita api[.]nolimitent[.]xyzĈasu elirantajn DNS kaj prokurilajn protokolojn por ĝi tra la programista kaj konstrua infrastrukturo.
  • Detekto de poŝta vojo. la uzanto@gastiganto URL-parodiaj formoj (fidinda[.]com@…) estas detekteblaj ĉe la poŝta enirejo kaj prokurilo; flagoligiloj kies aŭtoritata komponanto antaŭas @.

La pakaĵo estis disponebla ĉe npm dum la analizo. Ĉar la kaŝita kadro ampleksas la tutan publikigitan version kaj la nunan lastan etikedo (1.0.307) portas la kapablon aparatkodi, registro-forigo devus kovri ĉiun version, ne nur unu retroversion. 

sca-tools-software-composition-analiz-tools
Prioritatigu, solvu kaj sekurigu viajn programarajn riskojn
Akiru vian Senpagan Konton.
Neniu kreditkarto necesas.

Sekurigu vian Programaran Disvolviĝon kaj Liveradon

kun Xygeni Produkta Aro