Shai hulud - កញ្ចប់ npm - ការវាយប្រហារខ្សែសង្វាក់ផ្គត់ផ្គង់

Shai-Hulud៖ ការពន្យល់អំពីមេរោគ Worm នៃកញ្ចប់ npm

​មាតិកា

ប្រកាសដែលត្រូវតែអាន

ប្រកាសថ្មីៗបំផុតដែលគួរឱ្យចាប់អារម្មណ៍

TL; កុង

នៅថ្ងៃទី១៤ ខែកញ្ញា ឆ្នាំ២០២៥ អ្នកស្រាវជ្រាវបានកំណត់អត្តសញ្ញាណ សាយ ហ៊ុលុដដង្កូវ​ដែល​ចម្លង​ដោយ​ខ្លួនឯង​ដែល​លាក់​នៅ​ខាងក្នុង កញ្ចប់ npmប្រែក្លាយការអាប់ដេតការពឹងផ្អែកជាប្រចាំទៅជាទ្រង់ទ្រាយពេញលេញ ការវាយប្រហារខ្សែសង្វាក់ផ្គត់ផ្គង់. ប្រទះឃើញជាលើកដំបូងនៅក្នុង @ctrl/tinycolor កញ្ចប់​ដោយ Daniel dos Santos Pereira, Shai-Hulud ប្រមូល​យក​អាថ៌កំបាំង លួច​យក​វា​តាមរយៈ​ឃ្លាំង​ទិន្នន័យ និង​លំហូរ​ការងារ GitHub ហើយ​បោះពុម្ព​ផ្សាយ​ខ្លួន​ឯង​ឡើង​វិញ​នៅ​ទូទាំង​បញ្ជី​ឈ្មោះ​ដោយ​ប្រើ​ព័ត៌មាន​សម្ងាត់​ដែល​ត្រូវ​បាន​លួច។ ក្នុង​រយៈពេល​ប៉ុន្មាន​ថ្ងៃ ចំនួន​កញ្ចប់​ដែល​ឆ្លង​មេរោគ​បាន​កើនឡើង​ពី​រាប់សិប​ទៅ​រាប់រយ ដែល​បញ្ជាក់​ថា... សៃហ៊ូលុដ មិនមែនគ្រាន់តែជាមេរោគ Trojan មួយផ្សេងទៀតទេ ប៉ុន្តែវាជាមេរោគ Worm ដែលត្រូវបានរចនាឡើងដើម្បីរីករាលដាលដោយស្វ័យប្រវត្តិនៅទូទាំងប្រព័ន្ធអេកូឡូស៊ី npm។

ផលប៉ះពាល់: អ្នកអភិវឌ្ឍន៍ ឬអ្នករត់ CI ណាមួយដែលកំពុងដំឡើងកញ្ចប់ npm សាធារណៈគឺប្រឈមនឹងហានិភ័យ។

សកម្មភាពបន្ទាន់៖ រារាំងកំណែដែលគេស្គាល់ ប្តូរទៅការដំឡើង lockfile-only បង្វិល npm និងថូខឹន GitHub ត្រួតពិនិត្យលំហូរការងារ និងតាមដានសូចនាករនៃការសម្របសម្រួល (IoCs)។

តើមានអ្វីកើតឡើង?

ចំពោះ ការវាយប្រហារខ្សែសង្វាក់ផ្គត់ផ្គង់ Shai-Hulud នៅក្នុងកញ្ចប់ npm គឺជាឧប្បត្តិហេតុមួយក្នុងចំណោមឧប្បត្តិហេតុដែលបង្កការរំខានបំផុតនៅក្នុងការចងចាំថ្មីៗនេះ។ មិនដូចមេរោគ Trojan ដែលដាច់ដោយឡែកនោះទេ មេរោគ Worm នេះលាយឡំគ្នា ការលួចយកព័ត៌មានបញ្ជាក់អត្តសញ្ញាណ ការលួចយកទិន្នន័យដោយស្វ័យប្រវត្តិ និងការចម្លងដោយខ្លួនឯងជាលទ្ធផល រយៈពេលនៃការឆ្លងបានថយចុះពីច្រើនសប្តាហ៍មកត្រឹមត្រឹមតែប៉ុន្មានម៉ោងប៉ុណ្ណោះ។

សម្រាប់ក្រុម DevOps មេរៀនគឺច្បាស់ណាស់៖ ប្រសិនបើការដំឡើងនីមួយៗអាចប្រតិបត្តិកូដបាន នោះការអាប់ដេតភាពអាស្រ័យនីមួយៗគឺជាចំណុចរំលោភបំពានដែលអាចកើតមាន។

វ៉ិចទ័រដំបូងដែលអាចធ្វើទៅបាន និងលិខិតសម្គាល់គោលដៅ

ការវិភាគដំបូង បង្ហាញថាការវាយប្រហារទំនងជាបានចាប់ផ្តើមជាមួយ អត្តសញ្ញាណលួចឧទាហរណ៍ យុទ្ធនាការបន្លំបន្លំ npm login ឬ​ការ​ជំរុញ​ឲ្យ​ចូល​ប្រព័ន្ធ (MFA prompts) អាច​បាន​ចាប់យក​ថូខឹន​អ្នក​អភិវឌ្ឍន៍។ នៅ​ពេល​ដែល​អ្នក​វាយប្រហារ​ទទួល​បាន​ទីតាំង​ដំបូង​នោះ ដង្កូវ​នោះ​បាន​រីក​រាលដាល​ដោយ​បង្កប់​ខ្លួន​វា​ទៅ​ក្នុង​កញ្ចប់ npm ហើយ​លួច​យក​អាថ៌កំបាំង​បន្ថែម​ទៀត​ពី៖

  • ឯកសារកំណត់រចនាសម្ព័ន្ធ npm ដូច .npmrcជារឿយៗមានថូខឹនបោះពុម្ពផ្សាយ។
  • អថេរ​បរិស្ថាន និងការកំណត់រចនាសម្ព័ន្ធជាមួយ GitHub PAT និង CI/CD អាថ៌កំបាំង។
  • ចំណុចបញ្ចប់ទិន្នន័យមេតាលើពពក (AWS, GCP, Azure) ដែលផ្តល់សិទ្ធិសម្គាល់រយៈពេលខ្លីសម្រាប់ចលនាចំហៀង។

