TL, DR
2026 оны 7-р сарын сүүл, 8-р сарын эхээр хоёр өдрийн турш нийтлэгдсэн хорин npm багц нь өөрсдийгөө дотоод UI бүрэлдэхүүн хэсгүүдийн сан болон хуваалцсан backend хэрэгслүүд гэж харуулдаг. Тэдгээрийн аль нь ч сурталчилж буй функцийг хэрэгжүүлдэггүй. Тус бүр нь stub класс, багцыг дотоод гэж тодорхойлсон README болон ... нэртэй файлыг илгээдэг. _polyfill.js.
Хамгийн сонирхолтой хэсэг нь уг файлыг хаанаас дуудсан явдал юм. Энэ нь суулгах дэгээ биш юм — манифестууд нь урьдчилан суулгах, суулгах эсвэл дараа суулгах гэж огт байхгүй гэж мэдэгддэг. Үүний оронд сүүлийн мөр нь index.js уншдаг: try { require("./_polyfill"); } catch (_) {}. Програмын код багцыг анх удаа импортлоход ашигтай ачаалал ажиллана. Дараахтай хамт суулгана. --ignore-scripts, standard суурилуулах үед хангамжийн сүлжээнд өртөх эрсдэлийг бууруулах зөвлөгөө, үүнээс сэргийлдэггүй.
гэж юу вэ _polyfill.js Үүний тулд гурван Cloudflare Workers хостуудын аль нэгнээс платформд зориулсан гүйцэтгэгдэх файлыг татаж аваад, санамсаргүй нэрээр түр санд бичиж, гүйцэтгэгдэх боломжтой гэж тэмдэглээд, эцэг процессоос салгаж ажиллуулна. Энэ гүйцэтгэгдэх файл нь өөрөө ачаалагч юм: энэ нь төгсгөлийн цэгийн аюулгүй байдлын бүтээгдэхүүнийг процессын нэрээр тоолж, одоогийн хэрэглэгчийн нэрийг мэдэгдэж буй шинжилгээний орчны бүртгэлүүдтэй харьцуулж, санах ойд AMSI болон ETW телеметрийн интерфэйсүүдийг нөхөж, Windows аудио бүрэлдэхүүн хэсгийн нэрээр persistence суулгаж, хэдэн мегабайт хэмжээтэй гурав дахь хоёртын файлыг татаж авдаг. Гурав дахь шат нь шифрлэгдсэн байдлаар ирдэг бөгөөд диск рүү бичихийн оронд санах ойд тайлагдаж, гүйцэтгэгддэг.
8-р сарын 1-нд, гараар хянаж үзэхэд багцууд хортой болох нь батлагдсанаас хойш ойролцоогоор дөрвөн цагийн дараа хорин нэрийн 19-ийг нь өөрсдийн хэвлэн нийтлэгч npm-ээс хорин таван секундын дарааллаар устгасан. 8-р сарын 2-нд эдгээр нэрсийн нэгийг өөр хаягаар, ижил кодтой дахин бүртгүүлсэн. Үүнийг бичиж байх үед хүргэлтийн дэд бүтэц нь гурван үе шатанд бүгдэд нь үйлчилж байсан.
| Багцууд нь | 20 npm нэр, ~74 нийтлэгдсэн хувилбар |
| Сэдвүүдэд нэр өгөх | beaver-ui-* (13) accounts-* (3), дээр нь afisha-storybook-default, bcore-bravo-eslint-config, arbocrate-sla-prober-arbocrate-sla-prober-core, a.poltoradnev-package-c |
| Trigger | Модулийн импорт (require), npm амьдралын мөчлөгийн скрипт биш |
| Үе шат 1 | _polyfill.js — татаж авах болон хөөргөх |
| Үе шат 2 | Статик холбогдсон ачаалагч, Linux дээр UPX багцтай; төгсгөлийн цэгийн аюулгүй байдлын жагсаалт, AMSI/ETW нөхөөс, тогтвортой байдал |
| Үе шат 3 | beacon_linux.bin / beacon_mac.bin / update_win.exe, 4–13 MB; шифрлэгдсэн хэлбэрээр хүргэгдэж, санах ойд гүйцэтгэгдэнэ |
| платформууд | Linux x64 болон arm64, macOS universal, Windows x64 |
| Хэвлэн нийтлэгчид | Хоёр бүртгэл, нэг кодын сан |
| байдал | Нийтлэгдээгүй 20 нэрийн 19 нь оператороор; 1 дахин нийтлэгдсэн ба шууд дамжуулагдсан; хүргэлтийн дэд бүтэц шууд дамжуулагдсан |
Довтолгооны анатоми
1-р үе шат — багц
Гишүүн бүр ижил гурван файлын хэлбэртэй файл илгээдэг. index.js бүхий анги экспортлодог үүн дотор() энэ нь boolean-г тохируулдаг, a хувилбар(), А тохиргоо() сонголтын объектыг нэгтгэдэг. Өөр юу ч биш. README.md суулгах мөрийг өгдөг, a шаарддаг мөр, мөн “Дотоод багц. Удирдамжийг CONTRIBUTING.md сайтаас үзнэ үү” өгүүлбэр — CONTRIBUTING.md ган бөмбөгөнд байхгүй.
_polyfill.js нь 5 KB-аас арай бага бөгөөд ердийн дэд бүтцийн код шиг уншигддаг. Энэ нь гурван орчны шалгалтаар нээгддэг:
if (process.env.DISABLE_TELEMETRY ||
process.env.ANALYTICS_OPT_OUT ||
process.env.DO_NOT_TRACK)
return;Эдгээр хувьсагчууд нь уламжлалт нууцлалын хяналтууд юм. Энд тэд хоёртын файлыг татаж аваад ажиллуулах эсэхийг шалгадаг. Тохируулдаг машин DO_NOT_TRACK бүхэлдээ алгассан байна.
Дараа нь run-once гэсэн тамга ирдэг: файл /tmp/.analytics_state, эсвэл аналитик_төлөв дор % Temp% Windows дээр өөрчлөлтийн хугацааг 20,357 секундын цонхтой харьцуулдаг. Энэ цонхонд модуль шууд буцаж ирдэг тул бүтээх явцад давтан импортлох нь хэдэн арван оролдлогын оронд нэг удаа сэргээх оролдлого үүсгэдэг.
Хүлээн авагч хостууд нь литерал хэлбэрээр байхгүй. Тэдгээрийг ажиллах үед дараах фрагментуудаас угсардаг:
["oob-worker.cf102-","baf.workers.d","ev"].join("")
Гурван хостыг ингэж бүтээж, ашиглахаасаа өмнө хольдог тул дараалал нь гүйцэтгэлээс хамааран өөр өөр байдаг. Retrieval нь IPv4 дээр pinned HTTPS GET юм. Хэрэглэгчийн-Agent of зангилаа-fetch/2.6 — Node процессын ялгаруулах боломжит утга. 1,000 байтаас бага хариуг устгаж, дараагийн хостыг туршиж үзнэ.
Хэрэв гурвуулаа бүтэлгүйтвэл модуль нь DNS руу буцаж очно. Энэ нь TXT асуулга илгээнэ. в. хэсгүүдийн тоог авахын тулд хүсэлт гаргана 0. дамжуулан n. Арав ширхэг багцаар хариултуудыг нэгтгэж, үр дүнг base64-ээр декодчилдог. Энэ зам нь DNS TXT бичлэгүүд дээр ижил гүйцэтгэгдэх файлыг агуулдаг бөгөөд энэ нь гадагш чиглэсэн HTTP шүүгддэг боловч DNS нягтрал нь шүүгддэггүй орчинд амьд үлддэг.
Авсан байтууд нь дараах байдлаар бичигдсэн байна /var/tmp/.cache_<8-hex> Unix дээр, эсвэл %TEMP%\dotnet_diag_<8-hex>.exe Windows дээр - .NET оношлогооны артефакт гэж уншигддаг файлын нэр. Unix дээр файл нь 0755 горимд өгөгдсөн. Эхлүүлэх нь зөөж байна хамтран салангид: үнэн, stdio: “үл тоомсорлох”Болон unref(), ингэснээр хүүхэд нь үүнийг эхлүүлсэн Node процессоос илүү удаан амьдрах болно; Windows дээр дуудлага нь нэмдэг цонхнуудыг нуух: үнэн.
Зургийг хоёр дэлгэрэнгүй мэдээлэл гүйцээж байна. Туслагчийг дараах байдлаар тодорхойлсон болно const _l = (…a) => process.stderr.write(“”) нь сэргээх алхам бүрт дуудагддаг — энэ нь хоосон мөр бичиж, аргументуудаа хаяж, бүртгэлийн байршлыг эзэлдэг. Мөн багц бүр 81 KB файлыг илгээдэг. lib/telemetry.js толгой тайлбарт нь “HTTPS дамжуулалт болон төгсгөлийн цэгийг эргүүлэх, дахин оролдох” болон “DNS дээр суурилсан үйлчилгээний нээлт” бүхий “Analytics SDK”-г тайлбарласан байдаг. Одоогийн хувилбарт үүнийг шаарддаггүй.
2-р үе шат — ачигч
Linux x64 хоёртын файл нь UPX 3.96-тай шахагдсан статик холбогдсон ELF юм. macOS хувилбар нь x86_64 болон arm64-ийг хамарсан бүх нийтийн хоёртын файл юм; Windows хувилбар нь PE32+ консолын гүйцэтгэгдэж болох файл юм. Дөрвөн файлыг бүгдийг нь татаж аваад статикаар шалгасан; аль нь ч гүйцэтгэгдээгүй.
Windows build-ийн импорт болон мөрийн хүснэгт нь түүний зан төлөвийг тодорхой тайлбарладаг. Энэ нь шийддэг IsDebuggerPresent, Алсын дибаггерийг шалгахБолон NtQueryInformationProcess, мөн уншдаг СИСТЕМ\ОдоогийнХяналтынСет\Үйлчилгээ\Диск\Энум — виртуал диск хянагчдыг тодорхойлдог утгуудын бүртгэлийн зам. Энэ нь дууддаг GetDiskFreeSpaceExW болон Дэлхийн санах ойн төлөв, хостын нөөцүүд богино хугацааны шинжилгээний жишээтэй тохирч байгаа эсэхийг шалгахтай нийцэж байна.
Энэ нь хэрэглэгчийн нэрсийн жагсаалтыг агуулдаг: Одоогийн хэрэглэгч, Мэдээллийн технологийн админ, Хонг Ли, Тестийн хайрцаг, hapubws, милоз, Тимми, админ, үзүүлж чадахгүй, Жишээ, вирус, орчинЭдгээрийн хэд нь олон нийтэд баримтжуулсан шинжилгээний орчны олдворууд юм.
Мөн төгсгөлийн цэгийн аюулгүй байдлын бүтээгдэхүүнүүдийн жагсаалт болон тэдгээрийн процессын нэрсийг агуулдаг бөгөөд эдгээр нь дараах байдлаар жагсаагдсан байдаг. CreateToolhelp32Snapshot болон Process32FirstW/Процесс32ДараагийнW:
- CrowdStrike Falcon (
csfalconservice,CSFalconContainer) - Хар нүүрстөрөгч (
cb.exe) - Кайлан (
cylancesvc.exe) - Bitdefender (
bdagent.exe) - Kaspersky (
avp.exe,kavfs.exe) - Trend Micro болон Deep Security (
coreServiceShell,ds_agent.exe) - Галт нүд/Трелликс (
xagt.exe) - Тани (
taniumclient.exe) - ХитманПро (
hmpalert.exe) - Мэдрэмжтэй (
elastic-agent.exe,elastic-endpoint,filebeat.exe,winlogbeat.exe) - Вазух болон OSSEC (
wazuh-agent.exe,ossec-agent.exe) - Шалгах цэг
- Windows Defender
Өөр хоёр тэмдэгт байна: AmsiScanBuffer, Windows нь санах ой дахь контентыг сканнердах зорилгоор ил гаргадаг оролтын цэг, мөн EtwEventWrite, Windows-д зориулсан Үйл явдлын мөрдөлт нь үйл явдлуудыг бүртгэдэг функц. Хоёулаа эдгээр интерфэйсүүд өөрөөр үүсгэх телеметрийг дарангуйлдаг процессын өөрчлөлтийн нийтлэг бай юм.
Windows дээр тогтвортой байдал хоёр удаа гарч ирнэ. Хоёртын файлыг дараах руу хуулна %APPDATA%\Microsoft\Windows\Themes\SystemSoundsService.exe, мөн хоёр механизм үүнийг лавлана: доорх утга ПРОГРАМ ХАНГАМЖ\Microsoft\Windows\Одоогийн хувилбар\Ажиллуулах, мөн хуваарьт даалгавар бүртгэгдсэн
schtasks /Create /F /SC ONLOGON
/TN "\Microsoft\Windows\Multimedia\SystemSoundsService"
/TR "\"%s\""
/RL HIGHESTДаалгаврын зам, даалгаврын нэр болон гүйцэтгэгдэх файлын нэр нь бүгд жинхэнэ Windows аудио бүрэлдэхүүн хэсгийг тусгасан болно. /RL ХАМГИЙН ӨНДӨР хамгийн өндөр боломжтой эрхийн түвшинг хүсдэг.
macOS хувилбар нь платформд тохирох нэртэй ижил загварыг дагадаг: энэ нь шинж чанарын жагсаалтыг дараах руу бичдэг ~/Library/LaunchAgents/com.apple.windowserver.helper.plist мөн түүний гүйцэтгэгдэх хэсгийг байрлуулдаг ~/.local/share/runtime/com.apple.runtimeЭнэ нь шалгадаг /Програмууд/VMware Fusion.апп болон /Номын сан/Програмын дэмжлэг/VMware хэрэгслүүд.
Сүлжээний хүчин чадал нь гурван тээвэрлэлтийг хамардаг: WININET.dll HTTPS-тэй хамт https://%s:%d%s форматын мөр, WS2_32.dll залгуурууд болон DNSAPI.dll хамтран DnsQuery_A a c.%s.%s форматын мөр — эхний шатны ашигладаг хэсэгчилсэн тооллын асуулгын ижил хэлбэр.
Дээрх тайлбар нь хоёртын файлын импорт, мөр болон бүртгэлийн замуудыг шалгахад харуулдаг зүйл юм. Ижил Windows дээжийн олон хөдөлгүүртэй олон талт шинжилгээ нь импортын хүснэгтийн статик уншилт өөрөө тогтоож чадахгүй дэлгэрэнгүй мэдээллийг нэмж оруулсан бөгөөд үүнийг энд биечлэн ажиглалт гэж дахин тайлбарлахын оронд дурдсан болно. Энэхүү шинжилгээ нь AMSI болон ETW лавлагаа нь зөвхөн шийдэгдээгүй, харин нөхөгдсөн болохыг мэдээлж байна - AmsiScanBuffer in amsi.dll болон EtwEventWrite in ntdll.dll — энэ нь санах ойн доторх контентыг сканнердах болон үйл явдлын мөрдөлтийг дарангуйлдаг. Энэ нь шинжилгээний эсрэг шалгалтыг цаг хугацаанд суурилсан гэж мэдээлдэг. Алсын дибаггерийг шалгах, мөн тодорхойлдог GetThreadContext дибаг регистрүүдийг унших техник хангамжийн тасалдлын цэгийн шалгалт болгон дууддаг. Энэ нь мөн ганц тохиолдлын мутексийг мэдээлдэг, Global\{7A3B9E1F-C2D4-4F8A-B5E6-D7A1F0C3E2B9}, болон нэрс Системийн Дууны Үйлчилгээ Run-key утга болгон. Энэ mutex утга нь энд сэргээгдсэн тэмдэгт мөрүүдийн дунд ороогүй байсан - гаргаж авах шүүлтүүр нь хасагдсан хаалттай том үсгийн зургаан өнцөгт жетонуудыг ашигласан - бөгөөд энэ нь шууд ажиглалтын оронд олон нийтийн шинжилгээний хүч чадлын дагуу индикаторын хүснэгтэд бүртгэгдсэн болно.
Үе шат 3
Ачаалагч нь ижил хостууд дээрх өөр олон замуудыг лавлана. Шинжилгээний явцад бүгдэд нь хүрэх боломжтой байсан: beacon_linux.bin 5.3 МБ хэмжээтэй, beacon_mac.bin 13.3 МБ хэмжээтэй, шинэчлэх_win.exe 10.3 МБ хэмжээтэй, мөн гар.бин 4.3 MB хэмжээтэй. Эдгээрийг сэргээгээгүй бөгөөд тэдний зан төлөв тодорхойгүй байна.
Windows замын хувьд ачаалагчийн олон нийтийн дүн шинжилгээ нь гурав дахь шатыг хэрхэн зохицуулдагийг тайлбарладаг: үүнийг WinINet-ээр татаж авч, шифрлэгдсэн байдлаар ирж, санах ойд тайлагдаж, тусгал байдлаар гүйцэтгэгддэг - санах ой хуваарилагддаг, импорт шийдэгддэг, нүүлгэн шилжүүлэлт боловсруулагддаг бөгөөд хяналтыг шинэ урсгал руу дамжуулдаг. CreateThreadЭнэ шалтгааны улмаас гурав дахь шат нь файлын системд хэзээ ч бичигддэггүй тул файлд суурилсан илрүүлэлт болон ослын дараах дискний шүүхийн шинжилгээнд үүнээс сэргээх зүйл байхгүй. Энэ нь мөн хүргэлтийн хостоос байтуудыг авах нь шинжилж болох гүйцэтгэгдэх файл биш харин шифрлэгдсэн текстийг өгөх болно гэсэн үг юм.
Цагийн хуваарь
Бүх цагийн тэмдэг нь UTC бөгөөд npm бүртгэлийн мета өгөгдлөөс ирдэг бөгөөд энэ нь ямар ч ажиглагчаас үл хамааран багц үүсгэх болон нийтлэхийг бүртгэдэг.
| үед | гэж юу вэ |
|---|---|
| 2026-07-31 09:25:05 → 09:29:56 | Арван нэр үүсгэсэн, тус бүр нь хувилбараас эхэлнэ 0.0.1, ойролцоогоор арван гурван секундын зайтай. |
| 2026-08-01 09:38 → 11:29 | Одоо байгаа нэрс нь хөөрөгдсөн хувилбарын дугааруудаар дамжин авирч, 6.1.9 дамжуулан 6.1.12, 9.9.9 дамжуулан 9.9.12, 8.9.3 дамжуулан 8.9.6, 5.4.6 дамжуулан 5.4.9. |
| 2026-08-01 13:04:14 → 13:04:18 | Цааш нь есөн beaver-ui-* нэрсийг дөрвөн секундын дотор бүтээсэн бөгөөд тус бүрийг өмнөх түүхгүйгээр 12.x хувилбараар шууд нийтэлсэн. |
| 2026-08-01 ~13:00–14:30 | Гараар хянаж үзэхэд хортой гэж ангилагдсан хувилбарууд. |
| 2026-08-01 17:39:49 → 17:40:14 | Хорин нэрийн арван ес нь дараалсан байдлаар, ойролцоогоор 1.2 секундын зайтай, хорин таван секундын дотор нийтлэгдээгүй. |
| 2026-08-02 18:58:41 | a.poltoradnev-package-c өөр засвар үйлчилгээний бүртгэл, хувилбараар дахин үүсгэсэн 0.0.2. |
| 2026-08-02 19:20:28 | хувилбар 33.9.5 ижил нэрээр хэвлэгдсэн. |
| 2026-08-02 20:14 | Гурван хүргэлтийн хост бүгд хоёр болон гуравдугаар үе шатуудад үйлчилдэг; DNS нөөц хариу нь хэсгүүдийн тоогоор хийгддэг. |
Эдгээр бичлэгүүдийн хоёрыг нь онцлон тэмдэглэх нь зүйтэй.
13:04 цагийн тэсрэлт нь дөрвөн секундын дотор есөн багцыг бүртгэлд оруулсан бөгөөд тус бүр нь арван хоёрт нэг хувилбартай байсан бөгөөд ямар ч хувилбар байхгүй байв. 0.0.1 Үүний доор. Нэг өдрийн өмнөх нэрээр энэ хэмжээний хувилбарын дугаарууд нь гарсан түүхийг тайлбарлаагүй болно.
Нийтлэхгүй болгох дараалал нь мөн адил механик юм: арван есөн нэр, хорин таван секунд, тэнцүү зай. npm нь эдгээрийг бүртгэлээс эхлүүлсэн устгалын үлдээсэн орлуулагчийн оронд ердийн нийтлэхгүй болгох үйл явдлууд гэж бүртгэдэг бөгөөд энэ нь үйлдлийг бүртгэлтэй биш харин нийтлэх бүртгэлтэй холбодог.
Буулт хийх үзүүлэлтүүд
Хостууд болон замууд нь defang хийгдсэн байна. Тэдгээрийг шийдвэрлэх эсвэл үйлдвэрлэлийн системээс татаж авах хэрэггүй.
| Төрөл: | үнэ цэнэ |
|---|---|
| Хүргэлтийн зохион байгуулагч | oob-worker[.]cf99-9b3[.]workers[.]dev |
| Хүргэлтийн зохион байгуулагч | oob-worker[.]cf102-baf[.]workers[.]dev |
| Хүргэлтийн зохион байгуулагч | oob-worker[.]cf103-070[.]workers[.]dev |
| DNS дамжуулалт | tin[.]dl[.]well1[.]site (Линукс x64), tina[.] (гар64), ldr[.] (macOS), win[.] (Windows) — хэсгүүдийн тоо c.<domain>, өгөгдөл дээр <n>.<domain> |
| 2-р шатны замууд | /pkg/package, /pkg/package-arm64, /pkg/loader_mac, /pkg/package.exe |
| 3-р шатны замууд | /pkg/beacon_linux.bin, /pkg/beacon_mac.bin, /pkg/update_win.exe, /pkg/arm.bin |
| Унах зам (Unix) | /var/tmp/.cache_<8-hex> |
| Буух зам (Windows) | %TEMP%\dotnet_diag_<8-hex>.exe |
| Тогтвортой байдал (Windows) | %APPDATA%\Microsoft\Windows\Themes\SystemSoundsService.exe; даалгавар \Microsoft\Windows\Multimedia\SystemSoundsService; Ажиллуулах түлхүүрийн утга SOFTWARE\Microsoft\Windows\CurrentVersion\Run\SystemSoundsService |
| Мутекс (Windows) | Global\{7A3B9E1F-C2D4-4F8A-B5E6-D7A1F0C3E2B9} |
| Тогтвортой байдал (macOS) | ~/Library/LaunchAgents/com.apple.windowserver.helper.plistхоёртын файл ~/.local/share/runtime/com.apple.runtime |
| Нэг удаа ажиллуулах тамга | /tmp/.analytics_state, %TEMP%\analytics_state (20,357 секундын цонх) |
| Гарын үсэг хүсэх | HTTPS GET, IPv4-пинтэй, Хэрэглэгчийн Агент: node-fetch/2.6 |
| 1-р шатны файл | _polyfill.js, SHA-256 392dc9ec85042ce1796bfa9b8c7bf6e05c7710579aab8b7b1eb73788683883af |
| Лавлагаагүй файл | lib/telemetry.js, SHA-256 2266c9b8e199daebe31a9afcb61d9b0d76706b63c92312fc8223d22de42e63c7 |
| 2-р шат (Linux x64) | SHA-256 7e486657f30594afda379b97030252a09a19fe8055e25c9e371544f59bd8e9e3 |
| 2-р үе шат (Linux arm64) | SHA-256 aafc37589c0d21fb729761a1579ca3b278b95bce152aacfa29243ffd27f5eeb7 |
| 2-р үе шат (macOS) | SHA-256 c214746c74cae8ece8bdaf69aa05da4db6ce013f9e77452d1eed1a002fd9ba00 |
| 2-р шат (Windows) | SHA-256 d632c2c0c7801c3da57cf849fe4b4ca8351d9a7fe73c31050bf5dbcc96a16791 |
Багцын нэрс
Атрибут болон ажиглагдсан зан төлөв
Хоёр npm бүртгэл холбогдсон. Нийтлэгдээгүй арван есөн нэрийг нэг бүртгэл нийтэлсэн; a.poltoradnev-package-c 8-р сарын 2-нд өөр бүртгэлийн нэр болон өөр имэйл домэйн нэрээр дахин бүртгүүлсэн. Код нь хоёуланд нь ижил удам угсаатай бөгөөд хоёр дахь бүртгэл нь ижил хүргэлтийн хостууд, ижил DNS нөөц домэйнууд, ижил уналтын замын бүтэц, ижил run-once stamp-ийг агуулдаг.
Дахин хэвлэгдсэн хос хувилбарт мөн үүнийг хэрхэн угсарсныг харуулсан болно. 0.0.2 болон 33.9.5 нь хувилбарын мөрөөс өөр байтаар ижил байна багц.json, болон index.js тээвэрлэгдсэн 0.0.2 зарласан const ХУВИЛБАР = “33.9.5”Хоёр олдворыг нэг эх модноос хайчилж аваад дараа нь дугаарласан. Байхгүй. 0.0.2 хөгжлийн түүх 0.0.2 төлөөлөхийн тулд суллах.
Бүхэл багцын хувилбарын дугаарлалт нь ижил логикийг дагадаг. Энэ кампанит ажлын багцын нэрсийг нийтийн бүртгэлд биш харин байгууллага дотор байх зүйлс гэж уншдаг: UI бүрэлдэхүүн хэсгийн багц, ESLint тохиргоо, SLA шалгагч, хүний нэрээр нэрлэгдсэн багц. Бүтээл нь хамаарлыг нэрээр нь шийдэж, хувийн бүртгэлийн хажууд нийтийн бүртгэлийг шалгах үед хувилбарын дугаар өндөр байх нь хождог. Үүсгэсэн нэр 0.0.1 Даваа гарагт болон авч явдаг 12.9.6 Мягмар гараг нь энэ харьцуулалтад зориулагдсан болно.
Хоёр хэвлэлийн давалгаа нь давталтыг санал болгох байдлаараа бас ялгаатай. Өмнөх код нь өөрийн ачааллын файлыг нэрлэсэн. тохиргоо.js мөн таван хүргэлтийн хостыг жагсаасан; одоогийн файлын нэр нь _polyfill.js мөн гурвыг жагсаасан. Өмнөх хувилбар нь ажиллуулснаас хойш таван секундын дараа устгагдсан файлыг устгасан бөгөөд процессыг устгасан inode-оос ажиллуулсан; одоогийн хувилбар нь ажиллуулаагүй. Лавлагаагүй lib/telemetry.js хоёулангийнх нь ган бөмбөлөгт үлдсэн, тээвэрлэгдсээр байгаа бөгөөд утастай холбогдоогүй байна.
Kill switch-ийн талаарх нэг ажиглалтыг урьдчилан хэлэх нь зүйтэйcisучир нь энэ нь нийтлэг заалттай зөрчилддөг. ТЕЛЕМЕТРИЙГ ИДЭВХГҮЙ БАЙЛГАХ, ШИНЖЛЭХИЙН_АНАЛИЗ_ОЛГОХБолон DO_NOT_TRACK хүндэтгэл хүлээдэг бөгөөд өөр юу ч болохоос өмнө шалгадаг. Шинжилгээний орчин нь тэдгээрийн аль нэгийг нь тохируулдаг судлаач юу ч хийдэггүй багцыг ажигладаг.
Нөлөөлөл ба хамгаалагчид юу хийж чадах вэ
Импортын цагийн триггерийн практик үр дагавар нь нарийн бөгөөд дангаар нь хэлэх нь зүйтэй юм. npm суулгах –ignore-scripts Амьдралын мөчлөгийн скриптүүдийг ажиллуулахаас сэргийлдэг бөгөөд энэ нь зөв зөвлөгөө юм. Энэ код нь амьдралын мөчлөгийн скриптийг ашигладаггүй тул энд ямар ч нөлөө үзүүлэхгүй. Програмын код, туршилтын ажиллагаа, багцлагч эсвэл шугам нь модулийг эхлээд импортлох үед ачаалал ажилладаг. Суулгаад дараа нь шууд бүтээдэг CI runner дээр хоёр нь хэдхэн секундын зайтай байдаг.
Ан агнуурын хувьд бат бөх дохионууд нь шууд утгаараа биш харин бүтцийн шинж чанартай байдаг. Хостууд, файлын нэр, буух замууд өөрчлөгдөх болно; эдгээр хэлбэрүүдийг өөрчлөхөд илүү хэцүү байдаг:
- Эцсийн мэдэгдэл нь модулийн оролтын цэг оролдоод үз { шаардлагатай(“./x”); } барих (_) {} экспортлогдсон API-ийн хэсэг биш файлын эргэн тойронд. Жинхэнэ полифиллтэй багц нь үүнийг дээд хэсэгт нь импортлож, үр дүнг нь ашигладаг. Файлын доод хэсэгт импортлохоос гарсан алдаа бүрийг залгих нь алдааг зохицуулахтай адил биш юм.
- Хостын утаснуудыг угсарсан .join(“”) хэсгүүдийн массиваас. Хууль ёсны код нь хостын нэрийг массивын элементүүдэд хуваах шалтгаангүй.
- Зарлагдсан хамаарлууд нь хоосон боловч хүрэх багц HTTPS, DNSБолон хүүхдийн_процесс импортын үед. UI бүрэлдэхүүн хэсгийг сурталчилдаг багцад сэргээх болон гүйцэтгэх нь бүхэл бүтэн олдвор юм.
- Хувилбарын дугаарууд нь багцын настай зөрчилдөж байна. Хэдхэн хоногийн өмнө анх хоёр оронтой тоогоор хэвлэгдэн гарсан, завсрын хувилбаргүй томоохон хувилбараар нийтлэгдсэн нэр нь түүний хөгжлөөс өөр зүйлийг тодорхойлж байна.
- Бичлэг хийдэг / var / tmp or % Temp% Дараа нь a Chmod 0755 хүртэл болон салангид түрс. Дараалал нь богино, эмх цэгцтэй бөгөөд хамтдаа ховор тохиолдолд хоргүй байдаг.
Windows хостууд дээр хоёр хямд, өндөр итгэлцлийн шалгалт байдаг. Тогтвортой байдлын ул мөрүүд нь тогтмол тэмдэгт мөрүүд бөгөөд тэдгээрийн аль нь ч цэвэр системд хамаарахгүй: хуваарьт даалгавар \Microsoft\Windows\Multimedia\SystemSoundsService, нэртэй Run-key утга Системийн Дууны Үйлчилгээ, мөн тухайн нэртэй гүйцэтгэгдэх файл доор байна %APPDATA%\Microsoft\Windows\Themes\Жинхэнэ Windows аудио үйлчилгээ нь эдгээр газруудын аль нэгэнд нь байдаггүй. Хоёрдугаарт, ачаалагч нь тогтмол ганц жишээний мутексийг ашигладаг, Global\{7A3B9E1F-C2D4-4F8A-B5E6-D7A1F0C3E2B9}; хост дээр байгаа нь үзүүлэлт бөгөөд ачаалагч нь одоо байгаа мутексийг "аль хэдийн ажиллаж байна" гэж үздэг тул нөхөн сэргээх ажил төлөвлөгдсөн байхад урьдчилан үүсгэх нь богино хугацааны вакцинжуулалт хийх боломжтой.
Гурав дахь шатанд илрүүлэх нь илүү хэцүү асуудал бөгөөд тодорхой болгох нь зүйтэй. Олон нийтийн дүн шинжилгээгээр үүнийг тайлж, диск рүү бичихийн оронд санах ойд буулгадаг тул файл сканнердах болон дискний шүүхийн шинжилгээ үүнийг харахгүй. Ажиглагдаж болох зүйл бол ачаалагчийн өөрийн ул мөр юм - тогтвортой байдлын оруулгууд, мутекс, хүргэлтийн хостууд эсвэл DNS-TXT домэйнууд руу илгээсэн гадагш чиглэсэн хүсэлтүүд.
Хувийн болон нийтийн бүртгэлээс хамааралтай байдлыг шийддэг орчны хувьд энд ямар ч зүйл өөрчлөгдөөгүй: нийтийн нэр нь тэдгээрийг хангаж чадахгүй байхаар хамрах хүрээний дотоод нэрс, мөн эдгээр хамрах хүрээний дотоод бүртгэлд нягтралыг зүүх. Дээр дурдсан хувилбарын инфляцийн зан төлөв нь зөвхөн өндөр нийтийн хувилбар нэр авах боломжтой үед л ажилладаг.
Эцэст нь, нийтлээгүйг төгсгөл гэж үзэхээс илүү анхааралтай унших нь зүйтэй. Арван есөн нэр бүртгэлээс хорин таван секундын дотор гарсан бөгөөд нэг нь нэг өдрийн дараа шинэ бүртгэлээр буцаж ирсэн бөгөөд хүргэлтийн дэд бүтэц бүхэлдээ хөндөгдөөгүй байв. Багцуудыг устгах нь үйлдлийг устгах гэсэн үг биш; үүнийг бичиж байх хооронд хостууд үе шат бүрт үйлчилсээр байв. 7-р сарын 31-ээс 8-р сарын 1-ний хооронд эдгээр нэрсийн аль нэгийг нь шийдсэн аливаа хамаарлын модыг нэр нь хэвээр байгаа эсэхээс үл хамааран эхний үе шатыг гүйцэтгэх боломжтой байсан гэж үзэх хэрэгтэй.
Ашигласан материал
- Windows ачаалагчийн олон хөдөлгүүрийн шинжилгээ — дээр дурдсан AMSI/ETW нөхөөс, санах ой доторх тусгал гүйцэтгэл болон мутексийн дэлгэрэнгүй мэдээллийн эх сурвалж.
- npm скриптүүдийн баримтжуулалт — энэ кампанит ажил ашигладаггүй амьдралын мөчлөгийн үйл явдлууд.
- npm суулгах баримт бичиг — бүрхүүлүүд –үл тоомсорлох-скриптүүд болон түүний цар хүрээ.







