tj-actions/changed-files - CVE-2025-30066 - საიდუმლო გაჟონვა

CVE‑2025‑30066: როდესაც tj-მოქმედებები/შეცვლილი ფაილები საიდუმლო ინფორმაციის გაჟონვას იწვევს

სარჩევი

აუცილებლად წასაკითხი პოსტები

საინტერესო უახლესი პოსტები

საიდუმლო გაჟონვა ყოველთვის არ არის დაკავშირებული ცუდ კოდთან ან დაუცველ ბიბლიოთეკებთან. ზოგჯერ საქმე ეხება იმას, თუ როგორ ვმართავთ საიდუმლოებებს CI გაშვების დროს და CVE‑2025‑30066 არის სახელმძღვანელოს მაგალითი იმისა, თუ როგორ შეიძლება ეს არასწორად წარიმართოს. GitHub Action tj‑actions/changed‑files, ფართოდ გამოიყენება შეცვლილი ფაილების აღმოსაჩენად pull requests, საიდუმლო ინფორმაციის გაჟონვის ჩუმ არხად იქცა. აი, რა მოხდა და როგორ შეგიძლიათ თქვენი CI/CD საიდუმლოების pipeline.

რა მოხდა CVE‑2025‑30066-ში?

2025 წლის მარტის შუა რიცხვებში, tj-actions/changed-files კომპრომეტირებული იყო. თავდამსხმელმა არსებული ვერსიის თეგები (v45.0.7-მდე) გადაწერა, რათა მავნე პროგრამაზე მიუთითოს. commitამან შეცვალა მოქმედების ქცევა დეველოპერების მიერ შეუმჩნევლად; ახალი ვერსია არ გამოვიდა, მხოლოდ უხილავი ტეგის გაყალბება მოხდა.

დატვირთვა მარტივი, მაგრამ სახიფათო იყო: ის იყენებდა დისტანციურ Base64-ში დაშიფრულ Python სკრიპტს, რომელიც სკანირებდა მორბენალ მეხსიერებას ავტორიზაციის მონაცემების მოსაძებნად, ატვირთავდა მათ ჟურნალებში ან იშორებდა მათ. ეს არ იყო ლოგიკური კოდის ხარვეზი tj-actions/changed-files-ში; ეს იყო საიდუმლო გაჟონვის ბოროტად გამოყენება CI სამუშაო პროცესებში ამ მრავალჯერადი გამოყენების მოქმედების გამოყენებით. CVE‑2025‑30066 არ ეხებოდა ბუფერულ გადავსებას; ეს ეხებოდა CI დიზაინის შეცდომას, რამაც საიდუმლოებების გაჟონვა გამოიწვია.

გავლენა: ნებისმიერი საცავი, რომელიც იყენებდა tj-მოქმედებების/შეცვლილი ფაილების დაზარალებულ ვერსიებს, საიდუმლო ინფორმაციის გაჟონვის რისკს ქმნიდა, განსაკუთრებით თუ მგრძნობიარე ტოკენები ან ფაილები ფაილების შაბლონებში ან CI გამომავალ მონაცემებში დაუცველად დამუშავდებოდა.

რატომ მოქმედებს ეს სამუშაო პროცესებზე, რომლებიც დამოკიდებულია განმეორებით გამოყენებად მოქმედებებზე

DevSecOps-ის სამუშაო პროცესები დიდად არიან დამოკიდებული tj-მოქმედებებზე/შეცვლილ ფაილებზე შემდეგი მიზნებისთვის:

  • ავტომატიზირება pull request ამოწმებს
  • შეცვლილი ფაილების იდენტიფიცირება კონკრეტულ ბილიკებზე
  • თავიდან აიცილეთ ზედმეტი CI სამუშაოები

