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

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

Curenje tajnih podataka nije uvijek povezano s lošim kodom ili ranjivim bibliotekama. Ponekad se sve svodi na to kako upravljamo tajnim podacima tijekom 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 što se dogodilo i kako možete zaključati svoje CI/CD tajne pipeline.

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

Sredinom ožujka 2025. kompromitirana je datoteka tj-actions/changed-files. Napadač je prepisao postojeće oznake verzija (do v45.0.7) kako bi ukazivale na zlonamjerni program. commitTo je promijenilo ponašanje Akcije, a da to programeri nisu primijetili; nije objavljena nova verzija, samo nevidljivo mijenjanje oznaka.

Korisni teret bio je jednostavan, ali opasan: izvukao je udaljenu Python skriptu kodiranu Base64 koja je skenirala memoriju runnera u potrazi za vjerodajnicama, ispisujući ih u zapisnike ili ih izdvajajući. Ovo nije bila logička greška u kodu u tj-actions/changed-files; to je bila zlouporaba načina na koji se može dogoditi curenje tajni unutar CI tijekova rada pomoću te višekratno upotrebljive akcije. CVE-2025-30066 nije se odnosio na prelijevanje međuspremnika; radilo se o kvaru u dizajnu CI-ja koji je omogućio curenje tajni.

Utjecaj: Svako spremište koje koristi pogođene verzije tj-akcija/promijenjenih datoteka riskiralo je curenje tajnih podataka, posebno ako su osjetljivi tokeni ili datoteke nesigurno obrađeni u uzorcima datoteka ili CI izlazima.

Zašto ovo utječe na tijekove rada koji se oslanjaju na radnje koje se mogu ponovno koristiti

DevSecOps tijekovi rada uvelike se oslanjaju na tj-akcije/promijenjene datoteke za:

  • automatizirati pull request Provjere
  • Identificirajte promijenjene datoteke u određenim putanjama
  • Izbjegavajte suvišne CI poslove

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

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

Analizirajmo 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, zapisnicima ili nizvodnim poslovima

To se dogodilo jer su tajne vrijednosti pohranjene u putanjama kontroliranim verzijama (loša ideja), a CI konfiguracija ih nije eksplicitno isključila iz globbiranja (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čni put iskorištavanja: Od CI posla do izloženosti vjerodajnicama

Primjer CI postavke koja je uzrokovala curenje tajnih podataka putem tj-akcija/promijenjenih datoteka:

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 pomoću tj-actions/changed-files
  • Uključeno je u koraci.promijenjeni.izlazi.sve_promijenjene_datoteke
  • Kasniji koraci su to zabilježili ili proslijedili skriptama, odajući tajne

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

Širenje se događa s izlazima poput:

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

If tajne.env je na tom popisu, njegov naziv datoteke i eventualno sadržaj mogu se pojaviti u zapisnicima izrade. Čak i uvjetna 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ćuje tajno curenje, a ne greška u kodu akcije.

Kako sigurno koristiti višekratno upotrebljive radne procese 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 uzorke koji odgovaraju osjetljivim putanjama
  • Koristite tajne temeljene na okruženju (GITHUB_ENV, trezori, GitHub tajne)

CI/CD konfiguracija Guardrails

  • Uvijek prikvači akcije na nepromjenjive SHA-ove, 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 dezinficirani

⚠️ 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 zlouporaba 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 

Time izbjegavate CI/CD neuspjeh u dizajnu koji 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 GitHubove tajne značajke maskiranja
  • Ograniči pristup zapisnicima i artefaktima izgradnje

Kontrolni popis za korištenje sigurnosne konfiguracije (CI) za brzi pristup Secrets

Najbolja vježba
Ne pohranjujte tajne podatke u datoteke s kontroliranim verzijama
Koristite trezore ili GitHub Secrets za vjerodajnice
Uvijek prikvači tj-radnje/promijenjene datoteke na nepromjenjive SHA-ove
Filtriranje ili čišćenje izlaza iz tj-akcija/promijenjenih datoteka
Nikada ne uključujte tajne putove u glob obrasce
Maskiranje ili ograničavanje zapisnika koji mogu otkriti osjetljive podatke
Često revidirajte naslijeđene CI konfiguracije

Uloga Xygenija: Provođenje tajni CI-ja u velikim razmjerima

Xygeni Osigurava CI/CD pipelinefokusirajući se na kako se tajne rukuju, koriste i otkrivaju u stvarnom svijetu DevOps tijekovi rada. Ne radi se samo o skeniranju koda; radi se o provođenju najboljih praksi upravljanja tajnom putem pipeline analiza.

Otkrivanje nesigurne upotrebe izlaza

  • Skenira GitHub akcije za upotrebu echo, run i ispisuje gdje je ${{ steps.*.outputs.* }} može uključivati ​​osjetljive vrijednosti
  • Identificira kada se na tajne podatke upućuje ili ispisuje izravno, namjerno ili greškom

Praćenje procurilih tajni

  • Detektira vrijednosti visoke entropije (API ključeve, tokene) unutar zapisnika i izlaza koraka
  • Pokreće upozorenja kada se tajne pojave u pipeline zapisnici, čak i ako su maskirani nizvodno

Pogrešno konfigurirana upotreba radnje

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

Konkurenčna sigurnost temeljena na pravilima Guardrails

  • Provodi SHA-pinning za radnje trećih strana
  • Blokira korištenje nesigurnih globova datoteka koje bi mogle pomesti tajne u zapisnike
  • sprečava pipelineod emitiranja osjetljivih vrijednosti kao dijela izlaza tijeka rada

Tretiranjem tijekova rada kao dijela vaše površine prijetnji, Xygeni osigurava da tajna higijena nije samo najbolja praksa, već ugrađena obrana.

Zaključak: Tajno curenje informacija može započeti jednostavnom zlouporabom radnje

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

  • Tretira svaku referencu globa/datoteke u CI kao potencijalnu točku curenja
  • Redovito provjeravajte tijekove 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 tijeka rada
  • Zabilježite osjetljive aktivnosti tijeka rada kako biste održali mogućnost revizije

CI je kod. Tijekovi rada su kod. Zapisnici i izlazi su kod. Čuvajte svoje tajne u svakom koraku ili riskirajte scenarij curenja tajne koji ne treba hakera, samo lošu osobu. CI/CD izbor dizajna.

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

Osigurajte svoj razvoj i isporuku softvera

s Xygeni paketom proizvoda