ការរកឃើញ rootkit - ភាពសុចរិតនៃកូដ

Rootkits មិនមែនសម្រាប់តែអ្នកគ្រប់គ្រងប្រព័ន្ធទៀតទេ៖ ពួកវារស់នៅក្នុង Repos ផងដែរ

តើ Rootkit ជាអ្វី?

rootkit លែងគ្រាន់តែជាមេរោគកម្រិតទាបទៀតហើយ។ នៅក្នុងស្នូលរបស់វា វាលួចលាក់។ មេរោគដែលផ្តល់សិទ្ធិចូលប្រើដោយគ្មានការអនុញ្ញាត ខណៈពេលដែលលាក់បាំងអត្ថិភាពរបស់វា។ នៅក្នុងបរិបទប្រពៃណី rootkits រស់នៅក្នុងកន្លែង kernel ឬសេវាកម្មប្រព័ន្ធ។ ទោះជាយ៉ាងណាក៏ដោយ សព្វថ្ងៃនេះ ពួកវាក៏ស្ថិតនៅក្នុងឃ្លាំងរបស់អ្នក ប្រព័ន្ធ CI និងកម្មវិធីបង្ហាញកញ្ចប់ផងដែរ ដោយលាក់ខ្លួននៅកន្លែងដែលអាចមើលឃើញយ៉ាងច្បាស់ រំខានដល់ភាពសុចរិតនៃកូដ និងឆ្លងប្រព័ន្ធសាងសង់។

ពី System Rootkits រហូតដល់ Repository Rootkits

វិស្វករប្រព័ន្ធធ្លាប់មានការព្រួយបារម្ភអំពី rootkits ខឺណែល (kernel rootkits)។ ទាំងនេះផ្តល់ការគ្រប់គ្រងពេញលេញលើប្រព័ន្ធមួយ ស្ទាក់ចាប់ syscalls លាក់ដំណើរការ និងរក្សាភាពសុចរិតនៃកូដឱ្យមានការសម្របសម្រួល។ ឥឡូវនេះ សូមសន្មតថាសេណារីយ៉ូដែលផ្តោតលើអ្នកអភិវឌ្ឍន៍៖ ជនល្មើសដែលមានគំនិតអាក្រក់ចាក់ rootkit ចូលទៅក្នុង... ឃ្លាំង Git or ដើមឈើអាស្រ័យrootkit ឃ្លាំងនេះគឺជាកូដដែលរៀបចំលទ្ធផលសាងសង់របស់អ្នក ឬលួចចូលទៅក្នុង backdoor ដោយក្លាយជាផ្នែកមួយនៃ package artifacts របស់អ្នក សូម្បីតែមុនពេលប្រព័ន្ធដំណើរការពួកវាក៏ដោយ។ Rootkits ផ្លាស់ប្តូរទៅខាងលើទៅក្នុងប្រភពរបស់អ្នក ការពឹងផ្អែក និង CI/CD លំហូរ។

របៀបដែល Rootkits លាក់ខ្លួននៅក្នុង Codebases និង Dependencies

ចូរយើងស្រាយចម្ងល់អំពីការវាយប្រហារ rootkit ដែលអ្នកអភិវឌ្ឍន៍ត្រូវតែមើល៖

  • បំភាន់ ឬ បំភាន់ commits
    ស្រមៃមួយ commit ដែលនិយាយថា "ជួសជុលកំហុសវាយអក្សរ" ប៉ុន្តែតាមពិតវាបញ្ចូលកម្មវិធីផ្ទុកដែលឌិគ្រីបបន្ទុកមេរោគនៅពេលដំណើរការ។ ការរកឃើញ Rootkit គឺពិបាកនៅពេល commit សារ​លាក់បាំង​ចេតនា។
  • បណ្ណាល័យដែលបានផ្លាស់ប្តូរ ឬ បិទទ្វារក្រោយ
    មុខងារ​ឧបករណ៍​ប្រើប្រាស់​ទូទៅ​មួយ​ត្រូវ​បាន​ជំនួស​ដោយ​កំណែ​ដែល​មាន​ទ្វារ​ខាងក្រោយ​យ៉ាង​ប្រុង​ប្រយ័ត្ន។ វា​ឆ្លងកាត់​ការ​ធ្វើ​តេស្ត ប៉ុន្តែ​កត់ត្រា​សម្ងាត់​ទៅ​ម៉ាស៊ីន​បម្រើ​ពីចម្ងាយ​ក្រោយ​ម៉ោង​ធ្វើការ។ ភាព​សុចរិត​នៃ​កូដ​ត្រូវ​បាន​ខូច ទោះបីជា​បណ្ណាល័យ​មើល​ទៅ​ស៊ាំ​ក៏ដោយ។
  • កញ្ចប់ភាគីទីបីដែលរងការគំរាមកំហែង និងការពឹងផ្អែកអន្តរកាល
    អ្នកបានដំឡើង lib-crypto@2.0.1; ខាងលើទឹក កំណែដែលមាននរណាម្នាក់បំពុល 2.0.0 ជាមួយមេរោគ។ ឥឡូវនេះរបស់អ្នក pipeline ទាញយក rootkit ដោយចៃដន្យ ឬអ្វីដែលអាក្រក់ជាងនេះទៅទៀត ឯកសារចាក់សោរបស់អ្នកត្រូវបានរសាត់បាត់ ហើយអ្នកបានទាញយកលេខកូដដែលមានមេរោគ។
  • កូដ​ដេក និង​គ្រាប់បែក​តក្កវិជ្ជា

