TL; DR
nolimit-agent usa ka npm package kansang gipatik nga mga bersyon — 1.0.299 hangtod 1.0.307, gipagawas sulod sa upat ka adlaw gikan sa 2026-06-26 hangtod 2026-06-29 — ang matag usa adunay kompleto nga balangkas sa phishing ug bulk-mail sulod sa usa ka tinago, hingpit nga natago nga direktoryo. Sa matag bersyon ang pangunang entry moresulta sa .ad/x0.js, usa sa ~86 ka mga file sa usa ka dotfile-named folder nga adunay gibana-bana nga 4,200 ka javascript-obfuscator string-array blobs; ang install hook ug entry layout parehas sa tibuok linya.
Sa luyo sa kalibog nahimutang ang usa ka Dagayday sa Microsoft 365 OAuth device-code (login[.]microsoftonline[.]com/common/oauth2/v2.0/devicecode) nga, kung maaprobahan na ang usa ka code, basahon niini ang Outlook inbox sa biktima ug ipadala ang mga butang pinaagi sa Microsoft Graph API; usa ka bulk SMTP ug SMS sending engine nga gipadagan sa mga listahan sa makadawat nga gihatag sa operator; mga template sa mensahe nga nagsundog sa brand; pagtukod og open-redirect link; ug pagpaniid pinaagi sa DNS-over-HTTPS, WHOIS, ug GitHub code search. Mga runtime traffic beacon ngadto sa imprastraktura sa operator sa api[.]nolimitent[.]xyz:4100.
Apektado: bisan kinsa nga nag-install sa bisan unsang bersyon sa pakete, ug bisan kinsa Mailbox sa Microsoft 365 kansang tag-iya moaprubar sa usa ka device code nga gipakita pinaagi niini. Ang pinakabag-o nga bersyon, 1.0.307, mao ang pinakabag-ong tag ug adunay parehas nga kapabilidad sa device-code mailbox — ang malisyosong code dili limitado sa usa ka back-version.
Kabug-at: kritikalApektadong ekosistema: npmAng usa ka timailhan nga pangitaon una: ang host api[.]nolimitent[.]xyz.
Ang pag-atake: unsaon kini molihok
Usa ka dili makadaot nga kabhang ibabaw sa usa ka tinago nga kargamento
Ang pakete nagpakita sa usa ka ordinaryo nga nawong. package.json nagdeklarar og usa ka pagkahuman sa pag-instalar kaw-it –
text postinstall: node scripts/postinstall.js — ug sa inspeksyon mga script/postinstall.js dili makadaot: kini mag-install og Windows command shim ug mogawas. Ang hook dili mao ang lugar diin nagpuyo ang pamatasan. Ang nag-unang ug ako mga umahan nga parehong nagtudlo ngadto sa .ad/, usa ka direktoryo kansang nag-unang tuldok nagpugong niini gikan sa kaswal ls output, ug kansang mga sulod parehas nga gitago sa makina. Ang static scanner nag-ihap og ~4,293 ka encoded-payload nga naglangkob sa tibuok .ad/ hugpong sa modyul; javascript-obfuscator kay usa ka gideklara nga development dependency, nga mohaom sa string-array-rotation nga porma sa gi-bundle nga mga file.
Ang pagkabahin mao ang unang signal nga angay nganlan: ang install hook nga susihon sa usa ka reviewer limpyo, samtang ang operational code naa sa usa ka directory, natago ug gitago, maabot lang kung modagan na ang exported entry point sa package.
Pag-access sa mailbox sa device-code sa Microsoft 365
Ang module .ad/x12.js nagdala sa labing hinungdanon nga kapabilidad sa balangkas. Kini ang nagdala sa pagtugot sa aparato sa Microsoft 365 OAuth 2.0:
text POST login[.]microsoftonline[.]com/common/oauth2/v2.0/devicecode Ang paghatag og device-code usa ka lehitimong Microsoft flow nga gidisenyo para sa mga input-constrained device: ang usa ka serbisyo mangayo og code, ang tiggamit mo-type sa maong code ngadto sa microsoft.com/devicelogin` sa ikaduhang device ug mo-aprobar, ug ang naghangyo nga serbisyo makadawat og mga token. Kung ang naghangyo nga serbisyo iya sa laing tawo gawas sa tag-iya sa mailbox, ang pag-aprobar mohatag sa maong ikatulo nga partido og token. Kung makuha na ang token, Ang .ad/x12.js` nagbasa sa mailbox direkta pinaagi sa 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 ang $pilia Ang mga projection mokuha sa mga adres sa nagpadala gikan sa inbox ug mga adres sa nakadawat gikan sa gipadala nga mga butang — ang hilaw nga materyal alang sa pagmapa sa mga correspondent sa biktima. Kini ang adversary-in-the-middle (AiTM) access pinaagi sa pagtugot imbes nga pinaagi sa pagkuha sa password: walay kredensyal sa pag-phish sa klasiko nga kahulugan, usa lamang ka code aron maaprobahan.
Usa ka bulk mail ug SMS engine nga adunay mga template sa pag-impersonate
Sa palibot sa mailbox access adunay mailer. Ang pakete magpadala og mga data file nga ma-edit sa operator — mga listahan sa nagpadala (senders.txt, smtps.txt) ug usa ka template file (mga gimbuhaton.txt) — kansang mga adres sa placeholder mabasa isip usa ka casting sheet alang sa pagsundog: security@apple.com, login-beripikasyon, serbisyo sa OAuth, pagsingil, ug mga nagpadala og notipikasyon sa account batok sa usa ka imongdomain.com ang stand-in nga operator mopuli. Ang SMS nga bahin nagdala og teleponoebook ug pag-configure sa gateway. Ang mailer mo-iterate sa mga listahan sa recipient nga gihatag sa operator ug magpadala pinaagi sa mga na-configure nga SMTP relay.
Aron matukod ang mga sumpay, .ad/xu.js ug .ad/xq.js paghimo og mga URL nga nagpahimulos sa kalibog sa pag-parse sa URL ug pagsubay sa pag-klik. Ang mga spoof pattern nag-embed sa usa ka awtoridad nga morag kasaligan sa wala pa ang usa ka @ mao nga ang makita nga prefix lahi sa tinuod nga host:
text https://trusted[.]com@ https://trusted[.]com%40 https://trusted[.]com:80@ https://redirect[.]example[.]com/ https://track[.]example[.]com/click? Ang balangkas nagkuha usab og mga favicon gikan sa mga dagkong konsumidor ug enterprise mga tighatag og koreo — usa ka rutina nga pamaagi para sa pag-render og usa ka makapakombinsir nga prompt o landing page nga may brand sa tighatag.
Pagpaniid sa target ug imprastraktura
Daghang mga modyul ang nagtigom sa konteksto sa dili pa ipadala. .ad/x0.js mosulbad sa mga ngalan pinaagi sa DNS-over-HTTPS (dns[.]google/resolve), .ad/xa.js mga pangutana sa WHOIS (api[.]whois[.]vu), Ug .ad/x9.js nagpadagan sa pagpangita sa code sa GitHub (api[.]github[.]com/search/code?q=) — usa ka sumbanan nga nahiuyon sa pagdiskubre sa nabutyag nga mail-server configuration ug SMTP credentials aron ipakaon sa relay list. .ad/xs.js mangutana sa CDX index sa Wayback Machine.
Pagmando ug pagkontrol
Sa pikas nga natago nga set, .ad/x4.js mga reperensya sa endpoint sa operator:
text http://api[.]nolimitent[.]xyz:4100 Gipaambit sa host ang iyang walay kinutuban brand nga adunay kaugalingong ngalan sa tigmantala, ug ang : 4100 Ang port mao ang call-home channel sa framework. Kini ang labing lig-on nga timailhan para sa mga defender: usa ka package, usa ka developer workstation, o usa ka build agent nga nakaabot api[.]nolimitent[.]xyz nagpadagan niini nga code.
Mga timailhan sa kompromiso
Ang mga timailhan sa ubos mao ang mga butang nga mahimong gamiton sa usa ka defender — pag-grap sa lockfile, pag-block sa host, o pagpangita sa proxy ug DNS logs. Ang mga endpoint sa Microsoft makita tungod kay giabuso kini sa framework; dili kini malisyoso ug dili angay nga babagan.
| timailhan | Type | Diin | Aksyon sa tigdepensa |
|---|---|---|---|
nolimit-agent (tanang bersyon 1.0.299–1.0.307) | package | npm | Grep lockfiles / install logs |
api[.]nolimitent[.]xyz (:4100) | C2 nga tagbalay | .ad/x4.js | I-block; pangitaa ang DNS + mga log sa proxy |
.ad/ gitago nga direktoryo isip pangunang/bin target | Structure | package.json | Static nga signal sa pagrepaso sa registry |
trusted[.]com@ / %40 / :80@ mga porma sa sumpay | Pagpangilad sa URL | .ad/xu.js, .ad/xq.js | Inspeksyon sa URL sa koreo/proxy |
Paghatag og device-code + Graph inbox/sentitems basaha | Paggawi | .ad/x12.js | Pag-sign-in sa M365 + Pagrepaso sa graph audit |
Mga hash sa file nga nakuha sa triage:
- pakete/.ad/x0.js — sha256 e4153bb614ee03ec456e6b5b41926385db6aae0e4f3e771d18e581571ad7ca2a
- pakete/pakete.json — sha256 8618064f1f6146b4a8f0459aff9154dca1847e3936aa44f4d4cd37e127075644
Usa ka Microsoft 365 tenant signal nga angay pangitaon nga independente niini nga pakete: malampuson nga mga pag-sign-in sa device-code gisundan dayon sa mga pagbasa sa Graph sa Mga Folder/inbox sa koreo ug mailFolders/sentimes, labi na gikan sa usa ka sesyon nga wala mailhi sa tiggamit.
Pag-ila ug naobserbahan nga pamatasan
Ang makita lahi sa kung kinsa ang nagpaluyo niini.
Makita nga mga kamatuoran: ang pakete gipatik ubos sa kuptanan nolimit-agent nga adunay wala mapamatud-i nga Gmail address ug walay nalambigit nga source repository; kini package.json gihulagway kini isip usa ka "abante nga nagpadala og email" ug gi-tag kini gamit ang pula nga team keyword; ang runtime code gikonsentrar sa usa ka tinago, natabunan nga .ad/ direktoryo kansang toolchain (javascript-obfuscator) usa ka gideklara nga dependency; ug ang call-home host api[.]nolimitent[.]xyz gigamit pag-usab ang walay kinutuban brand. Kini usa ka pakete nga adunay usa ka operator-controlled infrastructure landmark — dili usa ka multi-package cluster, ug walay nakitang overlap sa usa ka campaign nga kaniadto ginganlan.
ang pula nga team Ang keyword wala mag-usab sa klasipikasyon. Ang lehitimong offensive-security tooling nga nagpadala sa dual-use capability nagbuhat niini nga transparent: mabasa nga tinubdan, mga target nga gihatag sa operator, ug walay tinago nga call-home. Kini nga pakete nag-invert sa matag usa niadtong mga kabtangan — ang operational code niini gitago ug gitago, ug kini nag-beacon ngadto sa fixed operator infrastructure imbes nga usa ka target nga gihatag sa user. Ang pamatasan, dili ang label, ang nagdumala sa hukom, nga malisyoso.
Wala gibutyag ang tuyo dinhi. Gihulagway sa post kung unsa ang gibuhat sa code — pagpangayo og device code, pagbasa sa mailbox pinaagi sa Graph, pagpadala og bulk mail pinaagi sa mga na-configure nga relay, beacon ngadto sa usa ka fixed host — ug wala gibutyag ang motibo.
Epekto, mga uso ug giya sa tigpanalipod
Duha ka epekto sa oras sa pag-instalar ang importante. Una, bisan unsang developer o CI agent nga mag-instalar nolimit-agent magdala sa framework ngadto sa host ug magtukod sa call-home ngadto sa api[.]nolimitent[.]xyzIkaduha, ang kapabilidad sa device-code molapas pa sa installing host: ang usa ka Microsoft 365 mailbox kansang tag-iya giaghat sa pag-apruba sa gipresentar nga code basahon direkta pinaagi sa Graph, nga walay password nga motabok sa wire.
Ang mas lapad nga uso mao ang pag-internalize. Ang device-code (AiTM) phishing mibalhin gikan sa standalone phishing infrastructure ngadto sa usa ka pakete sa usa ka public registry — distribusyon sa npm pag-instalar imbes nga pinaagi sa link nga gipadala pinaagi sa email. Ang pag-empake sa kit niining paagiha nagbaylo sa problema sa hosting ug link-delivery sa phishing operator ngadto sa maabot sa registry, ug gitago ang operational code sa luyo sa usa ka limpyo nga install hook ug usa ka dotfile-named obfuscated directory nga mopildi sa dali nga manual skim.
Para sa mga tigpanalipod:
- Pagrepaso sa rehistro ug dependency. Trataha ang usa ka pakete kansang nag-unang/ako mo-resolve ngadto sa usa ka tinago (dot-prefixed) nga direktoryo sa uniformly obfuscated first-party code isip high-risk sa istruktura lamang, bisan unsa pa kon ang install hook tan-awon nga limpyo. Ang minification dili obfuscation — gate sa string-array decoder signature, dili sa line length.
- Pagpatig-a sa Microsoft 365. Limitahi ang dagan sa pagtugot sa device-code gamit ang Conditional Access kung dili kini gikinahanglan sa operasyon; ang paghatag og device-code usa ka nailhan nga AiTM vector ug talagsa ra gikinahanglan sa mga interactive nga tiggamit. Susiha ang mga pag-sign-in sa device-code gisundan sa diha-diha nga pag-ihap sa Graph mailbox.
- Pag-detect sa network. I-block ug i-alerto api[.]nolimitent[.]xyzPangitaa ang outbound DNS ug proxy logs para niini sa tibuok developer ug build infrastructure.
- Pag-ila sa agianan sa koreo. ang tiggamit@host Mga porma sa URL-spoof (kasaligan[.]com@…) makita sa mail gateway ug proxy; ang mga flag link kansang authority component nag-una sa usa ka @.
Ang pakete anaa sa npm sa panahon sa pag-analisar. Tungod kay ang tinago nga balangkas naglangkob sa tibuok linya sa gimantala nga bersyon ug sa kasamtangan pinaka-ulahing Ang tag (1.0.307) adunay kapabilidad sa device-code, ang registry takedown kinahanglan nga mosakop sa tanang bersyon, dili lang usa ka back-version.