ដូច្នេះ ការលួចព័ត៌មានសម្ងាត់បានក្លាយជាចំណុចចាប់ផ្តើម។ ជាមួយនឹងថូខឹន npm ដែលមានសុពលភាព និងអាថ៌កំបាំង GitHub Shai-Hulud អាចចម្លងដោយខ្លួនឯងនៅទូទាំងកញ្ចប់ និងឃ្លាំងទិន្នន័យច្រើនដោយមិនចាំបាច់ប្រឹងប្រែងបន្ថែមពីមនុស្ស។

ផលប៉ះពាល់ប្រតិបត្តិនៃការវាយប្រហារខ្សែសង្វាក់ផ្គត់ផ្គង់ Shai-Hulud

Shai-Hulud នៅតែសកម្មរហូតមកដល់សព្វថ្ងៃនេះ។ ដង្កូវនេះបង្កើនល្បឿននៃផលប៉ះពាល់។ អ្វីដែលធ្លាប់ចំណាយពេលច្រើនសប្តាហ៍ជាមួយមេរោគ Trojan ឥឡូវនេះលាតត្រដាងក្នុងរយៈពេលប៉ុន្មានម៉ោង។ ជាលទ្ធផល ការរីករាលដាលកាន់តែលឿន និងពិបាកទប់ស្កាត់។ វារីកចម្រើនដោយ៖

  • ការលួចថូខឹនបោះពុម្ពផ្សាយ npm និងអាថ៌កំបាំង GitHub ។
  • បោះពុម្ពផ្សាយខ្លួនវាឡើងវិញទៅក្នុងកញ្ចប់ npm ផ្សេងទៀត។
  • ការបន្ថែមលំហូរការងារ GitHub Actions ដែលមានគំនិតអាក្រក់សម្រាប់ការតស៊ូ។

អ្នកណាដែលរងផលប៉ះពាល់៖

ក្រុមណាមួយដែលដំឡើងកញ្ចប់ npm សាធារណៈត្រូវបានលាតត្រដាង។ លើសពីនេះ អ្នកអភិវឌ្ឍន៍ដែលមាន npm ឬ GitHub tokens ដែលរក្សាទុកក្នុងឃ្លាំងសម្ងាត់ប្រឈមនឹងហានិភ័យខ្ពស់។ អ្នករត់ CI ដែលប្រើអាថ៌កំបាំងដែលមានវិសាលភាពទូលំទូលាយក៏ងាយរងគ្រោះផងដែរ។

ហានិភ័យអាជីវកម្ម

ផលប៉ះពាល់អាជីវកម្មកើនឡើងយ៉ាងឆាប់រហ័ស។ ថូខឹនដែលត្រូវបានលួចអាចនាំឱ្យមានការកាន់កាប់គណនី ការលួចកញ្ចប់ និងសូម្បីតែការប្រើប្រាស់ខុសលើពពក។ លើសពីនេះ ការជាប់គាំងនៅក្នុងលំហូរការងារ GitHub ធ្វើឱ្យវាកាន់តែពិបាកក្នុងការសម្អាត។ ដូច្នេះក្រុមនានាត្រូវតែចាត់ទុក Shai-Hulud ជាឧប្បត្តិហេតុដែលកំពុងបន្ត មិនមែនជាឧប្បត្តិហេតុបិទទ្វារនោះទេ។

របៀបដែលការវាយប្រហារខ្សែសង្វាក់ផ្គត់ផ្គង់ Shai-Hulud ដំណើរការនៅក្នុងកញ្ចប់ npm

គោលបំណង និងហេតុផលរបស់អ្នកវាយប្រហារ

យុទ្ធនាការនេះធ្វើឱ្យប្រសើរឡើងសម្រាប់រឿងបីយ៉ាង៖

  • គោលបំណងដំបូងគឺ លួចយកព័ត៌មានសម្ងាត់ក្នុងទ្រង់ទ្រាយធំ ពីកុំព្យូទ័រយួរដៃអ្នកអភិវឌ្ឍន៍ និងអ្នកដំណើរការ CI។ នេះរួមបញ្ចូលទាំង npm publish tokens, GitHub tokens និង cloud credentials។ តាមពិតទៅ ការវិភាគច្រើនបញ្ជាក់ពីការប្រមូលផលសម្ងាត់ជាប្រព័ន្ធ ដូចជាការដំណើរការ TruffleHog និងការសាកសួរចំណុចបញ្ចប់ metadata cloud។
  • គោលបំណងទីពីរគឺដើម្បី រីករាលដាលដោយស្វ័យប្រវត្តិ ដោយរំលោភលើសិទ្ធិបោះពុម្ពផ្សាយរបស់អ្នកថែទាំដែលរងការសម្របសម្រួល។ ជាលទ្ធផល ជើងទម្រមួយពង្រីកយ៉ាងឆាប់រហ័សទៅជាជើងទម្រជាច្រើន ដោយសារកំណែឆ្លងមេរោគថ្មីនៃកញ្ចប់ផ្សេងទៀតលេចឡើងដោយមិនចាំបាច់ប្រឹងប្រែងបន្ថែមពីមនុស្ស។
  • គោលបំណងទីបីគឺដើម្បី បន្ត និងច្រោះចេញដោយភាពជឿជាក់ តាមរយៈហេដ្ឋារចនាសម្ព័ន្ធ GitHub។ អ្នកវាយប្រហារបង្កើត repo សាធារណៈមួយដែលមានឈ្មោះថា "Shai-Hulud" ជាមួយនឹងមូលដ្ឋានពីរ data.jsonហើយលើសពីនេះទៀត ពួកគេបង្កើតលំហូរការងារដែលធ្វើស៊េរី ${{ toJSON(secrets) }} ហើយបង្ហោះវាទៅ static webhook។