កូដ​ស្ថិត​នៅ​ស្ងៀម​រយៈពេល​ច្រើន​សប្តាហ៍ ឬ​ច្រើន​ខែ រួច​ក៏​ភ្ញាក់​ឡើង។ ឧទាហរណ៍៖

				
					 if os.getenv("DEPLOY_DATE") == "2025-09-01":
    execute_backdoor()


				
			

ការធ្វើតេស្តឆ្លងកាត់នៅថ្ងៃនេះ ហើយអ្នកមិនសម្គាល់ឃើញថាភាពសុចរិតនៃកូដបរាជ័យទេ រហូតដល់វាយឺតពេល។

ហេតុអ្វីបានជាការរកឃើញ Rootkit មានសារៈសំខាន់នៅក្នុង DevOps

Rootkits នៅក្នុងរបស់អ្នក pipeline និង repos គំរាមកំហែងដល់លំហូរការងាររបស់អ្នកអភិវឌ្ឍន៍ពិតប្រាកដ៖

  • សំណង់ដែលត្រូវបានកែប្រែដែលមើលមិនឃើញ៖ ប្រសិនបើជា rootkit hooks ចូលទៅក្នុងស្គ្រីបបង្កើតរបស់អ្នក សូមនិយាយថាមានមេរោគ ក្រោយការដំឡើង or setup.pyCI របស់អ្នកនឹងឆ្លងកាត់ ហើយអ្នករុញច្រានវត្ថុបុរាណដែលរងការលួចចូលដោយមិនដឹងខ្លួន។
  • ការបង្កើតមិនស៊ីសង្វាក់គ្នា ឬមិនអាចបង្កើតឡើងវិញបាន៖ rootkit អាចបណ្តាលឱ្យមានភាពខុសគ្នានៃ builds នៅលើម៉ាស៊ីនអ្នកអភិវឌ្ឍន៍ធៀបនឹងភ្នាក់ងារ CI។ ភាពខុសគ្នានោះគឺជាសញ្ញាព្រមានសម្រាប់ភាពសុចរិតនៃកូដ ប៉ុន្តែលុះត្រាតែអ្នកកំពុងពិនិត្យមើលវា។
  • ការសម្របសម្រួលជាប់លាប់នៅទូទាំងការចេញផ្សាយ៖ នៅពេលដែលបានបង្កប់រួចហើយ វាអាចរស់រានមានជីវិតពីការរួមបញ្ចូលគ្នានៃសាខា ការជ្រើសរើសជម្រើស និងការចេញផ្សាយនាពេលអនាគត។ អ្វីដែលអាក្រក់ជាងនេះទៅទៀត វាអាចចាក់បញ្ចូលខ្លួនវាទៅក្នុងបច្ចុប្បន្នភាព ដែលធ្វើឱ្យខូចខ្សែសង្វាក់ផ្គត់ផ្គង់របស់អ្នក។
  • Pipeline ការពុល និងចលនាចំហៀងនៅក្នុងបរិស្ថានអ្នកអភិវឌ្ឍន៍៖ rootkit អាចរីករាលដាលតាមរយៈ CI configs, shared runners និងម៉ាស៊ីនអ្នកអភិវឌ្ឍន៍ដែលមានសិទ្ធិចូលប្រើរួមគ្នា។ ភាពសុចរិតនៃកូដត្រូវបានរំលោភបំពានមិនត្រឹមតែនៅក្នុងកូដប៉ុណ្ណោះទេ ប៉ុន្តែថែមទាំងនៅទូទាំងបរិស្ថានផងដែរ។

ការរកឃើញ Rootkit ជាក់ស្តែងនៅក្នុង Pipelines

ខាងក្រោមនេះជាបច្ចេកទេសងាយស្រួលប្រើ និងអាចអនុវត្តបានសម្រាប់អ្នកអភិវឌ្ឍន៍ ដើម្បីលើកកម្ពស់ការរកឃើញ rootkit របស់អ្នក៖

