டிஎல்; DR
2026 ஆம் ஆண்டு ஜூலை மாதத்தின் பிற்பகுதியிலும் ஆகஸ்ட் மாதத்தின் முற்பகுதியிலும் இரண்டு நாட்களில் வெளியிடப்பட்ட இருபது npm தொகுப்புகள், தங்களை உள்ளக UI கூறு நூலகங்களாகவும் பகிரப்பட்ட பின்தளப் பயன்பாடுகளாகவும் காட்டிக்கொள்கின்றன. அவற்றுள் எதுவும், அவை விளம்பரப்படுத்தும் செயல்பாட்டைச் செயல்படுத்துவதில்லை. ஒவ்வொன்றும் ஒரு ஸ்டப் கிளாஸ், அந்தத் தொகுப்பை உள்ளகமானது என்று விவரிக்கும் ஒரு README, மற்றும் ஒரு கோப்பையும் உடன் வழங்குகின்றன. _polyfill.js.
அந்தக் கோப்பு எங்கிருந்து அழைக்கப்படுகிறது என்பதுதான் சுவாரஸ்யமான பகுதி. இது ஒரு நிறுவல் இணைப்பு அல்ல — அந்த அறிக்கைகள் முன்நிறுவல், நிறுவல் அல்லது பின்நிறுவல் எதுவும் இல்லை என்று குறிப்பிடுகின்றன. மாறாக, கடைசி வரியில் index.js கூறுகிறது: try { require("./_polyfill"); } catch (_) {}பயன்பாட்டுக் குறியீடு தொகுப்பை முதல் முறை இறக்குமதி செய்யும் போது பேலோட் இயங்கும். இதனுடன் நிறுவுதல் --ignore-scripts, அந்த standard நிறுவும் நேரத்தில் விநியோகச் சங்கிலி பாதிப்பைக் குறைப்பதற்கான ஆலோசனை, அதை தடுக்காது.
என்ன _polyfill.js இது மூன்று கிளவுட்ஃப்ளேர் வொர்க்கர்ஸ் ஹோஸ்ட்களில் ஒன்றிலிருந்து ஒரு பிளாட்ஃபார்ம் சார்ந்த எக்ஸிக்யூட்டபிளைப் பெற்று, அதை ஒரு தற்காலிக டைரக்டரியில் தோராயமான பெயரில் எழுதி, அதை எக்ஸிக்யூட்டபிள் எனக் குறியிட்டு, பெற்றோர் செயல்முறையிலிருந்து பிரித்துத் தொடங்குகிறது. அந்த எக்ஸிக்யூட்டபிள் தானே ஒரு லோடர் ஆகும்: அது செயல்முறைப் பெயரின்படி எண்ட்பாயிண்ட்-பாதுகாப்புத் தயாரிப்புகளைப் பட்டியலிடுகிறது, தற்போதைய பயனர்பெயரை அறியப்பட்ட பகுப்பாய்வு-சூழல் கணக்குகளுடன் சரிபார்க்கிறது, நினைவகத்தில் AMSI மற்றும் ETW டெலிமெட்ரி இடைமுகங்களைப் புதுப்பிக்கிறது, ஒரு விண்டோஸ் ஆடியோ கூறின் பெயரில் நிலைத்தன்மையை நிறுவுகிறது, மேலும் பல மெகாபைட் அளவுள்ள மூன்றாவது பைனரியைப் பெறுகிறது. மூன்றாவது நிலை மறைகுறியாக்கம் செய்யப்பட்டு வருகிறது. வட்டில் எழுதப்படுவதற்குப் பதிலாக, நினைவகத்தில் மறைகுறியாக்கம் நீக்கப்பட்டுச் செயல்படுத்தப்பட்டது..
ஆகஸ்ட் 1 அன்று, கைமுறை ஆய்வில் அந்தத் தொகுப்புகள் தீங்கிழைப்பவை என உறுதிசெய்யப்பட்ட சுமார் நான்கு மணி நேரத்திற்குப் பிறகு, இருபது பெயர்களில் பத்தொன்பது பெயர்கள், அவற்றை வெளியிட்ட நிறுவனத்தாலேயே இருபத்தைந்து விநாடிகளுக்குள் npm-இலிருந்து அகற்றப்பட்டன. ஆகஸ்ட் 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 |
| தூண்டல் | தொகுதி இறக்குமதி (require), இது ஒரு npm லைஃப்சைக்கிள் ஸ்கிரிப்ட் அல்ல |
| நிலை 1 | _polyfill.js — மீட்டெடுப்பு மற்றும் ஏவுதல் |
| நிலை 2 | நிலையாக இணைக்கப்பட்ட லோடர், லினக்ஸில் UPX-பேக் செய்யப்பட்டது; எண்ட்பாயிண்ட்-பாதுகாப்பு கணக்கெடுப்பு, AMSI/ETW பேட்சிங், நிலைத்தன்மை |
| நிலை 3 | beacon_linux.bin / beacon_mac.bin / update_win.exe, 4–13 MB; மறைகுறியாக்கம் செய்யப்பட்டு வழங்கப்படும், நினைவகத்தில் செயல்படுத்தப்படும் |
| தளங்கள் | லினக்ஸ் x64 மற்றும் arm64, மேக்ஓஎஸ் யுனிவர்சல், விண்டோஸ் x64 |
| பப்ளிஷர்ஸ் | இரண்டு கணக்குகள், ஒரே குறியீட்டுத் தளம் |
| நிலைமை | 20 பெயர்களில் 19 வெளியிடப்படாதவை இயக்குநரால்; 1 மறுபதிப்பு செய்யப்பட்டு நேரலையில் உள்ளது; விநியோக உள்கட்டமைப்பு நேரலையில் உள்ளது. |
தாக்குதல் உடற்கூறியல்
நிலை 1 — தொகுப்பு
ஒவ்வொரு உறுப்பினரும் ஒரே மாதிரியான மூன்று கோப்பு வடிவத்தை அனுப்புகிறார்கள். index.js ஒரு வகுப்பை ஏற்றுமதி செய்கிறது அதில் உள்ளது() அது ஒரு பூலியனை அமைக்கிறது, ஒரு பதிப்பு(), மற்றும் ஒரு configure() அது ஒரு ஆப்ஷன்ஸ் ஆப்ஜெக்ட்டை ஒன்றிணைக்கிறது. வேறொன்றுமில்லை. README.md ஒரு நிறுவல் வரியை அளிக்கிறது, ஒரு தேவைப்படும் வரி, மற்றும் “உள் தொகுப்பு. வழிகாட்டுதல்களுக்கு CONTRIBUTING.md-ஐப் பார்க்கவும்” என்ற வாக்கியம் — CONTRIBUTING.md டார்பாலில் இல்லை.
_polyfill.js இது 5 KB-க்கும் சற்றுக் குறைவான அளவில் உள்ளது மற்றும் ஒரு சாதாரண உள்கட்டமைப்புக் குறியீடாகவே படிக்கப்படுகிறது. இது மூன்று சூழல் சோதனைகளுடன் திறக்கிறது:
if (process.env.DISABLE_TELEMETRY ||
process.env.ANALYTICS_OPT_OUT ||
process.env.DO_NOT_TRACK)
return;அந்த மாறிகள் வழக்கமான தனியுரிமைக் கட்டுப்பாடுகள் ஆகும். இங்கே அவை ஒரு பைனரி பதிவிறக்கம் செய்யப்பட்டு இயக்கப்படுகிறதா என்பதைக் கட்டுப்படுத்துகின்றன. ஒரு இயந்திரம் அதை அமைக்கிறது. கண்காணிக்க வேண்டாம் முற்றிலுமாக தவிர்க்கப்படுகிறது.
அடுத்து வருவது ஒருமுறை அச்சிட வேண்டிய முத்திரை: ஒரு கோப்பில் /tmp/.analytics_state, அல்லது பகுப்பாய்வு_நிலை கீழ் % TEMP% விண்டோஸில், அதன் மாற்றியமைக்கும் நேரம் 20,357 வினாடிகள் கொண்ட ஒரு கால இடைவெளியுடன் ஒப்பிடப்படுகிறது. அந்தக் கால இடைவெளிக்குள், மாட்யூல் உடனடியாகத் திரும்பிவிடுகிறது, எனவே ஒரு உருவாக்கத்தின் போது மீண்டும் மீண்டும் செய்யப்படும் இறக்குமதிகள், டஜன் கணக்கான முயற்சிகளுக்குப் பதிலாக ஒரே ஒரு மீட்டெடுப்பு முயற்சியையே உருவாக்குகின்றன.
இலக்கு ஹோஸ்ட்கள் நேரடி மதிப்புகளாக இருப்பதில்லை. அவை இயங்கும் நேரத்தில் துண்டுகளிலிருந்து உருவாக்கப்படுகின்றன:
["oob-worker.cf102-","baf.workers.d","ev"].join("")
மூன்று ஹோஸ்ட்கள் இந்த முறையில் கட்டமைக்கப்பட்டு, பயன்பாட்டிற்கு முன் வரிசை மாற்றப்படுகின்றன, எனவே ஒவ்வொரு முறை செயல்படுத்தும்போதும் வரிசை மாறுபடும். மீட்டெடுப்பானது, IPv4 உடன் இணைக்கப்பட்ட ஒரு HTTPS GET ஆகும். பயனர் முகவர் of நோட்-ஃபெட்ச்/2.6 — ஒரு நோட் செயல்முறை வெளியிடுவதற்கான ஏற்கத்தக்க மதிப்பு. 1,000 பைட்டுகளுக்கும் குறைவான பதில் நிராகரிக்கப்பட்டு, அடுத்த ஹோஸ்ட் முயற்சிக்கப்படும்.
மூன்றும் தோல்வியுற்றால், தொகுதி DNS-க்குத் திரும்புகிறது. அது இதற்காக ஒரு TXT வினவலை வெளியிடுகிறது. சி. துண்டுகளின் எண்ணிக்கையைப் பெற, பின்னர் கோரிக்கைகள் 0. மூலம் பெயர்ச்சொல். பத்து பத்து தொகுதிகளாக, பதில்களை ஒன்றிணைத்து, முடிவை பேஸ்64-டிகோட் செய்கிறது. இந்த வழி, அதே இயங்கு கோப்பை DNS TXT பதிவுகள் வழியாகக் கொண்டு செல்கிறது, இது வெளிச்செல்லும் HTTP வடிகட்டப்பட்டு, ஆனால் DNS தீர்வு வடிகட்டப்படாத சூழல்களிலும் தாக்குப்பிடிக்கிறது.
மீட்கப்பட்ட பைட்டுகள் எழுதப்படுகின்றன /var/tmp/.cache_<8-hex> யூனிக்ஸில், அல்லது %TEMP%\dotnet_diag_<8-hex>.exe விண்டோஸில் — இது ஒரு .NET கண்டறிதல் ஆவணமாகத் தோன்றும் கோப்புப் பெயர். யூனிக்ஸில் இந்தக் கோப்புக்கு 0755 என்ற பயன்முறை வழங்கப்படுகிறது. துவக்கம் என்பது ஸ்பான் உடன் பிரிக்கப்பட்டது: உண்மை, stdio: “புறக்கணி”, மற்றும் unRef()அதனால், அந்த குழந்தை செயல்முறை, அதைத் தொடங்கிய நோட் செயல்முறையை விட அதிக காலம் நீடிக்கிறது; விண்டோஸில் இந்த அழைப்பு சேர்க்கிறது சாளரங்களை மறை: உண்மை.
இரண்டு விவரங்கள் இந்தச் சித்திரத்தை முழுமையாக்குகின்றன. உதவியாளர் என வரையறுக்கப்படுபவர் const _l = (…a) => process.stderr.write(“”) மீட்டெடுப்பின் ஒவ்வொரு படியிலும் இது அழைக்கப்படுகிறது — இது ஒரு வெற்றுச் சரத்தை எழுதி, அதன் வாதங்களை நிராகரித்து, பதிவுசெய்தல் இருக்க வேண்டிய இடத்தை எடுத்துக்கொள்கிறது. மேலும் ஒவ்வொரு தொகுப்பும் 81 KB கோப்பை உடன் அனுப்புகிறது. lib/telemetry.js அதன் ஹெடர் கமெண்ட், “எண்ட்பாயிண்ட் ரொட்டேஷன் மற்றும் ரீட்ரையுடன் கூடிய HTTPS டிரான்ஸ்போர்ட்” மற்றும் “ஃபெயில்ஓவருக்கான DNS அடிப்படையிலான சேவை கண்டறிதல்” ஆகியவற்றுடன் கூடிய ஒரு “அனலிட்டிக்ஸ் SDK”-ஐ விவரிக்கிறது. தற்போதைய பில்டில் எதற்கும் அது தேவைப்படாது.
நிலை 2 — ஏற்றி
லினக்ஸ் x64 பைனரி என்பது UPX 3.96 கொண்டு சுருக்கப்பட்ட, நிலையாக இணைக்கப்பட்ட ஒரு ELF ஆகும். macOS உருவாக்கம் என்பது x86_64 மற்றும் arm64 ஆகியவற்றை உள்ளடக்கிய ஒரு பொதுவான பைனரி ஆகும்; விண்டோஸ் உருவாக்கம் என்பது கூறுகள் நீக்கப்பட்ட ஒரு PE32+ கன்சோல் இயங்கு கோப்பு ஆகும். இந்த நான்கும் பெறப்பட்டு, நிலையாக ஆய்வு செய்யப்பட்டன; எதுவும் இயக்கப்படவில்லை.
விண்டோஸ் கட்டமைப்பின் இறக்குமதிகளும் சர அட்டவணையும் அதன் செயல்பாட்டைத் தெளிவாக விவரிக்கின்றன. அது தீர்க்கிறது டெபகர் தற்போது உள்ளது, தொலைநிலை பிழைதிருத்தி உள்ளதா எனச் சரிபார்க்கவும், மற்றும் NtQuery தகவல் செயல்முறை, மற்றும் படிக்கிறது SYSTEM\CurrentControlSet\Services\Disk\Enum — மெய்நிகர் வட்டு கட்டுப்பாட்டாளர்களை அடையாளம் காட்டும் மதிப்புகளைக் கொண்ட ஒரு பதிவகப் பாதை. இது அழைக்கிறது GetDiskFreeSpaceExW மற்றும் உலகளாவிய நினைவக நிலை Exஹோஸ்டின் வளங்கள் ஒரு குறுகிய கால பகுப்பாய்வு நிகழ்வுடன் பொருந்துகின்றனவா என்பதைச் சரிபார்ப்பதற்கு இணங்க.
இது பயனர்பெயர்களின் பட்டியலைக் கொண்டுள்ளது: தற்போதைய பயனர், ஐடி நிர்வாகம், ஹாங் லீ, சோதனைப்பெட்டி, hapubws, மிலோஸ், டிம்மி, நிர்வாகம், தீம்பொருள், மாதிரி, வைரஸ், சூழல்இவற்றில் பல, பொதுவில் ஆவணப்படுத்தப்பட்ட பகுப்பாய்வுச் சூழல்களின் விளைவுகளாகும்.
மேலும் இது, இதன் மூலம் வரிசைப்படுத்தப்பட்ட எண்ட்பாயிண்ட்-பாதுகாப்பு தயாரிப்புகள் மற்றும் அவற்றின் செயல்முறைப் பெயர்களின் பட்டியலையும் கொண்டுள்ளது. CreateToolhelp32Snapshot மற்றும் செயல்முறை32முதல்W/செயல்முறை32அடுத்துW:
- CrowdStrike பால்கன் (
csfalconservice,CSFalconContainer) - கார்பன் பிளாக் (
cb.exe) - சைலன்ஸ் (
cylancesvc.exe) - Bitdefender (
bdagent.exe) - காஸ்பர்ஸ்கை (
avp.exe,kavfs.exe) - போக்கு நுண் மற்றும் ஆழமான பாதுகாப்பு (
coreServiceShell,ds_agent.exe) - ஃபயர்ஐ/ட்ரெல்லிக்ஸ் (
xagt.exe) - டானியம் (
taniumclient.exe) - HitmanPro (
hmpalert.exe) - மீள்தன்மை (
elastic-agent.exe,elastic-endpoint,filebeat.exe,winlogbeat.exe) - வஸூ மற்றும் OSSEC (
wazuh-agent.exe,ossec-agent.exe) - புள்ளி சரிபார்க்கவும்
- விண்டோஸ் டிஃபென்டர்
மேலும் இரண்டு குறியீடுகள் உள்ளன: ஆம்சிஸ்கேன்பஃபர்நினைவக உள்ளடக்கத்தை ஸ்கேன் செய்வதற்காக விண்டோஸ் வழங்கும் நுழைவுப் புள்ளி, மற்றும் EtwEventWriteவிண்டோஸிற்கான நிகழ்வு தடமறிதல் (Event Tracing for Windows) நிகழ்வுகளைப் பதிவுசெய்யும் செயல்பாடு இதுவாகும். இந்த இடைமுகங்கள் இயல்பாக உருவாக்கும் டெலிமெட்ரியை அடக்கும் செயல்முறைக்குள்ளான மாற்றத்திற்கான பொதுவான இலக்குகளாக இவை இரண்டும் உள்ளன.
விண்டோஸில் நிலைத்தன்மை இரண்டு முறை தோன்றுகிறது. பைனரி நகலெடுக்கப்படுகிறது. %APPDATA%\Microsoft\Windows\Themes\SystemSoundsService.exeமேலும், இரண்டு வழிமுறைகள் அதைக் குறிப்பிடுகின்றன: கீழ் உள்ள ஒரு மதிப்பு மென்பொருள்\மைக்ரோசாஃப்ட்\விண்டோஸ்\தற்போதைய பதிப்பு\இயக்குமற்றும், ஒரு திட்டமிடப்பட்ட பணியாகப் பதிவு செய்யப்பட்டுள்ளது.
schtasks /Create /F /SC ONLOGON
/TN "\Microsoft\Windows\Multimedia\SystemSoundsService"
/TR "\"%s\""
/RL HIGHESTபணிப் பாதை, பணிப் பெயர் மற்றும் இயக்கக்கூடிய கோப்பின் பெயர் ஆகிய அனைத்தும் ஒரு உண்மையான விண்டோஸ் ஆடியோ கூறினை ஒத்திருக்கின்றன. /ஆர்எல் மிக உயர்ந்தது கிடைக்கக்கூடிய மிக உயர்ந்த சிறப்புரிமை நிலையைக் கோருகிறது.
macOS உருவாக்கமும் இயங்குதளத்திற்கேற்ற பெயர்களுடன் அதே முறையைப் பின்பற்றுகிறது: அது ஒரு பண்புப் பட்டியலை எழுதுகிறது. ~/Library/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 உடன் டிஎன்எஸ் வினவல்_ஏ ஒரு இணைந்து சி.%எஸ்.%எஸ் வடிவமைப்புச் சரம் — முதல் கட்டம் பயன்படுத்தும் அதே துண்டு-எண்ணிக்கை வினவல் வடிவம்.
மேலே உள்ள விளக்கம், பைனரியின் இம்போர்ட்கள், ஸ்டிரிங்குகள் மற்றும் ரெஜிஸ்ட்ரி பாதைகள் ஆகியவற்றை ஆய்வு செய்யும்போது காட்டுவதாகும். அதே விண்டோஸ் மாதிரியின் பொதுவான பல-இயந்திரப் பகுப்பாய்வு, ஒரு இம்போர்ட் அட்டவணையின் நிலையான வாசிப்பால் தானாகவே நிறுவ முடியாத கூடுதல் விவரங்களைச் சேர்க்கிறது, மேலும் அது ஒரு நேரடி அவதானிப்பாக மீண்டும் கூறப்படாமல், இங்கு குறிப்பிடப்பட்டுள்ளது. அந்தப் பகுப்பாய்வு, AMSI மற்றும் ETW குறிப்புகள் வெறுமனே தீர்க்கப்படுவது மட்டுமல்லாமல், பேட்ச் செய்யப்பட்டுள்ளன என்றும் தெரிவிக்கிறது. ஆம்சிஸ்கேன்பஃபர் in amsi.dll மற்றும் EtwEventWrite in ntdll.dll — இது அந்தச் செயல்முறைக்கான நினைவக உள்ளடக்க ஸ்கேனிங் மற்றும் நிகழ்வுத் தடமறிதலை அடக்குகிறது. இது பகுப்பாய்வு எதிர்ப்புச் சோதனைகளை நேர அடிப்படையிலானவை எனக் கூடுதலாகத் தெரிவிக்கிறது. தொலைநிலை பிழைதிருத்தி உள்ளதா எனச் சரிபார்க்கவும்மற்றும், அடையாளம் காண்கிறது GetThreadContext இது பிழைத்திருத்தப் பதிவேடுகளைப் படித்து, வன்பொருள் முறிவுப் புள்ளி சரிபார்ப்பாக அழைக்கப்படுகிறது. மேலும், இது ஒரு ஒற்றை நிகழ்வு மியூடெக்ஸையும் அறிவிக்கிறது. Global\{7A3B9E1F-C2D4-4F8A-B5E6-D7A1F0C3E2B9}மற்றும் பெயர்கள் சிஸ்டம்சவுண்ட்ஸ்சர்வீஸ் ரன்-கீ மதிப்பாக. அந்த மியூடெக்ஸ் மதிப்பு இங்கே மீட்கப்பட்ட சரங்களில் இல்லை — பயன்படுத்தப்பட்ட பிரித்தெடுப்பு வடிகட்டி அடைப்புக்குறிக்குள் உள்ள பெரிய எழுத்து-ஹெக்ஸ் டோக்கன்களை விலக்கியது — மேலும் அது நேரடி அவதானிப்பின் அடிப்படையில் அல்லாமல், அந்தப் பொதுப் பகுப்பாய்வின் அடிப்படையில் குறிகாட்டி அட்டவணையில் பதிவு செய்யப்பட்டுள்ளது.
நிலை 3
லோடர் அதே ஹோஸ்ட்களில் உள்ள மேலும் சில பாதைகளைக் குறிப்பிடுகிறது. பகுப்பாய்வின் போது அவை அனைத்தும் அணுகக்கூடியதாக இருந்தன: beacon_linux.bin 5.3 MB அளவில், பீக்கான்_மேக்.பின் 13.3 MB அளவில், update_win.exe 10.3 MB அளவில், மற்றும் கை.பின் 4.3 MB அளவில் உள்ளன. இவை மீட்டெடுக்கப்படவில்லை, மேலும் இவற்றின் செயல்பாடு அறியப்படவில்லை.
விண்டோஸ் வழிமுறையைப் பொறுத்தவரை, லோடரின் பொதுவான பகுப்பாய்வானது அந்த மூன்றாவது நிலை எவ்வாறு கையாளப்படுகிறது என்பதை விவரிக்கிறது: அது 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 இவற்றைச் சாதாரண வெளியீட்டை நீக்கும் நிகழ்வுகளாகப் பதிவுசெய்கிறது; இது அந்தச் செயலைப் பதிவகத்திற்குப் பதிலாக வெளியிடும் கணக்கின் பொறுப்பில் வைக்கிறது.
சமரசத்தின் குறிகாட்டிகள்
ஹோஸ்ட்களும் பாதைகளும் செயலிழக்கச் செய்யப்பட்டுள்ளன. அவற்றை ஒரு உற்பத்தி அமைப்பிலிருந்து தீர்க்கவோ அல்லது மீட்டெடுக்கவோ வேண்டாம்.
| வகை | மதிப்பு |
|---|---|
| டெலிவரி ஹோஸ்ட் | 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[.] (விண்டோஸ்) — துண்டு எண்ணிக்கை 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 (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 (லினக்ஸ் x64) | எஸ்எச்எ 256 7e486657f30594afda379b97030252a09a19fe8055e25c9e371544f59bd8e9e3 |
| நிலை 2 (லினக்ஸ் arm64) | எஸ்எச்எ 256 aafc37589c0d21fb729761a1579ca3b278b95bce152aacfa29243ffd27f5eeb7 |
| நிலை 2 (macOS) | எஸ்எச்எ 256 c214746c74cae8ece8bdaf69aa05da4db6ce013f9e77452d1eed1a002fd9ba00 |
| நிலை 2 (விண்டோஸ்) | எஸ்எச்எ 256 d632c2c0c7801c3da57cf849fe4b4ca8351d9a7fe73c31050bf5dbcc96a16791 |
தொகுப்பு பெயர்கள்
காரணம் கற்பித்தல் மற்றும் கவனிக்கப்பட்ட நடத்தை
இரண்டு npm கணக்குகள் சம்பந்தப்பட்டுள்ளன. வெளியிடப்படாத பத்தொன்பது பெயர்கள் ஒரு கணக்கினால் வெளியிடப்பட்டன; a.poltoradnev-package-c ஆகஸ்ட் 2 அன்று, வேறு கணக்குப் பெயர் மற்றும் வேறு மின்னஞ்சல் டொமைனின் கீழ் மீண்டும் பதிவு செய்யப்பட்டது. இரண்டிலும் குறியீடு ஒரே வம்சாவளியைச் சேர்ந்தது, மேலும் இரண்டாவது பதிவில் அதே டெலிவரி ஹோஸ்ட்கள், அதே DNS ஃபால்பேக் டொமைன்கள், அதே டிராப்-பாத் கட்டமைப்பு மற்றும் அதே ரன்-ஒன்ஸ் ஸ்டாம்ப் ஆகியவை உள்ளன.
மறுபதிப்பு செய்யப்பட்ட அந்த ஜோடி, அது எவ்வாறு ஒன்றுசேர்க்கப்பட்டது என்பதையும் காட்டுகிறது. பதிப்புகள் 0.0.2 மற்றும் 33.9.5 பதிப்புச் சரத்தைத் தவிர, பைட் அளவில் ஒரே மாதிரியாக உள்ளன. தொகுப்பு.ஜேசன், மற்றும் index.js அனுப்பப்பட்டது 0.0.2 அறிவிக்கிறது const VERSION = “33.9.5”இரு கலைப்பொருட்களும் ஒரே மூல மரத்திலிருந்து வெட்டப்பட்டு, பின்னர் எண்ணிடப்பட்டன. இல்லை 0.0.2 வளர்ச்சி வரலாறு 0.0.2 பிரதிநிதித்துவப்படுத்த வெளியிடவும்.
முழுத் தொகுப்பிலும் பதிப்பு எண்கள் ஒரே தர்க்கத்தைப் பின்பற்றுகின்றன. இந்தத் திட்டத்தில் உள்ள தொகுப்புப் பெயர்கள், ஒரு பொதுப் பதிவேட்டில் இருப்பதை விட, ஒரு நிறுவனத்திற்குள் இருக்கும் விஷயங்களாகக் கருதப்படுகின்றன: ஒரு UI கூறுத் தொகுப்பு, ஒரு ESLint கட்டமைப்பு, ஒரு SLA ப்ரோபர், ஒரு நபரின் பெயரிடப்பட்ட தொகுப்பு போன்றவை. ஒரு உருவாக்கம், ஒரு சார்புநிலையை அதன் பெயரால் தீர்த்து, ஒரு தனிப்பட்ட பதிவேட்டுடன் ஒரு பொதுப் பதிவேட்டையும் கலந்தாலோசிக்கும்போது, அதிக பதிப்பு எண்ணைக் கொண்டதே வெற்றி பெறுகிறது. 0.0.1 திங்கட்கிழமை அன்று மற்றும் சுமந்து 12.9.6 செவ்வாய்க்கிழமை அந்த ஒப்பீட்டிற்காக நிலைநிறுத்தப்பட்டுள்ளது.
இந்த இரண்டு வெளியீட்டு அலைகளும், தொடர்செயல்முறையை உணர்த்தும் விதத்தில் வேறுபடுகின்றன. முந்தைய நிரல் அதன் பேலோட் கோப்பிற்குப் பெயரிட்டது. setup.js மேலும் ஐந்து டெலிவரி ஹோஸ்ட்கள் பட்டியலிடப்பட்டுள்ளன; தற்போதைய கோப்பின் பெயர் _polyfill.js மேலும் மூன்றைப் பட்டியலிடுகிறது. முந்தைய பதிப்பு, துவக்கப்பட்ட ஐந்து வினாடிகளுக்குப் பிறகு கைவிடப்பட்ட கோப்பை அகற்றி, நீக்கப்பட்ட ஐனோடிலிருந்து செயல்முறையை இயங்க வைத்தது; தற்போதைய பதிப்பு அவ்வாறு செய்வதில்லை. குறிப்பிடப்படாத lib/telemetry.js இரண்டிலும் தார்பாலிலேயே உள்ளது, இன்னும் அனுப்பப்படுகிறது, இனி மின்னிணைப்பு செய்யப்படவில்லை.
கில் சுவிட்சுகள் பற்றிய ஒரு விஷயத்தை முன்கூட்டியே குறிப்பிடுவது அவசியம்.cisஏனெனில் அது ஒரு பொதுவான புரிதலுக்கு முரணாக உள்ளது. டெலிமெட்ரியை முடக்கு, பகுப்பாய்வு விலகல், மற்றும் கண்காணிக்க வேண்டாம் அவை மதிக்கப்படுகின்றன, மேலும் வேறு எதுவும் நடப்பதற்கு முன்பு அவை சரிபார்க்கப்படுகின்றன. அவற்றுள் ஏதேனும் ஒன்றை அமைக்கும் பகுப்பாய்வுச் சூழலைக் கொண்ட ஒரு ஆராய்ச்சியாளர், எதுவுமே செய்யாத ஒரு தொகுப்பைக் கவனிக்கிறார்.
தாக்கம் மற்றும் தடுப்பாட்டக்காரர்கள் என்ன செய்ய முடியும்
இறக்குமதி நேரத் தூண்டுதலின் நடைமுறை விளைவு குறுகியது மற்றும் அதைத் தனியாகக் குறிப்பிடுவது பொருத்தமானது. npm install –ignore-scripts இது லைஃப்சைக்கிள் ஸ்கிரிப்டுகள் இயங்குவதைத் தடுக்கிறது, மேலும் இது ஒரு நல்ல ஆலோசனையாகும். இந்தக் குறியீடு ஒரு லைஃப்சைக்கிள் ஸ்கிரிப்டைப் பயன்படுத்தாததால், இங்கு அதனால் எந்தப் பயனும் இல்லை. பயன்பாட்டுக் குறியீடு, ஒரு சோதனை ஓட்டம், ஒரு பண்ட்லர் அல்லது ஒரு லிண்டர் முதன்முதலில் மாட்யூலை இறக்குமதி செய்யும்போது பேலோட் இயங்குகிறது. நிறுவி உடனடியாக உருவாக்கும் ஒரு CI ரன்னரில், இவ்விரண்டுக்கும் இடையே சில வினாடிகள் மட்டுமே இடைவெளி இருக்கும்.
வேட்டையாடுதலைப் பொறுத்தவரை, நீடித்த சமிக்ஞைகள் நேரடியானவை அல்ல, மாறாக கட்டமைப்பு சார்ந்தவை. ஹோஸ்ட்கள், கோப்புப் பெயர் மற்றும் டிராப் பாத் ஆகியவை மாறும்; இந்த வடிவங்களை மாற்றுவது கடினம்:
- இறுதிக் கூற்றைக் கொண்ட ஒரு தொகுதி நுழைவுப் புள்ளி முயற்சி செய் { தேவைப்படு(“./x”); } பிழை ஏற்பட்டால் (_) {} ஏற்றுமதி செய்யப்பட்ட API-யின் பகுதியாக இல்லாத ஒரு கோப்பைச் சுற்றி. உண்மையான பாலிஃபில் கொண்ட ஒரு தொகுப்பு, அதை கோப்பின் தொடக்கத்தில் இறக்குமதி செய்து அதன் முடிவைப் பயன்படுத்துகிறது. கோப்பின் இறுதியில் செய்யப்படும் இறக்குமதியிலிருந்து வரும் ஒவ்வொரு பிழையையும் அப்படியே ஏற்றுக்கொள்வது பிழை கையாளுதல் ஆகாது.
- ஹோஸ்ட் சரங்கள் தொகுக்கப்பட்டன .join(“”) துண்டுகளின் அணிவரிசையிலிருந்து. முறையான நிரலில், ஒரு ஹோஸ்ட் பெயரை அணி உறுப்புகளுக்கு இடையில் பிரிப்பதற்கு எந்தக் காரணமும் இல்லை.
- அறிவிக்கப்பட்ட சார்புகள் காலியாக உள்ள ஆனால் எதையேனும் அணுகும் ஒரு தொகுப்பு : https, DNS, மற்றும் குழந்தை_செயல்முறை இறக்குமதி நேரத்தில். ஒரு UI கூறினை விளம்பரப்படுத்தும் தொகுப்பில், தரவை மீட்டெடுத்துச் செயல்படுத்துவதே முழுமையான கண்டறிதலாகும்.
- ஒரு தொகுப்பின் வயதிற்குப் பொருந்தாத பதிப்பு எண்கள். சில நாட்களுக்கு முன்பு, இடையில் எந்த வெளியீடுகளும் இல்லாமல், இரட்டை இலக்க முக்கியப் பதிப்பில் முதன்முதலில் வெளியிடப்பட்ட ஒரு பெயர், அதன் வளர்ச்சியைத் தவிர வேறு எதையோ விவரிக்கிறது.
- எழுதுகிறார் / var / tmp or % TEMP% அதைத் தொடர்ந்து ஒரு chmod- ம் 0755 வரை மற்றும் ஒரு தனித்த ஸ்பான். இந்தத் தொடர்வரிசை குறுகியதாகவும், ஒழுங்கானதாகவும் உள்ளது, மேலும் இவை ஒன்றாக இணையும்போது அரிதாகவே தீங்கற்றவையாக இருக்கின்றன.
விண்டோஸ் ஹோஸ்ட்களில் இரண்டு மலிவான, அதிக நம்பகத்தன்மை கொண்ட சோதனைகள் உள்ளன. நிலைத்தன்மைக்கான தடயங்கள் நிலையான சரங்கள் ஆகும், மேலும் அவற்றுள் எதுவும் ஒரு தூய்மையான அமைப்பில் இருக்கக் கூடாது: ஒரு திட்டமிடப்பட்ட பணி மைக்ரோசாப்ட்\விண்டோஸ்\மல்டிமீடியா\சிஸ்டம்சவுண்ட்ஸ்சர்வீஸ்பெயரிடப்பட்ட ஒரு ரன்-கீ மதிப்பு சிஸ்டம்சவுண்ட்ஸ்சர்வீஸ்மற்றும், அதன் கீழ் அந்தப் பெயரில் செயல்படுத்தக்கூடிய ஒன்று %APPDATA%\Microsoft\Windows\Themes\உண்மையான விண்டோஸ் ஆடியோ சேவை அந்த இடங்களில் எதிலும் இருப்பதில்லை. இரண்டாவதாக, லோடர் ஒரு நிலையான ஒற்றை-நிகழ்வு மியூடெக்ஸைப் பயன்படுத்துகிறது. Global\{7A3B9E1F-C2D4-4F8A-B5E6-D7A1F0C3E2B9}ஒரு ஹோஸ்டில் அதன் இருப்பு ஒரு குறிகாட்டியாகும், மேலும் லோடர் ஏற்கனவே உள்ள ஒரு மியூடெக்ஸை "ஏற்கனவே இயங்கிக் கொண்டிருப்பதாக"க் கருதுவதால், சரிசெய்தல் திட்டமிடப்படும் வரை அதை முன்கூட்டியே உருவாக்குவது ஒரு சாத்தியமான குறுகிய காலத் தடுப்பாக அமைகிறது.
மூன்றாவது கட்டத்தில் கண்டறிவது ஒரு கடினமான சிக்கலாகும், மேலும் இது குறித்துத் தெளிவாக இருப்பது அவசியம். பொதுப் பகுப்பாய்வின்படி, அது வட்டில் எழுதப்படுவதற்குப் பதிலாக நினைவகத்தில் மறைகுறியாக்கம் செய்யப்பட்டுப் பொருத்தப்படுகிறது. எனவே, கோப்பு-ஆய்வு மற்றும் வட்டு தடயவியல் ஆகியவற்றால் அதைக் காண முடியாது. கவனிக்கக்கூடியதாக இருப்பது லோடரின் சொந்தத் தடயங்கள் மட்டுமே — அதாவது, நிலைத்தன்மைப் பதிவுகள், மியூடெக்ஸ், மற்றும் விநியோக ஹோஸ்ட்கள் அல்லது DNS-TXT டொமைன்களுக்கான வெளிச்செல்லும் கோரிக்கைகள்.
ஒரு தனியார் பதிவகம் மற்றும் ஒரு பொதுப் பதிவகம் ஆகிய இரண்டிலிருந்தும் சார்புகளைத் தீர்க்கும் சூழல்களுக்கு, இங்குள்ள எதனாலும் தணிப்பு நடவடிக்கை மாற்றமடைவதில்லை: ஒரு பொதுப் பெயர் உள் பெயர்களை நிறைவு செய்ய முடியாதபடி அவற்றின் வரம்புகளை வரையறுத்து, அந்த வரம்புகளுக்கான தீர்வை உள் பதிவகத்திற்கே நிலைநிறுத்த வேண்டும். மேலே விவரிக்கப்பட்ட பதிப்பு-உயர்த்தல் நடத்தை, ஒரு உயர் பொதுப் பதிப்பு ஒரு பெயரை வெல்லக்கூடிய இடங்களில் மட்டுமே செயல்படும்.
இறுதியாக, இந்த வெளியீட்டு நீக்கத்தை ஒரு முடிவாகக் கருதுவதை விட, கவனமாகப் படிப்பது பயனுள்ளது. இருபத்தைந்து வினாடிகளில் பத்தொன்பது பெயர்கள் பதிவகத்திலிருந்து வெளியேறின, மேலும் ஒரு நாள் கழித்து ஒரு புதிய கணக்கின் கீழ் ஒன்று திரும்பியது; இந்தச் செயல்முறை முழுவதும் விநியோக உள்கட்டமைப்பு பாதிக்கப்படவில்லை. தொகுப்புகளை அகற்றுவது என்பது செயல்பாட்டை அகற்றுவதல்ல; இது எழுதப்பட்டுக் கொண்டிருந்தபோது ஹோஸ்ட்கள் ஒவ்வொரு கட்டத்திற்கும் தொடர்ந்து சேவையாற்றின. ஜூலை 31 மற்றும் ஆகஸ்ட் 1-க்கு இடையில் இந்தப் பெயர்களில் ஒன்றைத் தீர்த்த எந்தவொரு சார்பு மரமும், அந்தப் பெயர் இன்னும் இருக்கிறதா இல்லையா என்பதைப் பொருட்படுத்தாமல், முதல் கட்டத்தைச் செயல்படுத்தும் வாய்ப்பைப் பெற்றதாகக் கருதப்பட வேண்டும்.
குறிப்புகள்
- விண்டோஸ் லோடரின் பல-இயந்திர பகுப்பாய்வு — மேலே குறிப்பிடப்பட்டுள்ள AMSI/ETW இணைப்பு, பிரதிபலிப்பு உள்ளக நினைவகச் செயலாக்கம் மற்றும் மியூடெக்ஸ் விவரம் ஆகியவற்றிற்கான மூலம்.
- npm ஸ்கிரிப்டுகள் ஆவணங்கள் — இந்த பிரச்சாரம் பயன்படுத்தாத வாழ்க்கைச் சுழற்சி நிகழ்வுகள்.
- npm நிறுவல் ஆவணங்கள் — அட்டைகள் ஸ்கிரிப்ட்களை புறக்கணிக்கவும் மற்றும் அதன் வரம்பு.