ផលចំណេញដែលទំនងជារួមមានការចូលប្រើបញ្ជីឈ្មោះ និងកូដប្រភពរយៈពេលយូរ ការផ្លាស់ប្តូររហ័សទៅក្នុងគណនី cloud និងជម្រើសក្នុងការធ្វើឱ្យខ្សែសង្វាក់ផ្គត់ផ្គង់កាន់តែរឹងមាំ។ របាយការណ៍សាធារណៈបង្ហាញថា repos ឯកជនត្រូវបានប្តូរទៅជាសាធារណៈជាមួយ «-ការធ្វើចំណាកស្រុក» បច្ច័យ ដែលបង្កើនការប៉ះពាល់ទិន្នន័យ និងសន្ទុះ

នៅខាងក្នុងបន្ទុក Shai-Hulud៖ bundle.js នៅក្នុងកញ្ចប់ npm

នាវា Shai-Hulud ក្នុងនាមជា ធំ ភ្ជាប់ជាមួយ Webpack និងបង្រួមអប្បបរមា ឯកសារ JavaScript (bundle.js, ប្រហែល 3–3.7 មេកាបៃ) ដែលប្រតិបត្តិពី ក្រោយការដំឡើង ភ្ជាប់​ចូល កញ្ចប់ជាលទ្ធផល, រាល់ការដំឡើងនឹងបង្កឱ្យ payload សកម្មដោយស្វ័យប្រវត្តិ។ ការរចនានេះលាក់ឧបករណ៍កំណត់អត្តសញ្ញាណ បង្រួមលំហូរត្រួតពិនិត្យ និងរុញតក្កវិជ្ជាទាំងអស់ទៅជា artifact តែមួយដែលប្រតិបត្តិកំឡុងពេលដំឡើង។ អ្នកវិភាគតែងតែបញ្ជាក់អំពីការចង Webpack ទំហំឯកសារមិនធម្មតា និងការប្រតិបត្តិពេលវេលាដំឡើង។

លក្ខណៈ​នៃ​ការ​បិទបាំង និង​ប្រឆាំង​ការ​វិភាគ ដែល​អ្នក​នឹង​ឃើញ​នៅ​ក្នុង​គំរូ៖

  • ក្រាហ្វម៉ូឌុលដែលបានបង្រួមអប្បបរមា ជាមួយនឹងលេខសម្គាល់ម៉ូឌុលជាលេខ មតិយោបល់មិនច្បាស់លាស់ និងលំហូរត្រួតពិនិត្យរាបស្មើ។ លើសពីនេះ, រចនាសម្ព័ន្ធនេះធ្វើឱ្យការពិនិត្យឡើងវិញដោយដៃពិបាកខ្លាំងណាស់។
  • ការលាក់ខ្សែអក្សរ តាមរយៈស្រទាប់ base64 និងជំនួយសំណង់។ ឧទាហរណ៍, ការអ៊ិនកូដ និងឌិកូដ base64 ម្តងហើយម្តងទៀតជាធម្មតាលេចឡើងនៅជុំវិញនីតិវិធីនៃការច្រោះចេញ។
  • ការបញ្ជូនថាមវន្ត តាមរយៈការ ការគេចចេញ-លំនាំរចនាប័ទ្ម និង​បង្កើត​តួ​មុខងារ ដូច្នេះ​អាច​ឱ្យ​កូដ​ផ្លាស់ប្ដូរ​ឥរិយាបថ​នៅពេល​ដំណើរការ។
  • ការត្រងប្រព័ន្ធប្រតិបត្តិការ ដើម្បីពេញចិត្តនឹងការប្រតិបត្តិ Linux និង macOS ជាពិសេសលើអ្នករត់ CI និងកុំព្យូទ័រយួរដៃអ្នកអភិវឌ្ឍន៍។

ពីមុំមុខងារ បាច់នេះគឺជាម៉ូឌុល។ ការសរសេរពិពណ៌នាអំពីម៉ូឌុលសម្រាប់ការរកឃើញប្រព័ន្ធប្រតិបត្តិការ ប្រព័ន្ធឯកសារ និងការស្កេនសម្ងាត់ git ការចូលប្រើ cloud SDK ប្រតិបត្តិការ GitHub API និងម៉ាស៊ីនផ្សព្វផ្សាយដែលកែសម្រួលកញ្ចប់ផ្សេងទៀតដែលអ្នកថែទាំជាម្ចាស់។ តាមពិតទៅ StepSecurity និង ReversingLabs ទាំងពីរបង្ហាញពីមុខងារមួយដែលធ្វើបច្ចុប្បន្នភាពកញ្ចប់ដោយស្វ័យប្រវត្តិជាមួយនឹងទំពក់ព្យាបាទ។

ការប្រតិបត្តិពេលវេលាដំឡើងនៅក្នុង Shai-Hulud៖ របៀបដែលកញ្ចប់ npm បង្កមេរោគ Worm

ការវាយប្រហារចាប់ផ្តើមនៅពេល ក្រោយការដំឡើងដំណើរការ node bundle.js. នៅចំណុចនេះ ស្គ្រីបនឹងចាប់ផ្តើម និងស្រាយចេញនូវស្ថានភាពការងារនៅក្នុងអង្គចងចាំ ដោយកំណត់ដំណាក់កាលសម្រាប់ប្រតិបត្តិការពេញលេញរបស់ដង្កូវ។

ការរកឃើញ និងការប្រមូលផល

  • payload បោះចោល process.env ហើយស្កេនឯកសារក្នុងស្រុកសម្រាប់អាថ៌កំបាំង entropy ខ្ពស់ និងបុព្វបទ token។ លើសពីនេះ វាពង្រីកការគ្របដណ្តប់ដោយដំណើរការ TruffleHog។
  • វាសាកសួរចំណុចបញ្ចប់ទិន្នន័យមេតាលើពពក ដើម្បីប្រមូលព័ត៌មានបញ្ជាក់អត្តសញ្ញាណដែលមានអាយុកាលខ្លី។ ឧទាហរណ៍ ហៅទៅ 169.254.169.254 នៅលើ AWS ឬ metadata.google.internal នៅលើ GCP ជារឿយៗលេចឡើងនៅក្នុងម៉ាស៊ីនដែលឆ្លងមេរោគ។
  • ជាលទ្ធផល, លិខិតសម្គាល់ណាមួយដែលបានរកឃើញ នឹងអាចប្រើប្រាស់បានភ្លាមៗ ដើម្បីបោះពុម្ពផ្សាយកញ្ចប់ npm ថ្មី ឬជំរុញលំហូរការងារ GitHub។

