tj-akcije/promijenjene-datoteke - CVE-2025-30066 - curenje tajnih podataka

CVE‑2025‑30066: Kada tj‑actions/changed‑files dovede do curenja tajnih podataka

Curenje tajnih podataka nije uvijek vezano za loš kod ili ranjive biblioteke. Ponekad se sve svodi na to kako upravljamo tajnim podacima tokom CI izvršavanja, a CVE‑2025‑30066 je školski primjer kako to može krenuti po zlu. GitHub akcija tj‑actions/changed‑files, koja se široko koristi za otkrivanje promijenjenih datoteka u pull requests, postao je tihi kanal za tajno curenje informacija. Evo šta se dogodilo i kako možete zaključati svoj CI/CD tajne pipeline.

Šta se dogodilo u slučaju CVE‑2025‑30066?

Sredinom marta 2025. godine, datoteka tj-actions/changed-files je bila kompromitovana. Napadač je prepisao postojeće oznake verzija (do v45.0.7) kako bi ukazivao na zlonamjerni softver. commitOvo je promijenilo ponašanje Akcije, a da programeri to nisu primijetili; nije objavljena nova verzija, samo nevidljivo mijenjanje oznaka.

Korisni teret je bio jednostavan, ali opasan: izvlačio je udaljeni Base64-kodirani Python skript koji je skenirao memoriju runnera u potrazi za vjerodajnicama, zapisivao ih u logove ili ih izvlačio. Ovo nije bila logička greška u kodu u tj-actions/changed-files; to je bila zloupotreba načina na koji se može dogoditi curenje tajnih podataka unutar CI radnih procesa korištenjem te višekratno upotrebljive akcije. CVE-2025-30066 nije se odnosio na prekoračenje bafera; radilo se o grešci u dizajnu CI-ja koja je omogućila curenje tajnih podataka.

Uticaj: Svaki repozitorij koji koristi pogođene verzije tj-akcija/promijenjenih datoteka rizikovao je curenje tajnih podataka, posebno ako su osjetljivi tokeni ili datoteke nesigurno obrađeni u obrascima datoteka ili CI izlazima.

Zašto ovo utiče na tokove rada koji se oslanjaju na akcije koje se mogu ponovo koristiti

DevSecOps tokovi rada u velikoj mjeri se oslanjaju na tj-akcije/promijenjene datoteke za:

  • Automatizujte pull request čekovi
  • Identifikujte promijenjene datoteke u određenim putanjama
  • Izbjegavajte suvišne CI poslove

Ali ovi tokovi rada često previđaju jednu stvar: kako glob obrasci mogu uključivati ​​osjetljive podatke. Programeri pretpostavljaju da se tj-actions/changed-files ponašaju sigurno po zadanim postavkama. Međutim, ako glob konfiguracije/** i tajne su pohranjene u configs/secrets.env, upravo ste dodali tajnu datoteku u CI izlaze ili zapise. To nije greška u Actionu; to je CI/CD greška u dizajnu koja dovodi do tajnog curenja informacija. CVE‑2025‑30066 je jasan primjer toga.

Kako je došlo do tajnog curenja informacija (Analiza ranjivosti)

Hajde da analiziramo ključni kvar koji stoji iza CVE‑2025‑30066:

  • Globirajući obrasci poput **/*.env nenamjerno podudarajući tajne datoteke
  • tj-actions/changed-files su tretirali te tajne datoteke kao promijenjene datoteke
  • Tajne su završile u izlazima koraka, logovima ili nizvodnim poslovima

Ovo se dogodilo jer su tajne vrijednosti pohranjene u putanjama kontroliranim verzijama (loša ideja), a CI konfiguracija ih nije eksplicitno isključila iz globbing-a (također loše). Dakle, nije riječ o grešci u kodu, već o lošoj higijeni CI dizajna koja uzrokuje curenje tajnih vrijednosti s izlazima tj-akcija/promijenjenih datoteka.

