TL; កុង
កញ្ចប់ npm ចំនួនម្ភៃដែលបានបោះពុម្ពផ្សាយក្នុងរយៈពេលពីរថ្ងៃនៅចុងខែកក្កដា និងដើមខែសីហា ឆ្នាំ២០២៦ បង្ហាញខ្លួនឯងថាជាបណ្ណាល័យសមាសធាតុ UI ខាងក្នុង និងឧបករណ៍ប្រើប្រាស់ backend ដែលបានចែករំលែក។ គ្មាននរណាម្នាក់ក្នុងចំណោមពួកវាអនុវត្តមុខងារដែលពួកគេផ្សព្វផ្សាយនោះទេ។ កញ្ចប់នីមួយៗបញ្ជូនថ្នាក់ stub README ដែលពិពណ៌នាអំពីកញ្ចប់ថាជាផ្ទៃក្នុង និងឯកសារមួយដែលមានឈ្មោះថា _polyfill.js.
ចំណុចគួរឱ្យចាប់អារម្មណ៍គឺកន្លែងដែលឯកសារនោះត្រូវបានហៅមកពី។ វាមិនមែនជាទំពក់ដំឡើងទេ — បញ្ជីឯកសារប្រកាសថាមិនមានការដំឡើងជាមុន ការដំឡើង ឬការដំឡើងក្រោយការដំឡើងទាល់តែសោះ។ ផ្ទុយទៅវិញ បន្ទាត់ចុងក្រោយនៃ index.js អាន: try { require("./_polyfill"); } catch (_) {}payload ដំណើរការជាលើកដំបូងនៅពេលដែលកូដកម្មវិធីនាំចូលកញ្ចប់។ ការដំឡើងជាមួយ --ignore-scriptsនេះ standard ដំបូន្មានសម្រាប់កាត់បន្ថយការប៉ះពាល់នឹងខ្សែសង្វាក់ផ្គត់ផ្គង់នៅពេលដំឡើង មិនរារាំងវា។.
អ្វី _polyfill.js តើវាទាញយកឯកសារប្រតិបត្តិជាក់លាក់សម្រាប់វេទិកាពីម៉ាស៊ីនបម្រើ Cloudflare Workers មួយក្នុងចំណោមបី សរសេរវាទៅក្នុងថតឯកសារបណ្ដោះអាសន្នក្រោមឈ្មោះចៃដន្យ សម្គាល់វាថាជាឯកសារដែលអាចប្រតិបត្តិបាន ហើយបើកដំណើរការវាដោយផ្ដាច់ចេញពីដំណើរការមេ។ ឯកសារដែលអាចប្រតិបត្តិបាននោះគឺជាកម្មវិធីផ្ទុកទិន្នន័យ៖ វារាយបញ្ជីផលិតផលសុវត្ថិភាពចំណុចបញ្ចប់តាមឈ្មោះដំណើរការ ពិនិត្យឈ្មោះអ្នកប្រើប្រាស់បច្ចុប្បន្នប្រឆាំងនឹងគណនីបរិស្ថានវិភាគដែលគេស្គាល់ បិទភ្ជាប់ចំណុចប្រទាក់ទូរលេខ AMSI និង ETW នៅក្នុងអង្គចងចាំ ដំឡើងភាពស្ថិតស្ថេរក្រោមឈ្មោះនៃសមាសធាតុអូឌីយ៉ូ Windows និងទាញយកឯកសារគោលពីរទីបីដែលមានទំហំមេកាបៃច្រើនមេកាបៃ។ ដំណាក់កាលទីបីមកដល់ដែលត្រូវបានអ៊ិនគ្រីប ហើយត្រូវបាន... បានឌិគ្រីប និងប្រតិបត្តិក្នុងអង្គចងចាំ ជាជាងសរសេរទៅឌីស.
នៅថ្ងៃទី 1 ខែសីហា ប្រហែលបួនម៉ោងបន្ទាប់ពីកញ្ចប់ទាំងនោះត្រូវបានបញ្ជាក់ថាមានមេរោគនៅក្នុងការពិនិត្យដោយដៃ ឈ្មោះចំនួន 19 ក្នុងចំណោមឈ្មោះទាំងម្ភៃត្រូវបានដកចេញពី npm ដោយអ្នកបោះពុម្ពផ្សាយរបស់ពួកគេក្នុងរយៈពេល 25 វិនាទី។ នៅថ្ងៃទី 2 ខែសីហា ឈ្មោះមួយក្នុងចំណោមឈ្មោះទាំងនោះត្រូវបានចុះឈ្មោះម្តងទៀត — ដោយគណនីផ្សេង ដែលមានលេខកូដដូចគ្នា។ ហេដ្ឋារចនាសម្ព័ន្ធដឹកជញ្ជូនកំពុងបម្រើដំណាក់កាលទាំងបីនៅពេលដែលរឿងនេះត្រូវបានសរសេរ។
| កញ្ចប់ | ឈ្មោះ npm ចំនួន 20, កំណែដែលបានបោះពុម្ពផ្សាយចំនួន ~74 |
| ការដាក់ឈ្មោះប្រធានបទ | beaver-ui-* (13) accounts-* (៣), បូក afisha-storybook-default, bcore-bravo-eslint-config, arbocrate-sla-prober-arbocrate-sla-prober-core, a.poltoradnev-package-c |
| គន្លឹះ | ការនាំចូលម៉ូឌុល (require) មិនមែនជាស្គ្រីបវដ្តជីវិត npm ទេ |
| ដំណាក់កាល 1 | _polyfill.js - ការទាញយក និងការបើកដំណើរការ |
| ដំណាក់កាល 2 | កម្មវិធីផ្ទុកទិន្នន័យដែលមានតំណភ្ជាប់ឋិតិវន្ត ភ្ជាប់មកជាមួយ UPX នៅលើ Linux; ការរាប់បញ្ចូលសុវត្ថិភាពចំណុចបញ្ចប់ ការបិទភ្ជាប់ AMSI/ETW ការតស៊ូ |
| ដំណាក់កាល 3 | beacon_linux.bin / beacon_mac.bin / update_win.exe, ៤–១៣ មេកាបៃ; បានបញ្ជូនដែលបានអ៊ិនគ្រីប ត្រូវបានប្រតិបត្តិក្នុងអង្គចងចាំ |
| វេទិកា | Linux x64 និង arm64, macOS ជាសកល, Windows x64 |
| អ្នកបោះពុម្ព | គណនីពីរ មូលដ្ឋានកូដតែមួយ |
| ស្ថានភាព | ឈ្មោះ ១៩ ក្នុងចំណោម ២០ ដែលមិនទាន់បានបោះពុម្ពផ្សាយ ដោយប្រតិបត្តិករ; 1 បានបោះពុម្ពផ្សាយឡើងវិញ និងផ្សាយផ្ទាល់; ហេដ្ឋារចនាសម្ព័ន្ធដឹកជញ្ជូនផ្សាយផ្ទាល់ |
កាយវិភាគសាស្ត្រវាយប្រហារ
ដំណាក់កាលទី 1 - កញ្ចប់
សមាជិកនីមួយៗបញ្ជូនរូបរាងឯកសារបីដូចគ្នា។ index.js ។ នាំចេញថ្នាក់មួយដែលមាន នៅក្នុងវា() ដែលកំណត់ប៊ូលីនមួយ, a កំណែ (), និងក កំណត់រចនាសម្ព័ន្ធ() ដែលបញ្ចូលវត្ថុជម្រើសចូលគ្នា។ គ្មានអ្វីផ្សេងទៀតទេ។ README.md ផ្តល់នូវបន្ទាត់ដំឡើងមួយ, មួយ តម្រូវឱ្យមាន បន្ទាត់ និងប្រយោគ “កញ្ចប់ខាងក្នុង។ សូមមើល CONTRIBUTING.md សម្រាប់គោលការណ៍ណែនាំ” — CONTRIBUTING.md មិនមាននៅក្នុង tarball ទេ។
_polyfill.js មានទំហំតិចជាង 5 KB បន្តិច ហើយអានជាកូដហេដ្ឋារចនាសម្ព័ន្ធធម្មតា។ វាបើកជាមួយនឹងការត្រួតពិនិត្យបរិស្ថានចំនួនបី៖
if (process.env.DISABLE_TELEMETRY ||
process.env.ANALYTICS_OPT_OUT ||
process.env.DO_NOT_TRACK)
return; អថេរទាំងនោះគឺជាការគ្រប់គ្រងភាពឯកជនធម្មតា។ នៅទីនេះពួកវាកំណត់ថាតើប្រព័ន្ធគោលពីរត្រូវបានទាញយក និងប្រតិបត្តិឬអត់។ ម៉ាស៊ីនដែលកំណត់ កុំតាមដាន ត្រូវបានរំលងទាំងស្រុង។
បន្ទាប់មកមានត្រារត់ម្តង៖ ឯកសារមួយនៅ /tmp/.analytics_stateឬ ស្ថានភាពវិភាគ ក្រោមការ % TEMP% នៅលើ Windows ដែលពេលវេលាកែប្រែរបស់វាត្រូវបានប្រៀបធៀបទៅនឹងបង្អួចរយៈពេល 20,357 វិនាទី។ នៅក្នុងបង្អួចនោះ ម៉ូឌុលនឹងត្រឡប់មកវិញភ្លាមៗ ដូច្នេះការនាំចូលម្តងហើយម្តងទៀតក្នុងអំឡុងពេលសាងសង់បង្កើតការប៉ុនប៉ងទាញយកម្តងជាជាងរាប់សិបដង។
ម៉ាស៊ីនគោលដៅមិនមានវត្តមានជាអក្សរទេ។ ពួកវាត្រូវបានផ្គុំនៅពេលដំណើរការពីបំណែកៗ៖
["oob-worker.cf102-","baf.workers.d","ev"].join("") ម៉ាស៊ីនមេចំនួនបីត្រូវបានបង្កើតឡើងតាមរបៀបនេះ ហើយត្រូវបានសាប់មុនពេលប្រើប្រាស់ ដូច្នេះលំដាប់ខុសគ្នាក្នុងមួយការប្រតិបត្តិ។ ការទាញយកគឺជា HTTPS GET ដែលខ្ទាស់ទៅ IPv4 ជាមួយ ភ្នាក់ងារអ្នកប្រើប្រាស់។ of node-fetch/2.6 — តម្លៃដែលអាចទុកចិត្តបានសម្រាប់ដំណើរការ Node ដើម្បីបញ្ចេញ។ ការឆ្លើយតបក្រោម 1,000 បៃត្រូវបានលុបចោល ហើយម៉ាស៊ីនបន្ទាប់ត្រូវបានសាកល្បង។
ប្រសិនបើទាំងបីបរាជ័យ ម៉ូឌុលនឹងត្រលប់ទៅ DNS វិញ។ វាចេញសំណួរ TXT សម្រាប់ គ. ដើម្បីទទួលបានចំនួនដុំ បន្ទាប់មកស្នើសុំ ០. តាមរយៈការ ន. ជាបាច់ចំនួនដប់ ភ្ជាប់ចម្លើយជាមួយគ្នា ហើយ base64 ឌិកូដលទ្ធផល។ ផ្លូវនេះផ្ទុកឯកសារដែលអាចប្រតិបត្តិបានដូចគ្នាលើកំណត់ត្រា DNS TXT ដែលអាចរស់រានមានជីវិតនៅក្នុងបរិស្ថានដែល HTTP ចេញត្រូវបានត្រង ប៉ុន្តែគុណភាពបង្ហាញ DNS មិនត្រូវបានត្រងទេ។
បៃត៍ដែលបានទាញយកត្រូវបានសរសេរទៅ /var/tmp/.cache_<8-hex> នៅលើយូនីក ឬ %TEMP%\dotnet_diag_<8-hex>.exe នៅលើ Windows — ឈ្មោះឯកសារដែលអានថាជាវត្ថុបុរាណវិនិច្ឆ័យ .NET។ នៅលើ Unix ឯកសារត្រូវបានផ្តល់របៀប 0755។ ការបើកដំណើរការគឺ ពង ជាមួយ ដាច់ដោយឡែក៖ ពិត, stdio: "មិនអើពើ"និង មិនយោង()ដូច្នេះកូនមានអាយុកាលយូរជាងដំណើរការ Node ដែលបានចាប់ផ្តើមវា។ នៅលើ Windows ការហៅបន្ថែម បង្អួចលាក់៖ ពិត.
ព័ត៌មានលម្អិតពីរបំពេញរូបភាព។ ជំនួយការមួយត្រូវបានកំណត់ថាជា const _l = (…a) => process.stderr.write(“”) ត្រូវបានហៅនៅជំហាននីមួយៗនៃការទាញយក — វាសរសេរខ្សែអក្សរទទេមួយ ហើយបោះបង់ចោលអាគុយម៉ង់របស់វា ដោយកាន់កាប់ទីតាំងដែលការកត់ត្រានឹងស្ថិតនៅ។ ហើយកញ្ចប់នីមួយៗផ្ញើឯកសារទំហំ 81 KB នៅ lib/telemetry.js ដែលមតិយោបល់បឋមកថារបស់វាពិពណ៌នាអំពី "Analytics SDK" ជាមួយ "ការដឹកជញ្ជូន HTTPS ជាមួយនឹងការបង្វិលចំណុចបញ្ចប់ និងការព្យាយាមម្តងទៀត" និង "ការរកឃើញសេវាកម្មផ្អែកលើ DNS សម្រាប់ការបំលែងប្រព័ន្ធ"។ នៅក្នុងការបង្កើតបច្ចុប្បន្ន គ្មានអ្វីតម្រូវឱ្យមានវាទេ។
ដំណាក់កាលទី 2 - ឧបករណ៍ផ្ទុក
ឯកសារគោលពីរ Linux x64 គឺជា ELF ដែលមានតំណភ្ជាប់ឋិតិវន្ត ដែលបានបង្ហាប់ជាមួយ UPX 3.96។ ការបង្កើត macOS គឺជាឯកសារគោលពីរសកលដែលគ្របដណ្តប់លើ x86_64 និង arm64; ការបង្កើត Windows គឺជាឯកសារដែលអាចប្រតិបត្តិបានរបស់កុងសូល PE32+ ដែលត្រូវបានដកចេញ។ ឯកសារទាំងបួនត្រូវបានទាញយក និងពិនិត្យឋិតិវន្ត; គ្មានអ្វីត្រូវបានប្រតិបត្តិទេ។
ការនាំចូល និងតារាងខ្សែអក្សរនៃការបង្កើតវីនដូពិពណ៌នាអំពីឥរិយាបថរបស់វាយ៉ាងច្បាស់។ វាដោះស្រាយ IsDebuggerPresent, CheckRemoteDebuggerPresentនិង ដំណើរការព័ត៌មាន NtQuery, និងអាន ប្រព័ន្ធ\CurrentControlSet\Services\Disk\Enum — ផ្លូវចុះបញ្ជីដែលតម្លៃរបស់វាកំណត់អត្តសញ្ញាណឧបករណ៍បញ្ជាថាសនិម្មិត។ វាហៅ GetDiskFreeSpaceExW និង GlobalMemoryStatusExស្របនឹងការត្រួតពិនិត្យថាតើធនធានរបស់ម៉ាស៊ីនត្រូវគ្នានឹងឧទាហរណ៍វិភាគរយៈពេលខ្លីឬអត់។
វាមានបញ្ជីឈ្មោះអ្នកប្រើប្រាស់៖ អ្នកប្រើប្រាស់បច្ចុប្បន្ន, រដ្ឋបាល IT, ហុង លី, ប្រអប់សាកល្បង, ហាបប៊ូស, មីឡូស, ពេលវេលា, គ្រប់គ្រង, មេរោគ, គំរូ, មេរោគ, បរិស្ថានក្នុងចំណោមទាំងនេះ មួយចំនួនគឺជាវត្ថុបុរាណនៃបរិយាកាសវិភាគដែលបានចងក្រងជាឯកសារសាធារណៈ។
វាក៏មានបញ្ជីផលិតផលសុវត្ថិភាពចំណុចបញ្ចប់ និងឈ្មោះដំណើរការរបស់វាផងដែរ ដែលត្រូវបានរាយបញ្ជីតាមរយៈ បង្កើតឧបករណ៍ជំនួយ32រូបថត និង ដំណើរការ 32 ដំបូង W/ដំណើរការ 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) - FireEye/Trelix (
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អនុគមន៍ដែល Event Tracing សម្រាប់ Windows កត់ត្រាព្រឹត្តិការណ៍។ ទាំងពីរគឺជាគោលដៅទូទៅសម្រាប់ការកែប្រែក្នុងដំណើរការ ដែលទប់ស្កាត់ telemetry ដែលចំណុចប្រទាក់ទាំងនោះនឹងបង្កើតបើមិនដូច្នោះទេ។
ភាពស្ថិតស្ថេរលេចឡើងពីរដងនៅលើ Windows។ ឯកសារគោលពីរត្រូវបានចម្លងទៅ %APPDATA%\Microsoft\Windows\Themes\SystemSoundsService.exeនិងយន្តការពីរយោងទៅលើវា៖ តម្លៃមួយនៅក្រោម កម្មវិធី\Microsoft\Windows\CurrentVersion\Runនិងភារកិច្ចដែលបានកំណត់ពេលត្រូវបានចុះបញ្ជីជា
schtasks /Create /F /SC ONLOGON
/TN "\Microsoft\Windows\Multimedia\SystemSoundsService"
/TR "\"%s\""
/RL HIGHEST ផ្លូវភារកិច្ច ឈ្មោះភារកិច្ច និងឈ្មោះដែលអាចប្រតិបត្តិបាន សុទ្ធតែឆ្លុះបញ្ចាំងពីសមាសធាតុអូឌីយ៉ូ Windows ពិតប្រាកដ។ /RL ខ្ពស់បំផុត ស្នើសុំកម្រិតសិទ្ធិខ្ពស់បំផុតដែលអាចរកបាន។
ការបង្កើត macOS ធ្វើតាមគំរូដូចគ្នាជាមួយនឹងឈ្មោះដែលសមស្របនឹងវេទិកា៖ វាសរសេរបញ្ជីលក្ខណសម្បត្តិទៅ ~/បណ្ណាល័យ/LaunchAgents/com.apple.windowserver.helper.plist ហើយដាក់ឯកសារដែលអាចប្រតិបត្តិបានរបស់វានៅ ~/.local/share/runtime/com.apple.runtime. វាពិនិត្យសម្រាប់ /កម្មវិធី/VMware Fusion.app និង /បណ្ណាល័យ/ការគាំទ្រកម្មវិធី/ឧបករណ៍ VMware.
សមត្ថភាពបណ្តាញគ្របដណ្តប់លើការដឹកជញ្ជូនបីយ៉ាង៖ WININET.dll សម្រាប់ HTTPS ជាមួយ https://%s:%d%s ខ្សែអក្សរទម្រង់, WS2_32.dll រន្ធដោត និង DNSAPI.dll ជាមួយ DnsQuery_A រួមជាមួយមួយ គ.%s.%s format string — រូបរាងសំណួរ chunk-count ដូចគ្នាដែលដំណាក់កាលទីមួយប្រើ។
ការពិពណ៌នាខាងលើគឺជាអ្វីដែលការនាំចូល ខ្សែអក្សរ និងផ្លូវចុះបញ្ជីរបស់ប្រព័ន្ធគោលពីរបង្ហាញនៅពេលត្រួតពិនិត្យ។ ការវិភាគពហុម៉ាស៊ីនសាធារណៈនៃគំរូ Windows ដូចគ្នាបន្ថែមព័ត៌មានលម្អិតដែលការអានឋិតិវន្តនៃតារាងនាំចូលមិនអាចបង្កើតដោយខ្លួនឯងបានទេ ហើយត្រូវបានសន្មតនៅទីនេះជាជាងការបញ្ជាក់ឡើងវិញថាជាការសង្កេតដោយផ្ទាល់។ ការវិភាគនោះរាយការណ៍ថាឯកសារយោង AMSI និង ETW មិនត្រឹមតែត្រូវបានដោះស្រាយប៉ុណ្ណោះទេ ប៉ុន្តែត្រូវបានជួសជុលផងដែរ — AmsiScanBuffer in amsi.dll និង EtwEventWrite in ntdll.dll — ដែលទប់ស្កាត់ការស្កេនខ្លឹមសារក្នុងអង្គចងចាំ និងការតាមដានព្រឹត្តិការណ៍សម្រាប់ដំណើរការ។ វារាយការណ៍ពីការត្រួតពិនិត្យប្រឆាំងការវិភាគថាផ្អែកលើពេលវេលា បន្ថែមពីលើ CheckRemoteDebuggerPresentនិងកំណត់អត្តសញ្ញាណ ទទួលបានបរិបទខ្សែស្រឡាយ ការហៅជាការត្រួតពិនិត្យចំណុចបំបែកផ្នែករឹង ដោយអានបញ្ជីការបំបាត់កំហុស។ វាក៏រាយការណ៍ពី mutex តែមួយផងដែរ។ Global\{7A3B9E1F-C2D4-4F8A-B5E6-D7A1F0C3E2B9}និងឈ្មោះ សេវាកម្មសំឡេងប្រព័ន្ធ ជាតម្លៃ Run-key។ តម្លៃ mutex នោះមិនមែនជាខ្សែអក្សរដែលបានរកឃើញនៅទីនេះទេ — តម្រងស្រង់ចេញបានប្រើថូខឹន hex ដែលមានអក្សរធំមិនរាប់បញ្ចូល — ហើយវាត្រូវបានកត់ត្រានៅក្នុងតារាងសូចនាករលើកម្លាំងនៃការវិភាគសាធារណៈនោះជាជាងការសង្កេតដោយផ្ទាល់។
ដំណាក់កាល 3
កម្មវិធីផ្ទុកឯកសារយោងទៅសំណុំផ្លូវបន្ថែមនៅលើម៉ាស៊ីនដូចគ្នា។ ទាំងអស់អាចទៅដល់បានក្នុងអំឡុងពេលវិភាគ៖ beacon_linux.bin នៅ 5.3 មេកាបៃ, beacon_mac.bin នៅ 13.3 មេកាបៃ, update_win.exe នៅ 10.3 MB និង arm.bin នៅ 4.3 MB។ ទាំងនេះមិនត្រូវបានទាញយកទេ ហើយឥរិយាបថរបស់ពួកវាក៏មិនដឹងដែរ។
សម្រាប់ផ្លូវ Windows ការវិភាគសាធារណៈនៃឧបករណ៍ផ្ទុកពិពណ៌នាអំពីរបៀបដែលដំណាក់កាលទីបីនោះត្រូវបានដោះស្រាយ៖ វាត្រូវបានទាញយកតាមរយៈ WinINet មកដល់ដែលបានអ៊ិនគ្រីប ហើយត្រូវបានឌិគ្រីបនៅក្នុងអង្គចងចាំ និងប្រតិបត្តិដោយឆ្លុះបញ្ចាំង - អង្គចងចាំត្រូវបានបែងចែក ការនាំចូលត្រូវបានដោះស្រាយ ការផ្លាស់ប្តូរទីតាំងត្រូវបានដំណើរការ និងការគ្រប់គ្រងត្រូវបានបញ្ជូនទៅខ្សែស្រឡាយថ្មីតាមរយៈ បង្កើតខ្សែស្រឡាយ។ ដោយហេតុនេះ ដំណាក់កាលទីបីមិនត្រូវបានសរសេរទៅកាន់ប្រព័ន្ធឯកសារទេ ដូច្នេះការរកឃើញផ្អែកលើឯកសារ និងកោសល្យវិច្ច័យឌីសក្រោយឧប្បត្តិហេតុគ្មានអ្វីត្រូវសង្គ្រោះពីវាទេ។ វាក៏មានន័យថា ការទាញយកបៃពីម៉ាស៊ីនចែកចាយនឹងផ្តល់ជាអត្ថបទសម្ងាត់ មិនមែនជាឯកសារដែលអាចប្រតិបត្តិបាននោះទេ។
ការកំណត់ពេលវេលា
ត្រាពេលវេលាទាំងអស់គឺ 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 កត់ត្រាទាំងនេះជាព្រឹត្តិការណ៍មិនបោះពុម្ពផ្សាយធម្មតា ជាជាងកន្លែងដាក់ដែលការដកចេញដែលផ្តួចផ្តើមដោយការចុះឈ្មោះទុកនៅពីក្រោយ ដែលដាក់សកម្មភាពជាមួយគណនីបោះពុម្ពផ្សាយជាជាងជាមួយការចុះឈ្មោះ។
សូចនាករនៃការសម្របសម្រួល
ម៉ាស៊ីន និងផ្លូវត្រូវបានធ្វើឱ្យខូចទ្រង់ទ្រាយ។ កុំដោះស្រាយ ឬទាញយកពួកវាពីប្រព័ន្ធផលិតកម្ម។
| វាយបញ្ចូល | តម្លៃ |
|---|---|
| ម៉ាស៊ីនដឹកជញ្ជូន | 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[.] (arm64), ldr[.] (macOS), win[.] (វីនដូ) — ចំនួនដុំនៅ 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 |
| ផ្លូវទម្លាក់ (យូនីក) | /var/tmp/.cache_<8-hex> |
| ផ្លូវទម្លាក់ (វីនដូ) | %TEMP%\dotnet_diag_<8-hex>.exe |
| ភាពស្ថិតស្ថេរ (វីនដូ) | %APPDATA%\Microsoft\Windows\Themes\SystemSoundsService.exeភារកិច្ច \Microsoft\Windows\Multimedia\SystemSoundsServiceតម្លៃគ្រាប់ចុចរត់ SOFTWARE\Microsoft\Windows\CurrentVersion\Run\SystemSoundsService |
| Mutex (វីនដូ) | 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 (លីនុច x64) | SHA-256 7e486657f30594afda379b97030252a09a19fe8055e25c9e371544f59bd8e9e3 |
| ដំណាក់កាលទី 2 (លីនុច arm64) | SHA-256 aafc37589c0d21fb729761a1579ca3b278b95bce152aacfa29243ffd27f5eeb7 |
| ដំណាក់កាលទី 2 (macOS) | SHA-256 c214746c74cae8ece8bdaf69aa05da4db6ce013f9e77452d1eed1a002fd9ba00 |
| ដំណាក់កាលទី 2 (វីនដូ) | SHA-256 d632c2c0c7801c3da57cf849fe4b4ca8351d9a7fe73c31050bf5dbcc96a16791 |
ឈ្មោះកញ្ចប់
ការសន្មត់ និងឥរិយាបថដែលសង្កេតឃើញ
មានគណនី npm ពីរពាក់ព័ន្ធ។ ឈ្មោះចំនួន ១៩ ដែលមិនទាន់បានបោះពុម្ពផ្សាយត្រូវបានបោះពុម្ពផ្សាយដោយគណនីមួយ។ a.poltoradnev-package-c ត្រូវបានចុះឈ្មោះឡើងវិញនៅថ្ងៃទី 2 ខែសីហា ក្រោមឈ្មោះគណនីផ្សេង និងដូមេនអ៊ីមែលផ្សេង។ កូដនេះគឺជាពូជដូចគ្នានៅក្នុងទាំងពីរ ហើយការចុះឈ្មោះលើកទីពីរមានម៉ាស៊ីនចែកចាយដូចគ្នា ដូមេនបម្រុង DNS ដូចគ្នា សំណង់ផ្លូវទម្លាក់ដូចគ្នា និងត្រាដំណើរការដូចគ្នា។
គូដែលបានបោះពុម្ពផ្សាយឡើងវិញក៏បង្ហាញពីរបៀបដែលវាត្រូវបានផ្គុំផងដែរ។ 0.0.2 និង 33.9.5 គឺដូចគ្នាបេះបិទទៅនឹងខ្សែអក្សរកំណែនៅក្នុង កញ្ចប់, និង index.js ។ បានដឹកជញ្ជូនជា 0.0.2 ប្រកាស កំណែថេរ = "៣៣.៩.៥"វត្ថុបុរាណទាំងពីរត្រូវបានកាត់ចេញពីដើមឈើប្រភពមួយ ហើយត្រូវបានដាក់លេខរៀងបន្ទាប់ពីនោះ។ មិនមាន 0.0.2 ប្រវត្តិនៃការអភិវឌ្ឍសម្រាប់ 0.0.2 ដោះលែងដើម្បីតំណាងឱ្យ។
លេខរៀងកំណែនៅទូទាំងសំណុំទាំងមូលធ្វើតាមតក្កវិជ្ជាដូចគ្នា។ ឈ្មោះកញ្ចប់នៅក្នុងយុទ្ធនាការនេះអានថាជារបស់របរដែលនឹងមាននៅក្នុងអង្គការមួយជាជាងនៅលើបញ្ជីឈ្មោះសាធារណៈ៖ សំណុំសមាសធាតុ UI ការកំណត់រចនាសម្ព័ន្ធ ESLint ឧបករណ៍សាកល្បង SLA កញ្ចប់ដែលដាក់ឈ្មោះតាមមនុស្សម្នាក់។ នៅពេលដែលការបង្កើតដោះស្រាយការពឹងផ្អែកតាមឈ្មោះ ហើយពិគ្រោះជាមួយបញ្ជីឈ្មោះសាធារណៈរួមជាមួយបញ្ជីឈ្មោះឯកជន លេខកំណែខ្ពស់ជាងគឺជាលេខដែលឈ្នះ។ ឈ្មោះដែលបង្កើតឡើងនៅ 0.0.1 នៅថ្ងៃច័ន្ទ និងដឹក 12.9.6 នៅថ្ងៃអង្គារ ត្រូវបានកំណត់សម្រាប់ការប្រៀបធៀបនោះ។
រលកបោះពុម្ពផ្សាយទាំងពីរក៏ខុសគ្នាដែរក្នុងវិធីដែលបង្ហាញពីការធ្វើឡើងវិញ។ កូដមុននេះបានដាក់ឈ្មោះឯកសារបន្ទុករបស់វាថាជាឯកសារបន្ទុក។ setup.js និងរាយបញ្ជីម៉ាស៊ីនចែកចាយចំនួនប្រាំ; ឯកសារបច្ចុប្បន្នត្រូវបានដាក់ឈ្មោះ _polyfill.js និងរាយបញ្ជីបី។ កំណែមុនបានលុបឯកសារដែលបានទម្លាក់ចោលប្រាំវិនាទីបន្ទាប់ពីការបើកដំណើរការ ដោយទុកឱ្យដំណើរការដំណើរការពី inode ដែលបានលុប។ កំណែបច្ចុប្បន្នមិនមានទេ។ ឯកសារដែលមិនបានយោង lib/telemetry.js នៅតែស្ថិតនៅក្នុងបាល់ tarball នៅទូទាំងទាំងពីរ នៅតែដឹកជញ្ជូន លែងមានខ្សែភ្ជាប់ទៀតហើយ។
ការសង្កេតមួយអំពីកុងតាក់សម្លាប់គឺមានតម្លៃក្នុងការបញ្ជាក់ជាមុនcisely ពីព្រោះវាកាត់ទល់នឹងការអានធម្មតា។ DISABLE_TELEMETRY, ការវិភាគ_ជ្រើសរើស_ចេញនិង កុំតាមដាន ត្រូវបានផ្តល់កិត្តិយស ហើយពួកគេត្រូវបានត្រួតពិនិត្យមុនពេលមានអ្វីផ្សេងទៀតកើតឡើង។ អ្នកស្រាវជ្រាវដែលបរិយាកាសវិភាគរបស់ពួកគេកំណត់ណាមួយក្នុងចំណោមពួកគេ សង្កេតឃើញកញ្ចប់មួយដែលមិនធ្វើអ្វីទាំងអស់។
ផលប៉ះពាល់ និងអ្វីដែលអ្នកការពារអាចធ្វើបាន
ផលវិបាកជាក់ស្តែងនៃគន្លឹះពេលវេលានាំចូលគឺតូចចង្អៀត ហើយមានតម្លៃក្នុងការបញ្ជាក់ដោយខ្លួនឯង។ npm ដំឡើង - មិនអើពើស្គ្រីប រារាំងស្គ្រីបវដ្តជីវិតពីការដំណើរការ ហើយវាជាដំបូន្មានដ៏ល្អ។ វាមិនមានឥទ្ធិពលនៅទីនេះទេ ពីព្រោះកូដនេះមិនប្រើស្គ្រីបវដ្តជីវិតទេ។ payload ដំណើរការនៅពេលដែលកូដកម្មវិធី ការដំណើរការសាកល្បង ឧបករណ៍ចងក្រង ឬ linter នាំចូលម៉ូឌុលជាមុនសិន។ នៅលើឧបករណ៍រត់ CI ដែលដំឡើង ហើយបន្ទាប់មកបង្កើតភ្លាមៗ ទាំងពីរមានចម្ងាយឆ្ងាយពីគ្នា។
ចំពោះការបរបាញ់ សញ្ញាប្រើប្រាស់បានយូរគឺជារចនាសម្ព័ន្ធជាជាងត្រង់។ ម៉ាស៊ីន ឈ្មោះឯកសារ និងផ្លូវទម្លាក់នឹងផ្លាស់ប្តូរ។ រូបរាងទាំងនេះពិបាកផ្លាស់ប្តូរណាស់៖
- ចំណុចចូលម៉ូឌុលដែលសេចក្តីថ្លែងការណ៍ចុងក្រោយរបស់វាជា សាកល្បង { ទាមទារ (“./x”); } ចាប់ (_) {} ជុំវិញឯកសារដែលមិនមែនជាផ្នែកមួយនៃ API ដែលបាននាំចេញ។ កញ្ចប់ដែលមាន polyfill ពិតប្រាកដនាំចូលវានៅផ្នែកខាងលើ ហើយប្រើប្រាស់លទ្ធផលរបស់វា។ ការលេបយករាល់កំហុសពីការនាំចូលនៅផ្នែកខាងក្រោមនៃឯកសារមិនមែនជាការដោះស្រាយកំហុសទេ។
- ខ្សែអក្សរម៉ាស៊ីនដែលផ្គុំឡើងដោយ .join(“”) ពីអារេនៃបំណែកមួយចំនួន។ កូដស្របច្បាប់គ្មានហេតុផលដើម្បីបំបែកឈ្មោះម៉ាស៊ីនឆ្លងកាត់ធាតុអារេទេ។
- កញ្ចប់មួយដែលការពឹងផ្អែកដែលបានប្រកាសរបស់វាទទេ ប៉ុន្តែឈានដល់ HTTPS, DNSនិង ដំណើរការកុមារ នៅពេលនាំចូល។ ការទាញយក បូករួមទាំងការប្រតិបត្តិនៅក្នុងកញ្ចប់ដែលផ្សព្វផ្សាយសមាសធាតុ UI គឺជាការរកឃើញទាំងមូល។
- លេខកំណែមិនស៊ីសង្វាក់គ្នានឹងអាយុរបស់កញ្ចប់។ ឈ្មោះមួយដែលបានចេញផ្សាយជាលើកដំបូងកាលពីប៉ុន្មានថ្ងៃមុននៅក្នុងកំណែសំខាន់ពីរខ្ទង់ ដោយគ្មានការចេញផ្សាយជាអន្តរការី កំពុងពិពណ៌នាអំពីអ្វីផ្សេងក្រៅពីការវិវត្តរបស់វា។
- សរសេរទៅកាន់ / var / tmp or % TEMP% អមដោយក chmod ដល់ 0755 និងពងកូនដែលផ្ដាច់ចេញ។ លំដាប់លំដោយនៃរឿងនេះគឺខ្លី មានសណ្តាប់ធ្នាប់ ហើយកម្រនឹងមានលក្ខណៈស្រាលជាមួយគ្នាណាស់។
នៅលើម៉ាស៊ីនមេ Windows មានការត្រួតពិនិត្យតម្លៃថោក និងទំនុកចិត្តខ្ពស់ពីរ។ វត្ថុបុរាណនៃការបន្តគឺជាខ្សែអក្សរថេរ ហើយគ្មានមួយណាជាកម្មសិទ្ធិរបស់ប្រព័ន្ធស្អាតនោះទេ៖ ភារកិច្ចដែលបានកំណត់ពេលនៅ \Microsoft\Windows\Multimedia\SystemSoundsServiceតម្លៃ Run-key ដែលមានឈ្មោះថា សេវាកម្មសំឡេងប្រព័ន្ធនិងឯកសារដែលអាចប្រតិបត្តិបាននៃឈ្មោះនោះនៅក្រោម %APPDATA%\Microsoft\Windows\ស្បែក\សេវាកម្មអូឌីយ៉ូ Windows ពិតប្រាកដមិនមាននៅក្នុងកន្លែងណាមួយទាំងនោះទេ។ ទីពីរ កម្មវិធីផ្ទុកទិន្នន័យប្រើ mutex តែមួយដែលបានកំណត់។ Global\{7A3B9E1F-C2D4-4F8A-B5E6-D7A1F0C3E2B9}វត្តមានរបស់វានៅលើម៉ាស៊ីនគឺជាសូចនាករមួយ ហើយដោយសារតែកម្មវិធីផ្ទុកទិន្នន័យចាត់ទុក mutex ដែលមានស្រាប់ថា "កំពុងដំណើរការរួចហើយ" ការបង្កើតវាជាមុនគឺជាការចាក់ថ្នាំបង្ការរយៈពេលខ្លីដែលអាចអនុវត្តបាន ខណៈពេលដែលការស្តារឡើងវិញត្រូវបានកំណត់ពេល។
ការរកឃើញនៅដំណាក់កាលទីបីគឺជាបញ្ហាដ៏លំបាកជាង ហើយវាមានតម្លៃក្នុងការបញ្ជាក់ឲ្យច្បាស់។ ដោយសារតែការវិភាគសាធារណៈ វាត្រូវបានឌិគ្រីប និងដាក់ក្នុងអង្គចងចាំជាជាងសរសេរទៅឌីស ដូច្នេះការស្កេនឯកសារ និងកោសល្យវិច្ច័យឌីសនឹងមិនឃើញវាទេ។ អ្វីដែលនៅតែអាចសង្កេតឃើញគឺស្នាមជើងរបស់ឧបករណ៍ផ្ទុកទិន្នន័យផ្ទាល់ — ធាតុរក្សាទិន្នន័យ mutex និងសំណើចេញទៅម៉ាស៊ីនចែកចាយ ឬដែន DNS-TXT។
សម្រាប់បរិស្ថានដែលដោះស្រាយភាពអាស្រ័យពីទាំងបញ្ជីឈ្មោះឯកជន និងសាធារណៈ ការកាត់បន្ថយមិនមានការផ្លាស់ប្តូរដោយអ្វីទាំងអស់នៅទីនេះទេ៖ កំណត់វិសាលភាពឈ្មោះផ្ទៃក្នុង ដូច្នេះឈ្មោះសាធារណៈមិនអាចបំពេញតម្រូវការរបស់ពួកគេបានទេ ហើយភ្ជាប់ដំណោះស្រាយទៅបញ្ជីឈ្មោះផ្ទៃក្នុងសម្រាប់វិសាលភាពទាំងនោះ។ ឥរិយាបថបំប៉ោងកំណែដែលបានពិពណ៌នាខាងលើដំណើរការតែកន្លែងដែលកំណែសាធារណៈខ្ពស់ជាងអាចឈ្នះឈ្មោះប៉ុណ្ណោះ។
ជាចុងក្រោយ ការមិនបោះពុម្ពផ្សាយនេះមានតម្លៃក្នុងការអានដោយប្រុងប្រយ័ត្នជាជាងការបញ្ចប់។ ឈ្មោះចំនួនដប់ប្រាំបួនបានចាកចេញពីបញ្ជីឈ្មោះក្នុងរយៈពេលម្ភៃប្រាំវិនាទី ហើយឈ្មោះមួយបានត្រឡប់មកវិញមួយថ្ងៃក្រោយមកក្រោមគណនីថ្មីមួយ ដោយហេដ្ឋារចនាសម្ព័ន្ធចែកចាយមិនត្រូវបានប៉ះពាល់ពេញមួយដំណើរការ។ ការដកកញ្ចប់ចេញមិនមែនជាការដកប្រតិបត្តិការចេញទេ។ ម៉ាស៊ីនបានបន្តបម្រើគ្រប់ដំណាក់កាលទាំងអស់ ខណៈពេលដែលរឿងនេះត្រូវបានសរសេរ។ ដើមឈើអាស្រ័យណាមួយដែលបានដោះស្រាយឈ្មោះមួយក្នុងចំណោមឈ្មោះទាំងនេះរវាងថ្ងៃទី 31 ខែកក្កដា និងថ្ងៃទី 1 ខែសីហា គួរតែត្រូវបានចាត់ទុកថាមានឱកាសអនុវត្តដំណាក់កាលទីមួយ មិនថាឈ្មោះនៅតែមានឬអត់នោះទេ។
ឯកសារយោង
- ការវិភាគពហុម៉ាស៊ីននៃឧបករណ៍ផ្ទុកវីនដូ — ប្រភពសម្រាប់ការបំណះ AMSI/ETW ការប្រតិបត្តិក្នុងអង្គចងចាំឆ្លុះបញ្ចាំង និងព័ត៌មានលម្អិត mutex ដែលបានសន្មតខាងលើ។
- ឯកសារស្គ្រីប npm — ព្រឹត្តិការណ៍វដ្តជីវិតដែលយុទ្ធនាការនេះមិនប្រើ។
- ឯកសារដំឡើង npm — គ្របដណ្ដប់ – មិនអើពើស្គ្រីប និងវិសាលភាពរបស់វា។