ការបណ្តេញចេញ

  • ដង្កូវនេះបង្កើតឃ្លាំង GitHub ថ្មីមួយដែលមានឈ្មោះថា សាយ ហ៊ុលុដ ហើយសរសេរកូដ double base64-encoded data.json ជាមួយនឹងព័ត៌មានលម្អិតអំពីវេទិកា ទិន្នន័យបរិស្ថាន និងអាថ៌កំបាំង។ ដូចដែលអាចមើលឃើញ ឥរិយាបថរំខាននេះងាយស្រួលកត់សម្គាល់ ប្រសិនបើអ្នកការពារដឹងពីកន្លែងដែលត្រូវមើល។
  • វាក៏បង្កើតលំហូរការងារ GitHub Actions ជាញឹកញាប់នៅលើសាខាមួយដែលមានឈ្មោះថា សាយ-ហ៊ូលូដដែលធ្វើឱ្យស៊េរី ${{ toJSON(secrets) }} ហើយបង្ហោះទិន្នន័យទៅ static webhook។ លើសពីនេះ លំហូរការងារនេះនៅតែបន្តរហូតដល់មាននរណាម្នាក់លុបវាចេញយ៉ាងសកម្ម។

ការឃោសនា

  • ជាមួយនឹងសញ្ញាសម្ងាត់ npm ណាមួយដែលត្រូវបានរកឃើញ payload នឹងរាប់បញ្ចូលកញ្ចប់ទាំងអស់ដែលជាកម្មសិទ្ធិរបស់អ្នកថែទាំដែលរងការសម្របសម្រួល។ បន្ទាប់មក វាទាញយក tarball នីមួយៗ ចាក់ bundle.js និងធាតុក្រោយការដំឡើង ហើយបោះពុម្ពផ្សាយកញ្ចប់ឡើងវិញ។
  • ជាលទ្ធផល កញ្ចប់ឆ្លងមេរោគរាប់សិបអាចលេចឡើងក្នុងរយៈពេលតែប៉ុន្មានម៉ោងប៉ុណ្ណោះ ដែលបង្កើនកាំផ្ទុះនៅទូទាំងប្រព័ន្ធអេកូឡូស៊ី។

ភាពស្ថិតស្ថេរ និងការប៉ះពាល់

  • ដង្កូវនេះរក្សាដំណើរការការងារព្យាបាទឱ្យនៅរស់រវើក ហើយក្នុងករណីជាច្រើន វាប្តូរឃ្លាំងឯកជនទៅជាសាធារណៈជាមួយ «-ការធ្វើចំណាកស្រុក» បច្ច័យ។ ជារួម នេះធានាថាអ្នកវាយប្រហាររក្សាបាននូវទីតាំងឈរជើង និងបង្កើនការលេចធ្លាយទិន្នន័យឱ្យបានអតិបរមា។

កំណត់ចំណាំរកឃើញសោ
ការប្រើប្រាស់មិនធម្មតានេះ ${{ toJSON(secrets) }} នៅក្នុងលំហូរការងារសកម្មភាពគឺកម្រណាស់។ ដូច្នេះ ក្រុមនានាគួរតែចាត់ទុកវាជាសូចនាករសញ្ញាខ្ពស់ក្នុងអំឡុងពេលបរបាញ់។

គំរូដំណើរការការងារដែលបានសម្អាតរួចដែលអ្នកគួរស្វែងរក

ការប្រើប្រាស់មិនធម្មតានេះ ទៅ JSON (អាថ៌កំបាំង) នៅក្នុងសកម្មភាព គឺជាសូចនាករសញ្ញាខ្ពស់នៅក្នុងឧប្បត្តិហេតុនេះ។

កូដក្លែងក្លាយសម្រាប់ការសាយភាយកម្រិតខ្ពស់ (មានសុវត្ថិភាព ពិពណ៌នា)

អ្នកវិភាគបានសង្កេតឃើញរង្វិលជុំនេះក្នុងទ្រង់ទ្រាយធំ ដែលពន្យល់ពីការកើនឡើងយ៉ាងឆាប់រហ័សពីកញ្ចប់ដែលឆ្លងមេរោគរាប់សិបទៅរាប់រយ។

ហេតុអ្វីបានជានេះជាដង្កូវនៅក្នុងប្រព័ន្ធអេកូឡូស៊ីកញ្ចប់

ដង្កូវ (worm) គឺជាមេរោគដែលរីករាលដាលដោយខ្លួនឯងដោយមិនតម្រូវឱ្យមានជំហានប្រតិបត្តិករដោយដៃនៅគ្រប់ដំណាក់កាលឡើយ។ នៅក្នុងប្រព័ន្ធប្រតិបត្តិការ ដង្កូវជាធម្មតាទាញយកប្រយោជន៍ពីភាពងាយរងគ្រោះនៃបណ្តាញដើម្បីផ្លាស់ទីពីម៉ាស៊ីនមួយទៅម៉ាស៊ីនមួយទៀត។ ផ្ទុយទៅវិញ Shai-Hulud ដំណើរការនៅខាងក្នុងបញ្ជីឈ្មោះ npm។ ផ្លូវដ៏មានប្រសិទ្ធភាពរបស់វាគឺតាមរយៈ ការប្រើប្រាស់ឡើងវិញ.