• ការផ្ទៀងផ្ទាត់ហាសសម្រាប់ឯកសារសំខាន់ៗ និង ភាពអាស្រ័យ

គណនា SHA‑256 (ឬស្រដៀងគ្នា) សម្រាប់ឯកសារសំខាន់ៗដូចជា requirements.txt, កញ្ចប់-lock.jsonឬស្គ្រីបបង្កើតកម្រិតខ្ពស់បំផុត៖

				
					sha256sum requirements.txt > baseline.hash
...
sha256sum -c baseline.hash

				
			

ការ​ផ្លាស់ប្ដូរ​ណាមួយ​ចំពោះ​ឯកសារ​ទាំងនោះ​បង្ហាញ​ពី​ការ​លួច​ចូល​ដែល​អាច​មាន​គ្រោះថ្នាក់។

• SBOM ការផ្ទៀងផ្ទាត់ (វិក្កយបត្រសម្ភារៈកម្មវិធី)

បង្កើត SBOM ជាមួយឧបករណ៍ដូចជា Syft ឬ SPDX។ តាមដានឲ្យបានច្បាស់ថាតើ dependencies (និងកំណែ) ណាខ្លះដែលមាននៅក្នុង build របស់អ្នក។ ប្រៀបធៀប SBOMនៅទូទាំង builds ដើម្បីរកឃើញការបន្ថែមដែលមិននឹកស្មានដល់ ឬព្យាបាទ។

• ចុះហត្ថលេខា commits និងការផ្ទៀងផ្ទាត់ហត្ថលេខា

អនុវត្ត Git commit -S និងពិនិត្យមើលហត្ថលេខានៅក្នុង CI៖

				
					git verify-commit HEAD

				
			

ហត្ថលេខាថ្មី មិនទាន់ចុះហត្ថលេខា ឬហត្ថលេខាគួរឱ្យសង្ស័យ commit អាចជាការស៊ើបអង្កេតប្រភព rootkit។

• ការរកឃើញភាពមិនប្រក្រតីដែលផ្អែកលើឥរិយាបថក្នុងអំឡុងពេលបង្កើត ឬពេលដំណើរការ

ឧបករណ៍​សម្រាប់​ការ​បង្កើត​របស់​អ្នក​ជាមួយ​នឹង​ការ​កំណត់​ទម្រង់​ដើម្បី​ចាប់​យក​ឥរិយាបថ​ចម្លែកៗ៖ ឧទាហរណ៍ ការ​ហៅ​ទូរសព្ទ​បណ្ដាញ​ដែល​មិន​បាន​រំពឹង​ទុក​ក្នុង​អំឡុង​ពេល ល្ងាចដំឡើង or ដំឡើង pipឬដាក់ឯកសារផ្លាស់ប្តូរនៅក្នុងថតឯកសារដែលបានការពារ៖

				
					# in CI pipeline
strace -f -e trace=network python setup.py install

				
			

ចរាចរណ៍ចេញដែលមិននឹកស្មានដល់អំឡុងពេលដំឡើងអាចជាដំណាក់កាលផ្ទុក rootkit។

• ការស្កេនរកផ្នែកកូដដែលមានភាពមិនច្បាស់លាស់ ឬមានអង់ត្រូពីខ្ពស់

ប្រើឧបករណ៍ដែលសម្គាល់អង់ត្រូពីកូដគួរឱ្យសង្ស័យ ឬផ្នែកមិនមែន ASCII/ពិបាកអាន pull requestsឧទាហរណ៍ បញ្ចូលការស្កេនសម្រាប់ Base64 ស្នាមប្រឡាក់ ឬការប្រើប្រាស់ exec/eval ចម្លែក។ កូដដែលបានបន្លិចអាចជាកម្មវិធីផ្ទុកដែលកំពុងដេក ឬ payload ដែលបានអ៊ិនគ្រីប។

ការរក្សាសុចរិតភាពនៃកូដនៅទូទាំងខ្សែសង្វាក់ផ្គត់ផ្គង់

