tj-actions/changed-files - CVE-2025-30066 - slaptas nutekėjimas

CVE‑2025‑30066: Kai veiksmai / pakeisti failai sukelia slaptos informacijos nutekėjimą

Paslapties nutekėjimas ne visada susijęs su blogu kodu ar pažeidžiamomis bibliotekomis. Kartais viskas priklauso nuo to, kaip tvarkome paslaptis CI vykdymo metu, o CVE-2025-30066 yra vadovėlinis pavyzdys, kaip tai gali būti netiesiogiai. „GitHub“ veiksmas „tj-actions/changed-files“, plačiai naudojamas pakeistiems failams aptikti pull requests, tapo tyliu kanalu slaptam informacijos nutekėjimui. Štai kas nutiko ir kaip galite užrakinti savo CI/CD paslaptys pipeline.

Kas nutiko CVE‑2025‑30066 byloje?

2025 m. kovo viduryje „tj-actions/changed-files“ buvo pažeista. Užpuolikas perrašė esamas versijų žymas (iki v45.0.7), kad jos nukreiptų į kenkėjišką programą. commitTai pakeitė „Action“ elgseną kūrėjams to nepastebint; nebuvo išleista jokia nauja versija, tik nematomas žymų klastojimas.

Naudingoji apkrova buvo paprasta, bet pavojinga: ji ištraukė nuotolinį „Base64“ koduojamą „Python“ scenarijų, kuris nuskaitė vykdymo programos atmintį, ieškodamas kredencialų, įkeldamas juos į žurnalus arba išfiltruodamas. Tai nebuvo loginis kodo trūkumas „tj-actions“ / „changed-file“ failuose; tai buvo piktnaudžiavimas tuo, kaip slapti duomenys gali nutekėti integracijos (CI) darbo eigose naudojant tą pakartotinai naudojamą veiksmą. CVE-2025-30066 buvo ne apie buferio perpildymą; tai buvo apie integracijos (CI) projektavimo klaidą, dėl kurios galėjo nutekėti slapti duomenys.

Poveikis: Bet kokia saugykla, naudojanti paveiktas „tj-actions“ / „changed-files“ versijas, rizikavo nutekėti slaptą informaciją, ypač jei failų šablonuose arba CI išvestyse buvo nesaugiai tvarkomi jautrūs prieigos raktai arba failai.

Kodėl tai veikia darbo eigas, pagrįstas daugkartinio naudojimo veiksmais

„DevSecOps“ darbo eigos labai priklauso nuo tj veiksmų / pakeistų failų, kad:

  • Automatizuoti pull request patikrinimai
  • Nustatykite pakeistus failus konkrečiuose keliuose
  • Venkite nereikalingų CI užduočių

Tačiau šie darbo srautai dažnai nepaiso vieno dalyko: kaip glob šablonai gali apimti jautrius duomenis. Kūrėjai daro prielaidą, kad tj veiksmai / pakeisti failai pagal numatytuosius nustatymus veikia saugiai. Tačiau, jei jūs glob konfigūracijos/** ir paslaptys saugomos konfigūracijos/paslaptys.aplinka, ką tik pridėjote slaptą failą prie CI išvesčių arba žurnalų. Tai ne veiksmo klaida; tai yra CI/CD Dizaino klaida, dėl kurios nuteka slapta informacija. CVE-2025-30066 yra aiškus to pavyzdys.

Kaip įvyko slaptas nutekėjimas (pažeidžiamumo analizė)

Išsiaiškinkime pagrindinę klaidą, dėl kurios kilo CVE‑2025‑30066:

  • Globbing modeliai, tokie kaip **/*.aplinka netyčia sutapo su slaptais failais
  • „tj-actions/changed-files“ šiuos slaptus duomenis laikė pakeistais failais.
  • Paslaptys atsidūrė žurnaluose, žurnaluose arba tolesnėse užduotyse

Taip atsitiko todėl, kad paslaptys buvo saugomos versijų kontroliuojamuose keliuose (bloga mintis), o CI konfigūracija aiškiai nenumatė, kad jos būtų įtrauktos į globą (taip pat blogai). Taigi tai ne kodo klaida, o prasta CI projektavimo higiena, dėl kurios paslaptys nuteka su tj veiksmų / pakeistų failų išvestimis.

Praktinis išnaudojimo kelias: nuo CI darbo iki kvalifikacijos įgijimo

CI sąrankos, dėl kurios nutekėjo slapta informacija per tj veiksmus / pakeistus failus, pavyzdys:

If konfigūracijos/paslaptys.aplinka pakeistas:

  • Tai pažymėjo „tj-actions/changed-files“.
  • Jis buvo įtrauktas į steps.changed.outputs.all_changed_files
  • Vėlesni veiksmai jį užregistravo arba perdavė scenarijams, nutekinti paslaptis

Šis nutekėjimas įvyko todėl, kad CI logika apdorojo paslaptis kaip įprastus failus. Būtent čia ir prasideda slaptų duomenų nutekėjimas ne dėl buferio perpildymo, o dėl netinkamo veiksmų / pakeistų failų naudojimo ydingame CI projekte.

Propimacija vyksta su tokiais rezultatais kaip:

If paslaptys.aplinka yra tame sąraše, jo failo pavadinimas ir galbūt turinys gali būti rodomi kūrimo žurnaluose. Netgi sąlyginė logika, pvz.:

Gali atskleisti jautrius artefaktus. Tai yra CI/CD Dizaino klaida, leidžianti nutekėti slaptai informacijai, o ne Veiksmo kodo trūkumas.

Kaip saugiai naudoti daugkartinio naudojimo darbo eigas ir išvengti nuotėkio