ដង្កូវនេះទាញយកអត្ថប្រយោជន៍ពីថូខឹនបោះពុម្ពផ្សាយ npm ដែលត្រូវបានគេលួច។ ដរាបណាវាទទួលបានព័ត៌មានសម្ងាត់ដែលមានសុពលភាព វានឹងបោះពុម្ពផ្សាយឡើងវិញនូវកំណែដែលឆ្លងមេរោគក្រោមកញ្ចប់ផ្សេងទៀតដែលគ្រប់គ្រងដោយអ្នកថែទាំដូចគ្នា។ បន្ទាប់មក កញ្ចប់ទាំងនោះត្រូវបានដំឡើងដោយអ្នកអភិវឌ្ឍន៍ ឬអ្នកដំណើរការ CI ដែលមិនបានដឹងខ្លួន ហើយវដ្តនេះកើតឡើងម្តងទៀត។

ដោយហេតុផលនេះ អ្នកវិភាគសន្តិសុខ រួមទាំង ការអានងងឹតចាត់ថ្នាក់ Shai-Hulud ជា ដង្កូវ​ចម្លង​ដោយ​ខ្លួនឯង ជាជាងមេរោគ Trojan សាមញ្ញ ឬឧប្បត្តិហេតុវាយអក្សរខុស។ ភាពខុសគ្នាគឺសំខាន់៖ មេរោគ Trojan ជាធម្មតាធ្វើឱ្យប៉ះពាល់ដល់ម៉ាស៊ីនមួយ ប៉ុន្តែដង្កូវពង្រីកផលប៉ះពាល់របស់វាដោយស្វ័យប្រវត្តិនៅទូទាំងប្រព័ន្ធអេកូឡូស៊ី។

សន្លឹកបន្លំ "របៀបដែលវាដំណើរការ"

ដើម្បីសង្ខេបវដ្តជីវិតរបស់ Shai-Hulud នេះគឺជាចំណុចខ្វះខាតមួយcisការវិភាគជំហានសំខាន់ៗរបស់វា៖

  • កញ្ចប់មួយដែលមាន ក្រោយការដំឡើង ត្រូវបានដំឡើង ហើយ bundle.js ប្រតិបត្តិ។
  • payload បោះចោលអថេរបរិស្ថាន ស្កេនឯកសារ និងប្រវត្តិ git ដំណើរការ ផ្សិត TruffleHogនិងសាកសួរសេវាកម្មទិន្នន័យមេតាលើពពក។ ជាលទ្ធផល អាថ៌កំបាំងណាមួយដែលត្រូវបានរកឃើញនឹងមានប្រយោជន៍ភ្លាមៗ។
  • ការច្រោះចេញកើតឡើងតាមពីរវិធី៖ ទីមួយ ដោយបង្កើត repo សាធារណៈមួយដែលមានឈ្មោះថា សាយ ហ៊ុលុដ ជាមួយនឹងការអ៊ិនកូដមូលដ្ឋានទ្វេ 64 data.jsonទីពីរ ដោយការដាំដំណើរការការងារ GitHub Actions ដែលបង្ហោះ ${{ toJSON(secrets) }} ទៅ​កាន់​បណ្ដាញ​អ៊ីនធឺណិត។
  • ដោយប្រើប្រាស់សញ្ញាសម្ងាត់ npm ណាមួយដែលត្រូវបានគេលួច ដង្កូវនេះបោះពុម្ពឡើងវិញនូវកញ្ចប់ផ្សេងទៀតទាំងអស់ដែលជាកម្មសិទ្ធិរបស់អ្នកថែទាំដែលរងការសម្របសម្រួលជាមួយនឹងទំពក់ព្យាបាទដូចគ្នា។ តាមរបៀបនេះ ការឆ្លងមេរោគកើនឡើងយ៉ាងឆាប់រហ័ស។
  • ជាចុងក្រោយ អ្នកវាយប្រហារកាន់កាប់អាថ៌កំបាំងជាច្រើនទៀត កញ្ចប់ជាច្រើនទៀតដើម្បីផ្សព្វផ្សាយ និង ការតស៊ូ នៅខាងក្នុងគណនី និងឃ្លាំង GitHub។

របៀបជៀសវាងការវាយប្រហារប្រភេទនេះ តាមការអនុវត្តជាក់ស្តែង

Shai-Hulud គឺជាការដាស់តឿនមួយ។ ដង្កូវដែលលួចថូខឹន ហើយបោះពុម្ពផ្សាយឡើងវិញដោយខ្លួនឯង មិនមែនជាហានិភ័យនាពេលអនាគតទេ វាកំពុងរស់នៅក្នុង... ប្រព័ន្ធអេកូឡូស៊ីកញ្ចប់ npm ថ្ងៃនេះ ដើម្បីទប់ស្កាត់ប្រភេទនេះ ការវាយប្រហារខ្សែសង្វាក់ផ្គត់ផ្គង់ក្រុមនានាត្រូវការការគ្រប់គ្រងដែលអាចសរសេរកម្មវិធីបាន ដោយស្វ័យប្រវត្តិ និងអនុវត្តដោយផ្ទាល់នៅក្នុង CI/CD pipelineទ. ទាំងនេះគឺជាការការពារដូចគ្នាដែលអ្នកអាចអនុវត្តបានរួចហើយ ស៊ីហ្គេនី.

បញ្ឈប់វត្ថុបុរាណអាក្រក់នៅច្រកទ្វារ

អ្នកគួរតែស្កេនកញ្ចប់ npm និង tarballs មុនពេលពួកវាទៅដល់អ្នកអភិវឌ្ឍន៍ ឬការងារ CI។ bundle.js ឯកសារ, ក្រោយការដំឡើងគួរឱ្យសង្ស័យ hooksនិងសញ្ញាសម្គាល់ការបិទបាំងទាំងអស់បម្រើជាសញ្ញាព្រមានដំបូង។ លើសពីនេះ ការអនុវត្តរយៈពេលស្ងប់ស្ងាត់ និងកំណែដែលបានខ្ទាស់នៅក្នុង pipelines ការពារ​ការ​បញ្ចេញ​ថ្មីៗ ដែល​មិន​បាន​ត្រួតពិនិត្យ ពី​ការ​ប្រើប្រាស់​ដោយ​ស្វ័យប្រវត្តិ។