თუმცა, ეს სამუშაო პროცესები ხშირად ერთ რამეს უგულებელყოფენ: როგორ შეიძლება გლობალური შაბლონები მოიცავდეს მგრძნობიარე მონაცემებს. დეველოპერები ვარაუდობენ, რომ tj-მოქმედებები/შეცვლილი ფაილები ნაგულისხმევად უსაფრთხოდ იქცევა. თუმცა, თუ გლობალურ კონფიგურაციები/** და საიდუმლოებები ინახება configs/secrets.env, თქვენ ახლახან დაამატეთ საიდუმლო ფაილი CI გამომავალ მონაცემებში ან ჟურნალებში. ეს არ არის შეცდომა მოქმედებაში; ეს არის CI/CD დიზაინის ჩავარდნა, რაც საიდუმლო ინფორმაციის გაჟონვას იწვევს. CVE‑2025‑30066 ამის ნათელი მაგალითია.

როგორ მოხდა საიდუმლო გაჟონვა (დაუცველობის ანალიზი)

მოდით, გავხსნათ CVE‑2025‑30066-ის ბირთვის გაუმართაობის მიზეზი:

  • გლობალური ნიმუშები, როგორიცაა **/*.env შემთხვევით დაემთხვა საიდუმლო ფაილებს
  • tj‑actions/changed‑files ამ საიდუმლოებებს შეცვლილ ფაილებად მიიჩნევდა.
  • საიდუმლოებები აღმოჩნდა ეტაპობრივ გამომავალ დოკუმენტებში, ჟურნალებში ან ქვედა დინებაში არსებულ სამუშაოებში.

ეს იმიტომ მოხდა, რომ საიდუმლოებები ინახებოდა ვერსიით კონტროლირებად ბილიკებზე (ცუდი იდეაა) და CI კონფიგურაცია მათ გლობალური შენახვისგან აშკარად არ გამორიცხავდა (ასევე ცუდი იდეაა). ასე რომ, ეს კოდის შეცდომა არ არის, ეს CI დიზაინის ცუდი ჰიგიენაა, რაც იწვევს საიდუმლოების გაჟონვას tj-მოქმედებების/შეცვლილი ფაილების გამომავალ მონაცემებში.

პრაქტიკული გამოყენების გზა: CI სამსახურიდან კვალიფიკაციის ამაღლებამდე

CI-ის დაყენების მაგალითი, რომელმაც გამოიწვია საიდუმლო ინფორმაციის გაჟონვა tj-მოქმედებების/შეცვლილი ფაილების მეშვეობით:

If configs/secrets.env შეიცვალა:

  • ეს მონიშნული იყო tj-actions/changed-files-ის მიერ
  • ის შევიდა steps.changed.outputs.all_changed_files
  • შემდგომმა ნაბიჯებმა ის აღრიცხა ან სკრიპტებს გადასცა, რითაც საიდუმლოებები გაჟონა.

ეს გაჟონვა იმიტომ მოხდა, რომ CI ლოგიკა საიდუმლოებებს ჩვეულებრივი ფაილებივით ეპყრობოდა. სწორედ აქედან იწყება საიდუმლო გაჟონვა, არა ბუფერული გადავსების, არამედ tj-მოქმედებების/შეცვლილი ფაილების არასწორი გამოყენების გამო CI-ის არასრულყოფილ დიზაინში.

გავრცელება ხდება ისეთი გამომავალი სიგნალებით, როგორიცაა:

If secrets.env თუ ამ სიაშია, მისი ფაილის სახელი და შესაძლოა შინაარსიც კი შეიძლება გამოჩნდეს შექმნის ჟურნალებში. ისეთი პირობითი ლოგიკაც კი, როგორიცაა:

შეიძლება გამოავლინოს მგრძნობიარე არტეფაქტები. ეს არის CI/CD დიზაინის შეცდომა, რომელიც საიდუმლოს გაჟონვას იწვევს და არა მოქმედების კოდის ხარვეზი.

როგორ გამოვიყენოთ უსაფრთხოდ მრავალჯერადი სამუშაო პროცესები და თავიდან ავიცილოთ გაჟონვა

არ არის საჭირო tj-მოქმედებების/შეცვლილი ფაილების მიტოვება. მრავალჯერადი გამოყენების მოქმედებები უნდა გამოიყენოთ საიდუმლოებების პრიორიტეტულობის გათვალისწინებით:

საიდუმლოებების დამუშავების საუკეთესო პრაქტიკა

  • ვერსიის კონტროლის საიდუმლოებებს არასდროს გაამხელთ
  • მოერიდეთ გლობალურ შაბლონებს, რომლებიც შეესაბამება მგრძნობიარე ბილიკებს
  • გარემოზე დაფუძნებული საიდუმლოებების გამოყენება (GITHUB_ENV, სარდაფები, GitHub საიდუმლოებები)

CI/CD კონფიგურაცია Guardrails

  • მოქმედებები ყოველთვის მიამაგრეთ უცვლელ SHA-ებზე და არა თეგებზე (არასდროს გამოიყენოთ) @v45)
  • tj-მოქმედებების/შეცვლილი ფაილების გამომავალი მონაცემების დაბინძურებულად მიჩნევა, მათი დეზინფექცია ან გაფილტვრა.
  • გამომავალი სიმძლავრეების დაყენება მხოლოდ დეზინფექციის შემდეგ

⚠️ სახიფათო მაგალითი:

ზემოთქმული ზუსტად ისაა, რაც საიდუმლო გაჟონვისა და CVE‑2025‑30066-ის ბოროტად გამოყენების საფუძველს წარმოადგენს.

უსაფრთხო ალტერნატივა:

ამით თქვენ თავიდან აიცილებთ CI/CD დიზაინის შეცდომა, რომელიც იწვევს საიდუმლო ინფორმაციის გაჟონვას tj-actions/changed-files-ის საშუალებით.

გარდა ამისა:

  • გამორთეთ ან შეზღუდეთ ჟურნალირება იმ ადგილებში, სადაც შეიძლება გამოჩნდეს საიდუმლოებები
  • გამოიყენეთ GitHub-ის საიდუმლო ნიღბის ფუნქციები
  • შეზღუდეთ მშენებლობის ჟურნალებსა და არტეფაქტებზე წვდომა

სწრაფი საიდუმლოებები - CI-ს უსაფრთხო გამოყენების საკონტროლო სია

საუკეთესო პრაქტიკა
არ შეინახოთ საიდუმლოებები ვერსიაზე კონტროლირებად ფაილებში
გამოიყენეთ სარდაფები ან GitHub Secrets ავტორიზაციისთვის
tj-მოქმედებების/შეცვლილი ფაილების ყოველთვის მიმაგრება უცვლელ SHA-ებში
tj-მოქმედებებიდან/შეცვლილი ფაილებიდან გამომავალი მონაცემების გაფილტვრა ან დეზინფექცია
არასდროს ჩართოთ საიდუმლო ბილიკები გლობალურ შაბლონებში
კონფიდენციალური მონაცემების გამჟღავნების მიზნით, შესაძლოა შენიღბოთ ან შეზღუდოთ ჟურნალები.
აუდიტის მემკვიდრეობით მიღებული CI კონფიგურაციები ხშირად

Xygeni-ს როლი: CI საიდუმლოებების მასშტაბური აღსრულება

ქსიგენი იცავს CI/CD pipelineფოკუსირებით როგორ ხდება საიდუმლოებების დამუშავება, გამოყენება და გამჟღავნება რეალურ სამყაროში DevOps სამუშაო პროცესები. საქმე მხოლოდ კოდის სკანირებას არ ეხება; საქმე ეხება საიდუმლო მართვის საუკეთესო პრაქტიკის განხორციელებას პირდაპირი ეთერის მეშვეობით. pipeline ანალიზი.

სახიფათო გამომავალი გამოყენების აღმოჩენა

  • სკანირებს GitHub-ის მოქმედებებს გამოყენებისთვის echo, run და outputs სადაც ${{ steps.*.outputs.* }} შეიძლება შეიცავდეს მგრძნობიარე მნიშვნელობებს
  • განსაზღვრავს, როდის არის საიდუმლოებები მითითებული ან დაბეჭდილი პირდაპირ, განზრახ ან შეცდომით.

