ការលេចធ្លាយព័ត៌មានសម្ងាត់មិនមែនតែងតែទាក់ទងនឹងកូដមិនល្អ ឬបណ្ណាល័យងាយរងគ្រោះនោះទេ។ ពេលខ្លះ វាអាស្រ័យលើរបៀបដែលយើងគ្រប់គ្រងព័ត៌មានសម្ងាត់ក្នុងអំឡុងពេលដំណើរការ CI ហើយ CVE‑2025‑30066 គឺជាឧទាហរណ៍សៀវភៅសិក្សាអំពីរបៀបដែលវាអាចទៅចំហៀង។ GitHub Action tj‑actions/changed‑files ដែលត្រូវបានគេប្រើយ៉ាងទូលំទូលាយដើម្បីរកឃើញឯកសារដែលបានផ្លាស់ប្តូរនៅក្នុង pull requestsបានក្លាយជាច្រកស្ងាត់មួយសម្រាប់ការលេចធ្លាយព័ត៌មានសម្ងាត់។ នេះជាអ្វីដែលបានកើតឡើង និងរបៀបដែលអ្នកអាចចាក់សោររបស់អ្នក CI/CD អាថ៌កំបាំង pipeline.
តើមានអ្វីកើតឡើងនៅក្នុង CVE‑2025‑30066?
នៅពាក់កណ្តាលខែមីនា ឆ្នាំ២០២៥ ឯកសារ tj-actions/changed-files ត្រូវបានលួចចូល។ អ្នកវាយប្រហារបានសរសេរឡើងវិញនូវស្លាកកំណែដែលមានស្រាប់ (រហូតដល់ v45.0.7) ដើម្បីចង្អុលទៅមេរោគព្យាបាទ។ commitនេះបានផ្លាស់ប្តូរឥរិយាបថរបស់ Action ដោយអ្នកអភិវឌ្ឍន៍មិនបានកត់សម្គាល់ទេ។ មិនមានកំណែថ្មីត្រូវបានចេញផ្សាយទេ គ្រាន់តែមានការក្លែងបន្លំស្លាកដែលមើលមិនឃើញ។
ទិន្នន័យដែលបានផ្ទុកគឺសាមញ្ញប៉ុន្តែមានគ្រោះថ្នាក់៖ វាទាញយកស្គ្រីប Python ដែលបានអ៊ិនកូដដោយ Base64 ពីចម្ងាយ ដែលបានស្កេនអង្គចងចាំរបស់អ្នកដំណើរការសម្រាប់ព័ត៌មានសម្ងាត់ ដោយចាក់វាទៅក្នុងកំណត់ហេតុ ឬច្រោះវាចេញ។ នេះមិនមែនជាកំហុសកូដឡូជីខលនៅក្នុងឯកសារ tj-actions/changed-files ទេ។ វាគឺជាការរំលោភលើរបៀបដែលការលេចធ្លាយសម្ងាត់អាចកើតឡើងនៅក្នុងលំហូរការងារ CI ដោយប្រើសកម្មភាពដែលអាចប្រើឡើងវិញបាននោះ។ CVE-2025-30066 មិនមែននិយាយអំពីការលើសចំណុះនៃសតិបណ្ដោះអាសន្ននោះទេ វានិយាយអំពីការបរាជ័យក្នុងការរចនា CI ដែលអាចឱ្យព័ត៌មានសម្ងាត់លេចធ្លាយ។
ផលប៉ះពាល់៖ ឃ្លាំងទិន្នន័យណាមួយដែលប្រើកំណែដែលប៉ះពាល់នៃ tj‑actions/changed‑files មានហានិភ័យនៃការលេចធ្លាយសម្ងាត់ ជាពិសេសប្រសិនបើថូខឹន ឬឯកសាររសើបត្រូវបានដោះស្រាយដោយមិនមានសុវត្ថិភាពក្នុងលំនាំឯកសារ ឬលទ្ធផល CI។
ហេតុអ្វីបានជាវាប៉ះពាល់ដល់លំហូរការងារដែលពឹងផ្អែកលើសកម្មភាពដែលអាចប្រើឡើងវិញបាន
លំហូរការងារ DevSecOps ពឹងផ្អែកយ៉ាងខ្លាំងទៅលើ tj-actions/changed-files ដើម្បី៖
- ស្វ័យប្រវត្តិ pull request ពិនិត្យ
- កំណត់អត្តសញ្ញាណឯកសារដែលបានផ្លាស់ប្តូរនៅក្នុងផ្លូវជាក់លាក់
- ជៀសវាងការងារ CI ដែលលែងត្រូវការ
ប៉ុន្តែលំហូរការងារទាំងនេះច្រើនតែមើលរំលងរឿងមួយ៖ របៀបដែលលំនាំ glob អាចរួមបញ្ចូលទិន្នន័យរសើប។ អ្នកអភិវឌ្ឍន៍សន្មតថា tj-actions/changed-files មានឥរិយាបទសុវត្ថិភាពតាមលំនាំដើម។ ទោះជាយ៉ាងណាក៏ដោយ ប្រសិនបើអ្នក glob ការកំណត់រចនាសម្ព័ន្ធ/** ហើយអាថ៌កំបាំងត្រូវបានរក្សាទុកនៅក្នុង configs/secrets.envអ្នកទើបតែបន្ថែមឯកសារសម្ងាត់ទៅក្នុងលទ្ធផល CI ឬកំណត់ហេតុ។ នោះមិនមែនជាកំហុសនៅក្នុង Action ទេ។ វាជា CI/CD ការបរាជ័យនៃការរចនាដែលនាំឱ្យមានការលេចធ្លាយព័ត៌មានសម្ងាត់។ CVE‑2025‑30066 គឺជាឧទាហរណ៍ច្បាស់លាស់មួយនៃរឿងនេះ។
របៀបដែលការលេចធ្លាយសម្ងាត់បានកើតឡើង (ការវិភាគភាពងាយរងគ្រោះ)
ចូរយើងស្រាយចម្ងល់អំពីចំណុចខ្សោយស្នូលនៅពីក្រោយ CVE‑2025‑30066៖
- លំនាំរលោងដូចជា **/*.env ឯកសារសម្ងាត់ត្រូវគ្នាដោយអចេតនា
- tj‑actions/changed‑files បានចាត់ទុកអាថ៌កំបាំងទាំងនោះជាឯកសារដែលបានផ្លាស់ប្តូរ
- អាថ៌កំបាំងបានបញ្ចប់នៅក្នុងលទ្ធផលជាជំហានៗ កំណត់ហេតុ ឬការងារបន្តបន្ទាប់
រឿងនេះបានកើតឡើងដោយសារតែអាថ៌កំបាំងត្រូវបានរក្សាទុកក្នុងផ្លូវដែលគ្រប់គ្រងដោយកំណែ (គំនិតមិនល្អ) ហើយការកំណត់រចនាសម្ព័ន្ធ CI មិនបានដកចេញពួកវាពីការបង្កើតជាដុំៗ (ក៏អាក្រក់ដែរ)។ ដូច្នេះវាមិនមែនជាកំហុសកូដទេ វាគឺជាអនាម័យការរចនា CI មិនល្អដែលបណ្តាលឱ្យមានការលេចធ្លាយសម្ងាត់ជាមួយនឹងលទ្ធផល tj-actions/changed-files។
ផ្លូវកេងប្រវ័ញ្ចជាក់ស្តែង៖ ពីការងារ CI រហូតដល់ការបង្ហាញលិខិតសម្គាល់
ឧទាហរណ៍នៃការរៀបចំ CI ដែលបណ្តាលឱ្យមានការលេចធ្លាយសម្ងាត់តាមរយៈ tj‑actions/changed‑files៖
If configs/secrets.env បានផ្លាស់ប្តូរ៖
- វាត្រូវបានសម្គាល់ដោយ tj‑actions/changed‑files
- វាត្រូវបានរួមបញ្ចូលនៅក្នុង steps.changed.outputs.all_changed_files
- ជំហានក្រោយៗទៀតបានកត់ត្រាវា ឬបញ្ជូនវាទៅស្គ្រីប ដែលធ្វើឲ្យលេចធ្លាយអាថ៌កំបាំង
ការលេចធ្លាយនេះបានកើតឡើងដោយសារតែតក្កវិជ្ជា CI បានចាត់ទុកការសម្ងាត់ដូចជាឯកសារធម្មតា។ នោះហើយជាកន្លែងដែលការលេចធ្លាយការសម្ងាត់ចាប់ផ្តើម មិនមែនដោយសារតែការហៀរចេញនៃសតិបណ្ដោះអាសន្ននោះទេ ប៉ុន្តែការប្រើប្រាស់ tj-actions/changed-files ខុសក្នុងការរចនា CI ដែលមានចំណុចខ្វះខាត។
ការបន្តពូជកើតឡើងជាមួយលទ្ធផលដូចជា៖
If secrets.env ស្ថិតនៅក្នុងបញ្ជីនោះ ឈ្មោះឯកសាររបស់វា និងប្រហែលជាខ្លឹមសារអាចលេចឡើងក្នុងកំណត់ហេតុបង្កើត។ សូម្បីតែតក្កវិជ្ជាតាមលក្ខខណ្ឌដូចជា៖
អាចបង្ហាញវត្ថុបុរាណដែលងាយរងគ្រោះ។ នេះគឺជា CI/CD ការបរាជ័យក្នុងការរចនាដែលអនុញ្ញាតឱ្យមានការលេចធ្លាយព័ត៌មានសម្ងាត់ មិនមែនជាចំណុចខ្វះខាតនៅក្នុងលេខកូដសកម្មភាពនោះទេ។
របៀបប្រើប្រាស់លំហូរការងារដែលអាចប្រើឡើងវិញបានដោយសុវត្ថិភាព និងការពារការលេចធ្លាយ
អ្នកមិនចាំបាច់បោះបង់ចោល tj-actions/changed-files ទេ។ អ្នកគួរតែប្រើ Actions ដែលអាចប្រើឡើងវិញបាន ដោយមានគំនិតផ្តោតលើអាថ៌កំបាំងជាមុនសិន៖
អាថ៌កំបាំង - ការអនុវត្តល្អបំផុតក្នុងការដោះស្រាយ
- កុំប្រើអាថ៌កំបាំងគ្រប់គ្រងកំណែឲ្យសោះ
- ជៀសវាងលំនាំរាងជារង្វង់ដែលត្រូវគ្នានឹងផ្លូវដែលងាយរងគ្រោះ
- ប្រើប្រាស់អាថ៌កំបាំងដែលមានមូលដ្ឋានលើបរិស្ថាន (GITHUB_ENV, vaults, GitHub Secrets)
CI/CD ការកំណត់រចនាសម្ព័ន្ធ Guardrails
- តែងតែខ្ទាស់សកម្មភាពទៅ SHA ដែលមិនអាចផ្លាស់ប្តូរបាន មិនមែនស្លាកទេ (កុំប្រើ @v45)
- ចាត់ទុកលទ្ធផល tj-actions/changed-files ថាមានមេរោគ សម្អាត ឬច្រោះវា
- កំណត់លទ្ធផលលុះត្រាតែបានសម្អាតរួច
⚠️ ឧទាហរណ៍មិនមានសុវត្ថិភាព:
ខាងលើនេះគឺជាការប្រើប្រាស់ខុសយ៉ាងពិតប្រាកដនៅពីក្រោយការលេចធ្លាយសម្ងាត់ និង CVE‑2025‑30066។
ជម្មើសជំនួសសុវត្ថិភាព៖
ដោយធ្វើបែបនេះ អ្នកជៀសវាងការ CI/CD ការបរាជ័យក្នុងការរចនា ដែលនាំឱ្យមានការលេចធ្លាយសម្ងាត់តាមរយៈ tj-actions/changed-files។
លើសពីនេះទៀត:
- បិទ ឬដាក់កម្រិតការកត់ត្រានៅកន្លែងដែលអាថ៌កំបាំងអាចលេចឡើង
- ប្រើមុខងារលាក់បាំងសម្ងាត់របស់ GitHub
- កំណត់ការចូលប្រើកំណត់ហេតុសាងសង់ និងវត្ថុបុរាណ
បញ្ជីត្រួតពិនិត្យការប្រើប្រាស់ CI ប្រកបដោយសុវត្ថិភាព អាថ៌កំបាំងរហ័ស
| ការអនុវត្តល្អបំផុត |
|---|
| កុំរក្សាទុកព័ត៌មានសម្ងាត់នៅក្នុងឯកសារដែលគ្រប់គ្រងដោយកំណែ |
| ប្រើ vaults ឬ GitHub Secrets សម្រាប់ព័ត៌មានបញ្ជាក់អត្តសញ្ញាណ |
| តែងតែភ្ជាប់ tj‑actions/changed‑files ទៅ SHA ដែលមិនអាចផ្លាស់ប្តូរបាន |
| ត្រង ឬសម្អាតលទ្ធផលពី tj‑actions/changed‑files |
| កុំបញ្ចូលផ្លូវសម្ងាត់ក្នុងលំនាំរាងមូល |
| បិទបាំង ឬដាក់កម្រិតកំណត់ហេតុដែលអាចបង្ហាញទិន្នន័យរសើប |
| ជាញឹកញាប់ សវនកម្មការកំណត់រចនាសម្ព័ន្ធ CI ដែលទទួលមរតក |
តួនាទីរបស់ Xygeni៖ ការអនុវត្តអាថ៌កំបាំង CI ក្នុងទ្រង់ទ្រាយធំ
ស៊ីហ្គេនី សន្ដិសុខ CI/CD pipelines ដោយផ្តោតលើ របៀបដែលអាថ៌កំបាំងត្រូវបានដោះស្រាយ ប្រើប្រាស់ និងលាតត្រដាងនៅក្នុងពិភពពិត លំហូរការងារ DevOps។ វាមិនមែនគ្រាន់តែអំពីការស្កេនកូដនោះទេ វាគឺអំពីការអនុវត្តការអនុវត្តល្អបំផុតនៃការគ្រប់គ្រងសម្ងាត់តាមរយៈការផ្សាយផ្ទាល់ pipeline ការវិភាគ។
ការរកឃើញការប្រើប្រាស់ទិន្នផលដែលមិនមានសុវត្ថិភាព
- ស្កេនសកម្មភាព GitHub សម្រាប់ការប្រើប្រាស់ echo, run, និងបញ្ចេញលទ្ធផល ដែល ${{ steps.*.outputs.* }} អាចរួមបញ្ចូលតម្លៃរសើប
- កំណត់ពេលដែលអាថ៌កំបាំងត្រូវបានយោង ឬបោះពុម្ពដោយផ្ទាល់ ដោយចេតនា ឬដោយកំហុស
ការតាមដានអាថ៌កំបាំងដែលលេចធ្លាយ
- រកឃើញតម្លៃអង់ត្រូពីខ្ពស់ (សោ API ថូខឹន) នៅក្នុងកំណត់ហេតុ និងលទ្ធផលជំហាន
- បង្កឲ្យមានការជូនដំណឹងនៅពេលដែលអាថ៌កំបាំងលេចឡើងក្នុង pipeline កំណត់ហេតុ ទោះបីជាត្រូវបានបិទបាំងនៅខាងក្រោមក៏ដោយ
ការប្រើប្រាស់សកម្មភាពដែលត្រូវបានកំណត់រចនាសម្ព័ន្ធមិនត្រឹមត្រូវ
- តាមដានសកម្មភាព GitHub ទាំងអស់នៅទូទាំង pipelineដើម្បីរកឃើញការប្រើប្រាស់កំណែដែលរងការសម្របសម្រួល (ឧ. tj-actions/changed-files@v45)
- សវនកម្មគំរូផ្គូផ្គងឯកសារដែលរួមបញ្ចូលអាថ៌កំបាំងដែលអាចកើតមានដូចជា **/*.env, *.key, ឬ .env.*
CI ផ្អែកលើគោលនយោបាយ Guardrails
- អនុវត្តការខ្ទាស់ SHA សម្រាប់សកម្មភាពភាគីទីបី
- ទប់ស្កាត់ការប្រើប្រាស់ឯកសារដែលមិនមានសុវត្ថិភាព ដែលអាចលួចយកអាថ៌កំបាំងទៅក្នុងកំណត់ហេតុ
- រារាំង pipelines ពីការបញ្ចេញតម្លៃរសើបជាផ្នែកមួយនៃលទ្ធផលលំហូរការងារ
ដោយចាត់ទុកដំណើរការការងារជាផ្នែកមួយនៃការគំរាមកំហែងរបស់អ្នក Xygeni ធានាថាអនាម័យសម្ងាត់មិនមែនគ្រាន់តែជាការអនុវត្តល្អបំផុតនោះទេ វាគឺជាការការពារដែលភ្ជាប់មកជាមួយ។
សេចក្តីសន្និដ្ឋាន៖ ការលេចធ្លាយសម្ងាត់អាចចាប់ផ្តើមដោយការប្រើប្រាស់ខុសសកម្មភាពសាមញ្ញមួយ
CVE‑2025‑30066 មិនមែនជាកំហុសបណ្ណាល័យទេ; វាគឺជា CI/CD ការបរាជ័យក្នុងការរចនាដែលបណ្តាលមកពីការប្រើប្រាស់ tj-actions/changed-files មិនត្រឹមត្រូវ។ អ្វីដែលក្រុម DevSecOps គួរយកចិត្តទុកដាក់៖
- ចាត់ទុករាល់ឯកសារយោង glob/file នៅក្នុង CI ជាចំណុចលេចធ្លាយដែលអាចកើតមាន
- ត្រួតពិនិត្យដំណើរការការងារជាប្រចាំសម្រាប់ការដាក់បញ្ចូលអាថ៌កំបាំងដោយចៃដន្យ
- ប្រើបន្ទប់សុវត្ថិភាព ឬអាថ៌កំបាំងបរិស្ថាន កុំពិនិត្យអាថ៌កំបាំងទៅក្នុងការគ្រប់គ្រងកំណែឲ្យសោះ
- សម្អាត ឬត្រងលទ្ធផលការងារទាំងអស់
- កត់ត្រាសកម្មភាពលំហូរការងារដែលងាយរងគ្រោះដើម្បីរក្សាភាពអាចធ្វើសវនកម្មបាន
CI គឺជាកូដ។ លំហូរការងារគឺជាកូដ។ កំណត់ហេតុ និងលទ្ធផលគឺជាកូដ។ ការពារអាថ៌កំបាំងរបស់អ្នកនៅគ្រប់ជំហាន ឬប្រថុយនឹងសេណារីយ៉ូលេចធ្លាយសម្ងាត់ដែលមិនត្រូវការអ្នកលួចចូលប្រព័ន្ធ គ្រាន់តែជារឿងអាក្រក់មួយប៉ុណ្ណោះ។ CI/CD ជម្រើសរចនា។