Jums nereikia atsisakyti „tj actions“ / pakeistų failų. Turėtumėte naudoti daugkartinio naudojimo veiksmus, pirmiausia atsižvelgdami į paslaptis:

Geriausia paslapčių tvarkymo praktika

  • Niekada nekontroliuokite versijų paslapčių
  • Venkite glob šablonų, kurie atitinka jautrius kelius
  • Naudokite aplinkos pagrindu veikiančius slaptus raktus (GITHUB_ENV, saugyklos, „GitHub“ slapti raktai)

CI/CD Konfigūracija Guardrails

  • Visada prisekite veiksmus prie nekintamų SHA, o ne prie žymų (niekada nenaudokite @v45)
  • Tvarkyti „tj actions“ / „changed files“ išvestį kaip užterštą, ją valyti arba filtruoti.
  • Nustatyti išvestis tik tada, kai jos yra išvalytos

⚠️ Nesaugus pavyzdys:

Aukščiau minėtas piktnaudžiavimas yra būtent tas, dėl kurio slapta nutekinama ir vykdomas CVE-2025-30066.

Saugi alternatyva:

Taip elgdamiesi išvengsite, CI/CD projektavimo klaida, dėl kurios gali nutekėti slapta informacija per „tj“ veiksmus / pakeistus failus.

Papildomai:

  • Išjunkite arba apribokite registravimą ten, kur gali būti rodomos paslaptys
  • Naudokite „GitHub“ slapto maskavimo funkcijas
  • Apriboti prieigą prie kūrimo žurnalų ir artefaktų

Greitas „Secrets“ – saugaus CI naudojimo kontrolinis sąrašas

Geriausia praktika
Nesaugokite paslapčių versijomis kontroliuojamuose failuose
Naudokite saugyklas arba „GitHub Secrets“ kaip kredencialus
Visada prisegti tj veiksmus / pakeistus failus prie nekeičiamų SHA
Filtruoti arba valyti išvestis iš tj veiksmų / pakeistų failų
Niekada neįtraukite slaptų kelių į glob šablonus
Užmaskuoti arba apriboti žurnalus, kurie gali atskleisti neskelbtinus duomenis
Dažnai tikrinkite paveldėtas CI konfigūracijas

Xygeni vaidmuo: CI paslapčių užtikrinimas dideliu mastu

Ksigeni užtikrina CI/CD pipelinesutelkiant dėmesį į kaip paslaptys yra tvarkomos, naudojamos ir atskleidžiamos realiame pasaulyje „DevOps“ darbo eigos. Kalbama ne tik apie kodo nuskaitymą, bet ir apie slaptų valdymo praktikų įgyvendinimą tiesioginio perdavimo metu. pipeline analizė.

Nesaugaus išvesties naudojimo aptikimas

  • Nuskaito „GitHub“ veiksmus dėl naudojimo echo, run ir outputs, kur ${{ steps.*.outputs.* }} gali būti jautrių verčių
  • Nustato, kada paslaptys yra tiesiogiai, tyčia ar per klaidą nurodomos arba atspausdinamos

Nutekėjusių paslapčių stebėjimas

  • Aptinka didelės entropijos reikšmes (API raktus, žetonus) žurnaluose ir žingsnių išvestyse
  • Suaktyvina įspėjimus, kai atsiranda paslapčių pipeline žurnalai, net jei jie užmaskuoti pasroviui

Neteisingai sukonfigūruotas veiksmo naudojimas

  • Seka visus „GitHub“ veiksmus pipelineaptikti pažeistų versijų naudojimą (pvz., tj-actions/changed-files@v45)
  • Audito failų atitikimo šablonai, apimantys potencialias paslaptis, pvz. **/*.env, *.key arba .env.*

Politikos pagrindu veikianti CI Guardrails

  • Priverčia SHA prisegimą trečiųjų šalių veiksmams
  • Blokuoja nesaugių failų grupių, kurios galėtų įtraukti slaptus duomenis į žurnalus, naudojimą
  • Neleidžia pipelines išskleisti jautrias vertes kaip darbo eigos išvesties dalį

Laikydami darbo eigas savo grėsmių paviršiaus dalimi, „Xygeni“ užtikrina, kad slapta higiena būtų ne tik geriausia praktika, bet ir integruota gynyba.

Išvada: slaptas nutekėjimas gali prasidėti nuo paprasto piktnaudžiavimo veiksmais

CVE‑2025‑30066 nebuvo bibliotekos klaida; tai buvo CI/CD projektavimo klaida, kylanti dėl netinkamo TJ veiksmų / pakeistų failų naudojimo. Ką „DevSecOps“ komandos turėtų suprasti:

  • Kiekvieną CI esančią glob/failo nuorodą traktuokite kaip galimą nuotėkio vietą
  • Reguliariai tikrinkite darbo eigas, ar netyčia neįtrauktos paslaptys
  • Naudokite saugius saugyklos raktus arba aplinkos paslaptis, niekada neregistruokite paslapčių versijų valdymo sistemoje
  • Išvalyti arba filtruoti visus darbo eigos rezultatus
  • Registruokite jautrią darbo eigos veiklą, kad išlaikytumėte audituojamumą

CI yra kodas. Darbo eigos yra kodas. Žurnalai ir išvestys yra kodas. Saugokite savo paslaptis kiekviename žingsnyje arba rizikuokite slaptos informacijos nutekėjimu, kuriam nereikia įsilaužėlio, tik blogo... CI/CD dizaino pasirinkimas.

sca-tools-software-composition-analyses-tools
Prioritetizuoti, pašalinti ir apsaugoti savo programinės įrangos rizikas
Gaukite nemokamą paskyrą.
Nebūtina kreditinės kortelės.

Apsaugokite savo programinės įrangos kūrimą ir tiekimą

su „Xygeni“ produktų rinkiniu