Praktična putanja iskorištavanja: Od CI posla do izlaganja akreditiva

Primjer CI postavke koja je uzrokovala curenje tajnih podataka kroz tj-akcije/promijenjene datoteke:

yaml jobs:   detect_changes:     runs‑on: ubuntu‑latest     steps:       ‑ uses: actions/checkout@v3       ‑ name: Check changed files         id: changed         uses: tj‑actions/changed‑files@v45         with:           files: configs/** 

If configs/secrets.env promijenjeno:

  • Označeno je od strane tj-actions/changed-files
  • Uključeno je u koraci.promijenjeni.izlazi.sve_promijenjene_datoteke
  • Kasniji koraci su to zapisali ili proslijedili skriptama, odajući tajne.

Do ovog curenja informacija došlo je jer je CI logika tretirala tajne podatke kao obične datoteke. Tu počinje curenje tajnih podataka, ne zbog prelijevanja bafera, već zbog zloupotrebe tj-akcija/promijenjenih datoteka u manjkavom CI dizajnu.

Širenje se dešava sa izlazima kao što su:

yaml ‑ name: Use changed file list   run: echo "Changed files: ${{ steps.changed.outputs.all_changed_files }}" 

If tajne.env se nalazi na toj listi, njegovo ime datoteke i eventualno sadržaj mogu se pojaviti u zapisnicima izgradnje. Čak i uslovna logika poput:

yaml if: contains(steps.changed.outputs.all_changed_files, 'secrets.env') 

Može otkriti osjetljive artefakte. Ovo je CI/CD Greška u dizajnu koja omogućava tajno curenje informacija, a ne greška u kodu akcije.

Kako sigurno koristiti višekratno upotrebljive radne tokove i spriječiti curenje

Ne morate napustiti tj-actions/changed-files. Trebali biste koristiti višekratno upotrebljive akcije s naglaskom na tajne:

Najbolje prakse za rukovanje tajnama

  • Nikada nemojte koristiti tajne kontrole verzija
  • Izbjegavajte glob obrasce koji odgovaraju osjetljivim putanjama
  • Koristite tajne zasnovane na okruženju (GITHUB_ENV, trezori, GitHub tajne)

CI/CD konfiguracija Guardrails

  • Uvijek prikači akcije na nepromjenjive SHA vrijednosti, a ne na oznake (nikada ne koristi @v45)
  • Tretirajte izlaz tj-akcija/promijenjenih datoteka kao zaražen, dezinficirajte ga ili filtrirajte
  • Postavi izlaze samo ako su sanirani

⚠️ Nesiguran primjer:

yaml jobs:   detect_changes:     runs‑on: ubuntu‑latest     steps:       ‑ uses: actions/checkout@v3       ‑ name: Detect all changes         id: changed         uses: tj‑actions/changed‑files@v45         with:           files: '**/*'  # ⚠️ This glob includes secrets.env, which may leak credentials 

Gore navedeno je upravo zloupotreba koja stoji iza tajnog curenja informacija i CVE‑2025‑30066.

Sigurna alternativa:

yaml jobs:   detect_changes:     runs‑on: ubuntu‑latest     steps:       ‑ uses: actions/checkout@v3       ‑ name: Detect non‑sensitive file changes         id: changed         uses: tj‑actions/changed‑files@<SHA>  # pinned to SHA         with:           files: 'src/**'           files‑ignore: '**/secrets.env'  # ⚠️ Excludes secret file 

Na taj način izbjegavate CI/CD Greška u dizajnu koja dovodi do curenja tajnih podataka putem tj-akcija/promijenjenih datoteka.

Dodatno:

  • Onemogućite ili ograničite zapisivanje podataka tamo gdje se mogu pojaviti tajne
  • Koristite tajne funkcije maskiranja na GitHub-u
  • Ograničite pristup zapisnicima i artefaktima izgradnje