រឹង CI/CD តាម​លំនាំដើម

Guardrails in CI/CD គឺចាំបាច់ណាស់។ ពួកគេបដិសេធការបញ្ចូលគ្នា ឬការដំឡើងដែលណែនាំស្គ្រីប ឬប្រព័ន្ធគោលពីរថ្មី។ ក្នុងពេលជាមួយគ្នានេះ ពួកគេរារាំងលំហូរការងារដែលធ្វើស៊េរីសម្ងាត់ ឬព្យាយាមបង្ហោះខាងក្រៅ។ ក្រុមក៏គួរតែតម្រូវឱ្យមានការដំឡើង lockfile-only (npm ci) ទូទាំង pipelineដូច្នេះសំណុំ​ភាពអាស្រ័យ​នៅតែអាចបង្កើតឡើងវិញបាន និងមានសុវត្ថិភាព។

កាត់បន្ថយកាំនៃការផ្ទុះសញ្ញាសម្ងាត់

អាថ៌កំបាំងមិនត្រូវក្លាយជាចំណុចបរាជ័យតែមួយមុខនោះទេ។ ត្រូវស្កេនកូដ ការកំណត់រចនាសម្ព័ន្ធ និង pipeline ទិន្នផលសម្រាប់ ព័ត៌មានសម្ងាត់ដែលបានបង្ហាញថូខឹនគួរតែត្រូវបានកំណត់វិសាលភាពឱ្យតូចចង្អៀត ដោយផ្តល់អាយុកាលខ្លី និងបង្វិលដោយស្វ័យប្រវត្តិនៅពេលដែលការប៉ះពាល់ត្រូវបានរកឃើញ។ តាមក្បួនមួយ សូមចាត់ទុកថូខឹនណាមួយដែលប្រើលើម៉ាស៊ីនដែលបានអនុវត្តការដំឡើងក្រោយការសង្ស័យថាជាការគំរាមកំហែង។

មើលឥរិយាបថរបស់ដង្កូវឱ្យបានឆាប់

ការរកឃើញភាពមិនធម្មតា គឺជាគន្លឹះសំខាន់។ ឧទាហរណ៍ ការកើនឡើងភ្លាមៗនៃព្រឹត្តិការណ៍បោះពុម្ពផ្សាយ npm លំហូរការងារថ្មីដែលលេចឡើងដោយគ្មានហេតុផល ឬឃ្លាំងសាធារណៈថ្មីៗដែលពោរពេញទៅដោយឯកសារដែលបានអ៊ិនកូដចម្លែកៗ សុទ្ធតែអាចបង្ហាញពីសកម្មភាពរបស់មេរោគ Worm។ ដូច្នេះ ក្រុមគួរតែបង្កើនការជូនដំណឹងយ៉ាងឆាប់រហ័ស និងញែកអ្នកថែទាំ ឬអ្នកដំណើរការណាមួយដែលបង្ហាញសញ្ញាព្រមានទាំងនេះ។

ជួសជុល​យ៉ាង​រហ័ស​ដោយ​មិន​ធ្វើ​ឲ្យ​ខូច​សំណង់

ល្បឿន និងសុវត្ថិភាពត្រូវតែដើរទន្ទឹមគ្នា។ ស្វ័យប្រវត្តិ pull requests អាចជំនួសកញ្ចប់ npm ដែលរងការសម្របសម្រួលជាមួយនឹងកំណែដែលបានត្រួតពិនិត្យ។ លើសពីនេះ ការបង្កើនសមត្ថភាព និង ការកេងប្រវ័ញ្ច ការវិភាគធានាថាការធ្វើឱ្យប្រសើរឡើងនៅតែមានកម្រិតតិចតួចបំផុត និងមានស្ថេរភាព។ ជាចុងក្រោយ សាងសង់ឡើងវិញនូវកម្មវិធីដំណើរការ CI ដែលរងផលប៉ះពាល់ពីរូបភាពស្អាតនៅពេលដែលការប៉ះពាល់ត្រូវបានបញ្ជាក់ ដោយការពារការវាយប្រហារពីការរីករាលដាលបន្ថែមទៀត។

សូចនាករនៃការសម្របសម្រួល (IoCs)

នៅពេលវិភាគ Shai-Hulud ក្រុមនានាគួរតែតាមដានទាំងពីរ IoC ឋិតិវន្ត នៅក្នុងឯកសារ និង IoC អាកប្បកិរិយា in pipelineស. សញ្ញាទាំងនេះរួមគ្នាជួយរកឃើញការឆ្លងមេរោគឱ្យបានឆាប់ និងឆ្លើយតបមុនពេលដង្កូវរីករាលដាលបន្ថែមទៀត។

IoC ឋិតិវន្ត

ការផ្គូផ្គងនៃការរំលាយ SHA-256 ខាងក្រោមត្រូវបានសង្កេតឃើញ bundle.js គំរូ៖

  • 46faab8ab153fae6e80e7cca38eab363075bb524edd79e42269217a083628f09
  • 81d2a004a1bca6ef87a1caf7d0e0b355ad1764238e40ff6d1b1cb77ad4f595c3
  • dc67467a39b70d1cd4c1f7f7a459b35058163592f4a9e8fb4dffcbba98ef210c

លើសពីនេះ សូមប្រយ័ត្នចំពោះលំនាំដដែលៗទាំងនេះ៖

  • A bundle.js នៅ root កញ្ចប់។
  • "postinstall": "node bundle.js" នៅខាងក្នុង package.json.
  • ឃ្លាំង​ដែល​មាន​ឈ្មោះ សាយ ហ៊ុលុដ.
  • លំហូរការងារ GitHub ដែលមាន ${{ toJSON(secrets) }}.

IoC ស្តីពីឥរិយាបថ