გაჟონილი საიდუმლოებების მონიტორინგი

  • ლოგებსა და ნაბიჯების გამოსავალში აფიქსირებს მაღალი ენტროპიის მნიშვნელობებს (API გასაღებები, ტოკენები)
  • ააქტიურებს შეტყობინებებს, როდესაც საიდუმლოებები გამოჩნდება pipeline მორები, თუნდაც ქვედა დინებაზე ნიღბიანი იყოს

არასწორად კონფიგურირებული მოქმედების გამოყენება

  • აკონტროლებს GitHub-ის ყველა მოქმედებას pipelineკომპრომეტირებული ვერსიების გამოყენების აღმოსაჩენად (მაგ., tj-მოქმედებები/შეცვლილი ფაილები@v45)
  • ამოწმებს ფაილების შესაბამისობის ნიმუშებს, რომლებიც მოიცავს პოტენციურ საიდუმლოებებს, როგორიცაა **/*.env, *.key ან .env.*

პოლიტიკაზე დაფუძნებული CI Guardrails

  • მესამე მხარის ქმედებებისთვის SHA-pinning-ის აღსრულება
  • ბლოკავს სახიფათო ფაილების გლობების გამოყენებას, რომლებმაც შეიძლება საიდუმლოებები შეიტანონ ჟურნალებში.
  • ხელს უშლის pipelineსამუშაო პროცესის გამომავალი მონაცემების ნაწილად მგრძნობიარე მნიშვნელობების გამოსხივებისგან

სამუშაო პროცესების თქვენი საფრთხის ზედაპირის ნაწილად მიჩნევით, Xygeni უზრუნველყოფს, რომ საიდუმლო ჰიგიენა არა მხოლოდ საუკეთესო პრაქტიკაა, არამედ ჩაშენებული დაცვა.

დასკვნა: საიდუმლო გაჟონვა შეიძლება დაიწყოს მარტივი მოქმედებით ან ბოროტად გამოყენებით.

CVE‑2025‑30066 ბიბლიოთეკის შეცდომა არ იყო; ეს იყო CI/CD დიზაინის ხარვეზი, რომელიც გამოწვეულია tj-მოქმედებების/შეცვლილი ფაილების არასათანადო გამოყენებით. რა უნდა გაითვალისწინონ DevSecOps გუნდებმა:

  • CI-ში ყველა გლობალური/ფაილის მითითება პოტენციურ გაჟონვის წერტილად განიხილეთ
  • რეგულარულად შეამოწმეთ სამუშაო პროცესები საიდუმლოებების შემთხვევითი ჩართვის აღმოსაჩენად
  • გამოიყენეთ დაცული საცავები ან გარემოს საიდუმლოებები, არასოდეს შეამოწმოთ საიდუმლოებები ვერსიის კონტროლში.
  • ყველა სამუშაო პროცესის გამომავალი გაასუფთავეთ ან გაფილტრეთ
  • აღრიცხეთ მგრძნობიარე სამუშაო პროცესის აქტივობა აუდიტის შესანარჩუნებლად

CI კოდია. სამუშაო პროცესები კოდია. ლოგები და გამომავალი მონაცემები კოდია. დაიცავით თქვენი საიდუმლოებები ყოველ ნაბიჯზე, წინააღმდეგ შემთხვევაში რისკავთ საიდუმლო გაჟონვის სცენარს, რომელსაც ჰაკერი არ სჭირდება, მხოლოდ ცუდი... CI/CD დიზაინის არჩევანი.

sca-tools-software-composition-analysis-tools
თქვენი პროგრამული უზრუნველყოფის რისკების პრიორიტეტიზაცია, გამოსწორება და დაცვა
მიიღეთ თქვენი უფასო ანგარიში.
საკრედიტო ბარათი არ არის საჭირო.

უზრუნველყავით თქვენი პროგრამული უზრუნველყოფის შემუშავება და მიწოდება

Xygeni Product Suite-თან ერთად