Kontrolna lista za korištenje brzih tajni i sigurnih CI-jeva

Najbolja praksa
Ne pohranjujte tajne podatke u datotekama s kontrolom verzija
Koristite trezore ili GitHub Secrets za vjerodajnice
Uvijek prikači tj-akcije/promijenjene datoteke na nepromjenjive SHA-ove
Filtrirajte ili dezinficirajte izlaze iz tj-akcija/promijenjenih datoteka
Nikada ne uključujte tajne putanje u glob obrasce
Maskiranje ili ograničavanje logova koji mogu otkriti osjetljive podatke
Često revidirajte naslijeđene CI konfiguracije

Uloga Xygenija: Provođenje CI tajni u velikim razmjerima

Xygeni obezbje uje CI/CD pipelinefokusirajući se na kako se tajne rukuju, koriste i otkrivaju u stvarnom svijetu DevOps tokovi rada. Ne radi se samo o skeniranju koda; radi se o primjeni najboljih praksi upravljanja tajnom putem... pipeline analiza.

Detekcija nesigurnog korištenja izlaza

  • Skenira GitHub akcije za upotrebu echo, run i ispisuje gdje ${{ steps.*.outputs.* }} može uključivati ​​osjetljive vrijednosti
  • Identifikuje kada se tajne referenciraju ili ispisuju direktno, namjerno ili greškom

Praćenje procurjelih tajni

  • Detektira vrijednosti visoke entropije (API ključeve, tokene) unutar logova i izlaza koraka
  • Aktivira upozorenja kada se tajne pojave u pipeline logovi, čak i ako su maskirani nizvodno

Pogrešno konfigurirana upotreba radnje

  • Prati sve GitHub akcije pipelineza otkrivanje korištenja kompromitovanih verzija (npr. tj-akcije/promijenjene-datoteke@v45)
  • Provjerava obrasce podudaranja datoteka koji uključuju potencijalne tajne poput **/*.env, *.key ili .env.*

Konkurencijska sigurnost zasnovana na politikama Guardrails

  • Nameće SHA-pinning za akcije trećih strana
  • Blokira korištenje nesigurnih globova datoteka koji bi mogli pomesti tajne u logove
  • Sprječava pipelineod emitovanja osjetljivih vrijednosti kao dijela izlaza radnog toka

Tretiranjem radnih procesa kao dijela vaše površine prijetnji, Xygeni osigurava da tajna higijena nije samo najbolja praksa, već i ugrađena odbrana.

Zaključak: Tajno curenje informacija može započeti jednostavnom radnjom ili zloupotrebom

CVE‑2025‑30066 nije bio greška u biblioteci; to je bio CI/CD Neuspjeh u dizajnu koji proizlazi iz nepravilne upotrebe tj-akcija/promijenjenih datoteka. Šta bi DevSecOps timovi trebali naučiti:

  • Tretira svaku referencu globa/datoteke u CI kao potencijalnu tačku curenja
  • Redovno provjeravajte tokove rada radi slučajnog uključivanja tajni
  • Koristite sigurne trezore ili tajne okruženja, nikada ne provjeravajte tajne u kontroli verzija
  • Sanitizirajte ili filtrirajte sve izlaze radnog procesa
  • Zabilježite osjetljive aktivnosti toka rada kako biste održali mogućnost revizije

Konfidencijalna integracija je kod. Tokovi rada su kod. Zapisnici i izlazi su kod. Čuvajte svoje tajne u svakom koraku ili riskirajte scenario curenja tajne koji ne treba hakera, već samo lošeg... CI/CD izbor dizajna.

sca-tools-software-alati-za-analizu-sastava
Prioritizirajte, sanirajte i osigurajte softverske rizike
Nabavite svoj besplatni račun.
Nije potrebna kreditna kartica.

Osigurajte svoj razvoj i isporuku softvera

sa Xygeni paketom proizvoda