ក្រៅពីហត្ថលេខាឯកសារ សកម្មភាពរបស់មេរោគ Worm បង្ហាញឱ្យឃើញតាមរយៈឥរិយាបថ។ ឧទាហរណ៍៖

  • ការផ្ទុះឡើងភ្លាមៗនៃព្រឹត្តិការណ៍ npm បោះពុម្ពផ្សាយពីអ្នកថែទាំម្នាក់។
  • លំហូរការងារថ្មីដែលរុញទិន្នន័យទៅកាន់ចំណុចបញ្ចប់ខាងក្រៅ។
  • សំណើ POST ចេញ​ដែល​បង្ក​ឡើង​ពី​អ្នក​ដំណើរការ CI។
  • ឃ្លាំងសាធារណៈដែលទើបបង្កើតថ្មីៗជាមួយប្លុកដែលបានអ៊ិនកូដ។

ការបរបាញ់រហ័ស

សេចក្តីសន្និដ្ឋាន៖ មេរៀនពី Shai-Hulud

ចំពោះ ការវាយប្រហារខ្សែសង្វាក់ផ្គត់ផ្គង់ Shai-Hulud នៅក្នុងកញ្ចប់ npm បង្ហាញពីភាពផុយស្រួយនៃខ្សែសង្វាក់ផ្គត់ផ្គង់កម្មវិធីសព្វថ្ងៃនេះ។ ដង្កូវនេះបានធ្វើច្រើនជាងការបន្ថែមកូដព្យាបាទ។ វាបានលួចថូខឹន ផ្ញើទិន្នន័យចេញ ហើយបន្ទាប់មកបោះពុម្ពផ្សាយឡើងវិញដោយស្វ័យប្រវត្តិ។ ដោយសារតែបញ្ហានេះ ការវាយប្រហារបានរីករាលដាលក្នុងរយៈពេលប៉ុន្មានម៉ោងជំនួសឱ្យសប្តាហ៍។

សម្រាប់អ្នកអភិវឌ្ឍន៍ និងក្រុម DevOps មេរៀនគឺច្បាស់លាស់៖

  • ការដំឡើងនីមួយៗដំណើរការកូដ។ សូម្បីតែកញ្ចប់ npm ទូទៅក៏អាចលាក់មេរោគ worm ក្រោយការដំឡើងបានដែរ។
  • ថូខឹននីមួយៗមានតម្លៃខ្ពស់។ នៅពេលដែលត្រូវបានគេលួច វាអាចត្រូវបានប្រើដើម្បីផ្សព្វផ្សាយមេរោគបន្ថែមទៀត។
  • ជារៀងរាល់ pipeline ត្រូវការការត្រួតពិនិត្យ។ ដោយគ្មាន guardrails លើភាពអាស្រ័យ លំហូរការងារ និងអាថ៌កំបាំង ការសម្របសម្រួលមួយអាចប៉ះពាល់ដល់ផលិតកម្មយ៉ាងឆាប់រហ័ស។

ដូច្នេះ ការបញ្ឈប់ការវាយប្រហារដូចជា Shai-Hulud តម្រូវឱ្យមានការគ្រប់គ្រងដោយស្វ័យប្រវត្តិ និងងាយស្រួលអនុវត្ត។ ក្រុមគួរតែស្កេនកញ្ចប់ npm មុនពេលដំឡើង ប្រើការបង្កើត lockfile រកឃើញសកម្មភាពបោះពុម្ពផ្សាយចម្លែក និងរក្សាថូខឹនឱ្យមានរយៈពេលខ្លី។ ជំហានទាំងនេះលែងជាជម្រើសទៀតហើយ។ ផ្ទុយទៅវិញ ពួកវាគឺជាមូលដ្ឋានគ្រឹះនៃភាពធន់នៅក្នុងសម័យទំនើប។ pipelines.

នៅ Xygeni យើងមើលឃើញការវាយប្រហារខ្សែសង្វាក់ផ្គត់ផ្គង់ Shai-Hulud ជាការព្រមានសម្រាប់ប្រព័ន្ធអេកូឡូស៊ីប្រភពបើកចំហទាំងមូល។ មធ្យោបាយប្រកបដោយចីរភាពឆ្ពោះទៅមុខគឺការនាំយកសុវត្ថិភាពខ្សែសង្វាក់ផ្គត់ផ្គង់ដោយផ្ទាល់ទៅក្នុងដំណើរការអភិវឌ្ឍន៍ នៅចំណុចដែលកូដ កញ្ចប់ npm និង pipelineភ្ជាប់។

ខាងក្រោមនេះគឺជាបញ្ជីពេញលេញនៃកញ្ចប់ npm និងកំណែដែលត្រូវបានរាយការណ៍ថាមានការលួចចូលនៅក្នុង Shai-Hulud។ ប្រើវាដើម្បីពិនិត្យមើលឯកសារចាក់សោ បញ្ជីឈ្មោះ និង CI របស់អ្នក។ pipelineសម្រាប់ការប៉ះពាល់។

បញ្ជីកញ្ចប់ដែលរងការគំរាមកំហែង

📦 ការមើលជាមុននៃកញ្ចប់ npm ដែលរងការសម្របសម្រួល

