tj-actions/changed-files - CVE-2025-30066 - ការលេចធ្លាយសម្ងាត់

CVE‑2025‑30066: នៅពេលដែល tj‑actions/changed‑files នាំឱ្យមានការលេចធ្លាយសម្ងាត់

​មាតិកា

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

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

ការលេចធ្លាយព័ត៌មានសម្ងាត់មិនមែនតែងតែទាក់ទងនឹងកូដមិនល្អ ឬបណ្ណាល័យងាយរងគ្រោះនោះទេ។ ពេលខ្លះ វាអាស្រ័យលើរបៀបដែលយើងគ្រប់គ្រងព័ត៌មានសម្ងាត់ក្នុងអំឡុងពេលដំណើរការ 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 ជម្រើសរចនា។

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

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

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