សម្រាប់រយៈពេលវែង អ្នកត្រូវការការអនុវត្តដែលធ្វើឱ្យការរកឃើញ rootkit មានលក្ខណៈធម្មតា៖

  • ការភ្ជាប់ការពឹងផ្អែក និងឯកសារចាក់សោ៖ ជានិច្ច commit ឯកសារចាក់សោ (package-lock.json, requirements.lock)។ បិទភ្ជាប់កំណែនានា ដើម្បីកុំឱ្យអ្នកទាញយកភាពអាស្រ័យអន្តរកាលដែលមានការផ្លាស់ប្តូរដោយចៃដន្យ ហើយប្រឈមនឹងហានិភ័យនៃការលេចធ្លាយ rootkit។
  • ការចុះហត្ថលេខា​លើ​កូដ​សម្ងាត់​នៃ​ការចេញផ្សាយ និង​កញ្ចប់៖ ចុះហត្ថលេខាលើស្នាដៃសាងសង់ផ្ទាល់ខ្លួនរបស់អ្នកជាមួយ GPG ឬស្រដៀងគ្នា។ អ្នកប្រើប្រាស់ផ្ទៀងផ្ទាត់ហត្ថលេខា។ ប្រសិនបើ rootkit ជ្រៀតជ្រែកជាមួយការចេញផ្សាយរបស់អ្នក ការផ្ទៀងផ្ទាត់នឹងបរាជ័យ និងបំបែកខ្សែសង្វាក់នៃការជឿទុកចិត្ត។
  • ការពិនិត្យឡើងវិញជាទៀងទាត់នៃ ការផ្លាស់ប្តូរភាគីទីបី និងអន្តរកាល: ប្រើឧបករណ៍ត្រួតពិនិត្យការពឹងផ្អែកដែលសម្គាល់ការពឹងផ្អែកថ្មី ឬដែលបានផ្លាស់ប្តូរ។ ផ្សំជាមួយ SBOM diffs ដើម្បីរកឃើញម៉ូឌុលដែលបានចាក់ ឬជំនួស។
  • ការត្រួតពិនិត្យជាបន្តបន្ទាប់សម្រាប់ការរសាត់បាត់នៃការពឹងផ្អែក ឬ ការផ្លាស់ប្តូរដោយគ្មានការអនុញ្ញាត: ស្វ័យប្រវត្តិ SBOM ភាពខុសគ្នានៅក្នុង CI របស់អ្នក៖ ការបង្កើតបរាជ័យប្រសិនបើភាពអាស្រ័យដែលមិននឹកស្មានដល់លេចឡើង។ តាមដានការរសាត់នៃភាពអាស្រ័យតាមពេលវេលា ហើយជូនដំណឹងប្រសិនបើមានអ្វីមួយងាកចេញពីស្ថានភាពដែលរំពឹងទុក៖ ឧទាហរណ៍ rootkit commit ឬជំនួសការពឹងផ្អែក។

សន្និដ្ឋាន

Rootkits លែងត្រូវបានកំណត់ចំពោះ sysadmins និង kernels ទៀតហើយ; ពួកវាបានធ្វើចំណាកស្រុកទៅក្នុងបេះដូងនៃការអភិវឌ្ឍន៍៖ repos, builds និង CI របស់អ្នក។ pipelineទ. អ្នកអភិវឌ្ឍន៍ត្រូវតែចាត់ទុកការរកឃើញ rootkit និងភាពសុចរិតនៃកូដជាកង្វល់ស្នូលរបស់ appsec។ ដោយប្រើប្រាស់ការផ្ទៀងផ្ទាត់ hash, SBOM ការត្រួតពិនិត្យ, ចុះហត្ថលេខា commits ការរកឃើញភាពមិនប្រក្រតីនៃឥរិយាបថ និងអនាម័យនៃការពឹងផ្អែក អ្នកបង្កើតការការពារជាក់ស្តែងប្រឆាំងនឹង rootkits ដែលរស់នៅក្នុងកូដ។

ឧបករណ៍ដូចជា ស៊ីហ្គេនីដែលផ្តោតលើការពង្រឹងខ្សែសង្វាក់ផ្គត់ផ្គង់កម្មវិធី អាចផ្តល់អំណាចដល់ក្រុម DevSecOps ដើម្បីរក្សាភាពសុចរិតនៃកូដ និងរកឃើញការគំរាមកំហែង rootkit នៅដើមដំបូងនៃលំហូរការងារ។ វាជាសម្ព័ន្ធមិត្តដ៏សំខាន់សម្រាប់សុវត្ថិភាពជាអ្នកអភិវឌ្ឍន៍ជាមុន ដោយជួយបញ្ឈប់បញ្ហានេះមុនពេលពួកវារីករាលដាលតាមរយៈ repo ការបង្កើត ឬផលិតកម្មរបស់អ្នក។

ឧបករណ៍វិភាគសមាសភាពកម្មវិធី sca
ផ្តល់អាទិភាព ដោះស្រាយ និងធានាសុវត្ថិភាពហានិភ័យផ្នែកទន់របស់អ្នក
ទទួលបានគណនីឥតគិតថ្លៃរបស់អ្នក។
មិនតម្រូវឱ្យមានកាតឥណទានទេ។

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

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