ឈ្មោះកញ្ចប់។ កំណែ បោះពុម្ពផ្សាយកាលបរិច្ឆេទ
ម៉ាស៊ីន​ច្បាប់ json បាន​ធ្វើ​ឲ្យ​សាមញ្ញ0.2.12025-09-14T17:58:51.203Z
អ្នកបើកយន្តហោះ0.8.82025-09-14T18:35:07.600Z
ក្រាហ្វចំណេះដឹង mcp1.2.12025-09-14T18:35:09.494Z
ក្បាល​យន្តហោះ0.3.12025-09-14T18:35:09.521Z
ច្រកទ្វារលោត0.0.22025-09-14T18:35:09.651Z
tvi-cli0.1.52025-09-14T18:35:10.996Z
@thangved/បង្អួចហៅត្រឡប់មកវិញ1.1.42025-09-14T20:31:38.479Z
@tnf-dev/api1.0.82025-09-14T20:31:39.547Z
@tnf-dev/js1.0.82025-09-14T20:31:41.251Z
@tnf-dev/mui1.0.82025-09-14T20:31:41.259Z
@tnf-dev/core1.0.82025-09-14T20:31:42.728Z
@teselagen/តារាងប្រតិកម្ម6.10.202025-09-14T20:37:08.597Z
@hestjs/demo0.1.22025-09-14T20:45:52.348Z
@nexe/eslint-config0.1.12025-09-14T20:45:53.625Z
@hestjs/eslint-config0.1.22025-09-14T20:45:55.044Z
@nexe/config-manager0.1.12025-09-14T20:45:55.066Z
@nexe/logger0.1.32025-09-14T20:45:55.170Z
@hestjs/logger0.1.62025-09-14T20:45:55.197Z
@hestjs/ការផ្ទៀងផ្ទាត់0.1.62025-09-14T20:45:55.595Z
@hestjs/ស្នូល0.2.12025-09-14T20:45:55.888Z
➡️ មើលបញ្ជីពេញលេញនៃកញ្ចប់ដែលរងការគំរាមកំហែង
ឈ្មោះកញ្ចប់។ កំណែ បោះពុម្ពផ្សាយកាលបរិច្ឆេទ
ម៉ាស៊ីន​ច្បាប់ json បាន​ធ្វើ​ឲ្យ​សាមញ្ញ0.2.12025-09-14T17:58:51.203Z
អ្នកបើកយន្តហោះ0.8.82025-09-14T18:35:07.600Z
ក្រាហ្វចំណេះដឹង mcp1.2.12025-09-14T18:35:09.494Z
ក្បាល​យន្តហោះ0.3.12025-09-14T18:35:09.521Z
ច្រកទ្វារលោត0.0.22025-09-14T18:35:09.651Z
tvi-cli0.1.52025-09-14T18:35:10.996Z
@thangved/បង្អួចហៅត្រឡប់មកវិញ1.1.42025-09-14T20:31:38.479Z
@tnf-dev/api1.0.82025-09-14T20:31:39.547Z
@tnf-dev/js1.0.82025-09-14T20:31:41.251Z
@tnf-dev/mui1.0.82025-09-14T20:31:41.259Z
@tnf-dev/core1.0.82025-09-14T20:31:42.728Z
@teselagen/តារាងប្រតិកម្ម6.10.202025-09-14T20:37:08.597Z
@hestjs/demo0.1.22025-09-14T20:45:52.348Z
@nexe/eslint-config0.1.12025-09-14T20:45:53.625Z
@hestjs/eslint-config0.1.22025-09-14T20:45:55.044Z
@nexe/config-manager0.1.12025-09-14T20:45:55.066Z
@nexe/logger0.1.32025-09-14T20:45:55.170Z
@hestjs/logger0.1.62025-09-14T20:45:55.197Z
@hestjs/ការផ្ទៀងផ្ទាត់0.1.62025-09-14T20:45:55.595Z
@hestjs/ស្នូល0.2.12025-09-14T20:45:55.888Z
@hestjs/cqrs0.1.62025-09-14T20:45:55.966Z
@hestjs/ស្កាឡារ0.1.72025-09-14T20:45:56.386Z
ការផ្ទុកឡើងឯកសារ ng27.0.32025-09-15T02:44:29.555Z
ឧបករណ៍ដោះស្រាយការជូនដំណឹងរបស់ capacitor0.0.22025-09-15T04:54:48.431Z
ឧបករណ៍​ជំនួយ​សម្រាប់​បញ្ចូល​ឧបករណ៍​ផ្ទុក​អគ្គិសនី1.0.22025-09-15T04:54:48.501Z
កម្មវិធីជំនួយ​សម្រាប់​សុខភាព​របស់​ឧបករណ៍​ផ្ទុក​អគ្គិសនី0.0.22025-09-15T04:54:48.704Z
ការអនុញ្ញាត​សម្រាប់​ឧបករណ៍​ផ្ទុក​ថាមពល​អគ្គិសនី​របស់​ប្រព័ន្ធ​ប្រតិបត្តិការ Android0.0.42025-09-15T04:54:48.753Z
សំណុំ​ហៅ​តាម​អ៊ីនធឺណិត1.0.22025-09-15T04:54:49.223Z
កម្មវិធីជំនួយ​សម្រាប់​ឧបករណ៍​ផ្ទុក​អគ្គិសនី​ក្នុង​សុខភាព (Capacitor-plugin-ihealth)1.1.82025-09-15T04:55:08.113Z
@សិល្បៈ-ws/common2.0.222025-09-15T05:21:15.411Z
@art-ws/config-eslint2.0.42025-09-15T05:21:17.199Z
ngx-ws1.1.52025-09-15T05:21:17.514Z
@សិល្បៈ-ws/slf2.0.152025-09-15T05:21:17.524Z
@art-ws/http-server2.0.212025-09-15T05:21:17.745Z
pm2-gelf-json1.0.42025-09-15T05:21:18.413Z
@សិល្បៈ-ws/di2.0.282025-09-15T05:21:18.488Z
@art-ws/di-node2.0.132025-09-15T05:21:18.849Z
@art-ws/config-ts2.0.72025-09-15T05:21:19.408Z
@art-ws/db-context2.0.212025-09-15T05:21:19.814Z
@art-ws/openapi0.1.92025-09-15T05:21:19.969Z
@art-ws/កម្មវិធីបណ្ដាញ1.0.32025-09-15T05:21:20.383Z
@art-ws/ssl-info1.0.92025-09-15T05:21:20.927Z
ឧបករណ៍វិភាគសមាសភាពកម្មវិធី sca
ផ្តល់អាទិភាព ដោះស្រាយ និងធានាសុវត្ថិភាពហានិភ័យផ្នែកទន់របស់អ្នក
ទទួលបានគណនីឥតគិតថ្លៃរបស់អ្នក។
មិនតម្រូវឱ្យមានកាតឥណទានទេ។

ធានាសុវត្ថិភាពនៃការអភិវឌ្ឍន៍ និងការដឹកជញ្ជូនកម្មវិធីរបស់អ្នក

ជាមួយឈុតផលិតផល Xygeni