Salajaste andmete leke ei ole alati seotud halva koodi või haavatavate teekidega. Mõnikord taandub see sellele, kuidas me haldame salajaste andmete haldamist CI-käivituste ajal ja CVE-2025-30066 on õpikunäide sellest, kuidas see võib viltu minna. GitHubi toiming tj-actions/changed-files, mida kasutatakse laialdaselt muudetud failide tuvastamiseks pull requests, muutus salajase lekke vaikseks kanaliks. Siin on see, mis juhtus ja kuidas saate oma lukustada CI/CD saladusi pipeline.
Mis juhtus CVE-2025-30066 juhtumis?
2025. aasta märtsi keskel sattus tj-actions/changed-files ohtu. Ründaja kirjutas olemasolevad versioonisildid (kuni v45.0.7) ümber, et need osutaksid pahatahtlikule rakendusele. commitSee muutis Actioni käitumist arendajate märkamatult; uut versiooni ei avaldatud, vaid ainult nähtamatu siltide manipuleerimine.
Kasulik koormus oli lihtne, aga ohtlik: see tõmbas välja kaug-Base64-kodeeringuga Pythoni skripti, mis skannis käivitaja mälu volikirjade leidmiseks, salvestas need logidesse või filtreeris need välja. See ei olnud tj-actionsi/muudetud-failide loogiline koodiviga; see oli salajaste andmete lekke kuritarvitamine CI-töövoogudes selle korduvkasutatava toimingu abil. CVE-2025-30066 ei puudutanud puhvri ületäitumist; see puudutas CI-disaini viga, mis võimaldas salajastel andmetel lekkida.
Mõju: Igasugune hoidla, mis kasutas tj-actionsi/muudetud failide mõjutatud versioone, riskis salajase teabe lekkimisega, eriti kui tundlikke märke või faile käsitleti failimustrites või CI-väljundites ebaturvaliselt.
Miks see mõjutab korduvkasutatavatel toimingutel põhinevaid töövooge
DevSecOpsi töövood tuginevad suuresti tj-toimingutele/muudetud failidele, et:
- Automatiseerimine pull request kontrolli
- Tuvastage muudetud failid kindlates radades
- Vältige üleliigseid CI-töid
Kuid need töövood jätavad sageli ühe asja tähelepanuta: kuidas globaalsed mustrid võivad sisaldada tundlikke andmeid. Arendajad eeldavad, et tj-actions/changed-files käituvad vaikimisi turvaliselt. Kui aga globaalsed mustrid... konfiguratsioonid/** ja saladusi hoitakse seal konfiguratsioonid/saladused.keskkond, lisasid just CI väljunditesse või logidesse salajase faili. See ei ole toimingu viga; see on CI/CD disainiviga, mis viib salajase teabe lekkimiseni. CVE-2025-30066 on selle selge näide.
Kuidas salajane leke juhtus (haavatavuse jaotus)
Lahendame CVE‑2025‑30066 taga peituva tuumavea:
- Globeerivad mustrid nagu **/*.keskkond sobitas salajased failid tahtmatult
- tj-actions/changed-files käsitles neid saladusi muudetud failidena
- Saladused sattusid etappide väljunditesse, logidesse või allavoolu töödesse
See juhtus seetõttu, et saladusi hoiti versioonikontrollitud radadel (halb mõte) ja CI konfiguratsioon ei välistanud nende avaldamist otseselt (samuti halb). Seega pole tegemist koodiveaga, vaid kehva CI disainihügieeniga, mis põhjustab saladuste lekkimist tj-actionsi/muudetud failide väljunditega.
Praktiline ärakasutamise tee: CI töökohast volituste saamiseni
Näidis CI-seadistusest, mis põhjustas salajase lekke tj-toimingute/muudetud failide kaudu:
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 konfiguratsioonid/saladused.keskkond muudetud:
- See märgiti tj-actions/changed-files poolt.
- See lisati hulka steps.changed.outputs.all_changed_files
- Hilisemad sammud logisid selle või edastasid skriptidele, lekkides saladusi
See leke tekkis seetõttu, et CI loogika käsitles saladusi nagu tavalisi faile. Sellest algabki saladuse leke, mitte puhvri ületäitumise, vaid vigase CI disaini puhul toimingute/muudetud failide väärkasutamise tõttu.
Paljundamine toimub selliste väljunditega nagu:
yaml ‑ name: Use changed file list run: echo "Changed files: ${{ steps.changed.outputs.all_changed_files }}" If saladused.keskkond on selles nimekirjas, võivad selle failinimi ja võimalik, et ka sisu ehituslogides ilmuda. Isegi tingimuslik loogika, näiteks:
yaml if: contains(steps.changed.outputs.all_changed_files, 'secrets.env') Võib paljastada tundlikke esemeid. See on CI/CD disainiviga, mis võimaldab salajast leket, mitte viga tegevuskoodis.
Kuidas korduvkasutatavaid töövooge ohutult kasutada ja lekkeid vältida
Sa ei pea hülgama tj-actione/changed-file'e. Sa peaksid kasutama korduvkasutatavaid Action'e, mille puhul on saladused esikohal:
Saladuste käitlemise parimad tavad
- Ära kunagi versioonikontrolli saladusi kasuta
- Väldi tundlikele radadele vastavaid globaalseid mustreid
- Kasutage keskkonnapõhiseid saladusi (GITHUB_ENV, võlvid, GitHubi saladused)
CI/CD konfiguratsioon Guardrails
- Kinnita toimingud alati muutumatutele SHA-dele, mitte siltidele (ära kunagi kasuta @v45)
- Käsitle tj-toimingute/muudetud failide väljundit saastunud failina, puhasta või filtreeri see
- Määra väljundid ainult siis, kui need on puhastatud
⚠️ Ebaturvaline näide:
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 Ülaltoodu on täpselt salajase lekke ja CVE-2025-30066 taga peituv väärkasutamine.
Ohutu alternatiiv:
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 Seda tehes väldite seda, CI/CD disainiviga, mis viib salajase teabe lekkimiseni tj-toimingute/muudetud failide kaudu.
Lisaks:
- Keelake või piirake logimist kohtades, kus võivad esineda saladused
- Kasutage GitHubi salajaste maskeerimisfunktsioone
- Piira juurdepääsu ehituslogidele ja artefaktidele
Kiire saladuste ja turvalise suhtluse kasutamise kontroll-leht
| Best Practice |
|---|
| Ärge salvestage saladusi versioonikontrollitud failidesse |
| Kasutage volituste jaoks hoidlaid või GitHubi saladusi |
| Kinnita tj-toimingud/muudetud failid alati muutumatutele SHA-dele |
| TJ-toimingute/muudetud failide väljundite filtreerimine või puhastamine |
| Ära kunagi lisa globaalsetesse mustritesse salajasi teid |
| Maskeeri või piira logisid, mis võivad tundlikke andmeid paljastada |
| Auditeeri päritud CI-konfiguratsioone sageli |
Xygeni roll: CI-saladuste jõustamine ulatuslikult
Xygeni kindlustab CI/CD pipelinekeskendudes kuidas saladusi reaalses maailmas käsitletakse, kasutatakse ja avalikustatakse DevOpsi töövood. See ei puuduta ainult koodi skannimist; see hõlmab salajaste haldustavade jõustamist reaalajas. pipeline analüüsi.
Ebaturvalise väljundi kasutamise tuvastamine
- Skannib GitHubi toiminguid kasutamiseks echo, run ja outputs, kus ${{ steps.*.outputs.* }} võib sisaldada tundlikke väärtusi
- Tuvastab, millal saladustele viidatakse või need trükitakse otse, tahtlikult või kogemata
Lekkinud saladuste jälgimine
- Tuvastab logides ja sammuväljundites kõrge entroopiaga väärtusi (API-võtmed, märgid)
- Käivitab hoiatused, kui salajased andmed ilmuvad pipeline logid, isegi kui allavoolu maskeeritakse
Valesti konfigureeritud toimingute kasutamine
- Jälgib kõiki GitHubi toiminguid pipelineet tuvastada ohustatud versioonide kasutamist (nt tj-actions/changed-files@v45)
- Auditeerib failide sobitamise mustreid, mis sisaldavad potentsiaalseid saladusi, näiteks **/*.env, *.key või .env.*
Poliitikapõhine CI Guardrails
- Jõustab SHA-kinnituse kolmandate osapoolte toimingute jaoks
- Blokeerib ohtlike failigloobuste kasutamise, mis võivad logidesse salajasi andmeid kanda
- Hoiab ära pipelinetundlike väärtuste väljastamise eest töövoo väljundite osana
Töövoogude käsitlemisega osana teie ohupinnast tagab Xygeni, et salahügieen pole lihtsalt parim tava, vaid sisseehitatud kaitse.
Kokkuvõte: salajane leke võib alata lihtsast tegevusest ja väärkasutusest
CVE-2025-30066 ei olnud teegi viga; see oli CI/CD disainiviga, mis tuleneb tj-toimingute/muudetud failide valest kasutamisest. Mida DevSecOpsi meeskonnad peaksid sellest õppima:
- Käsitle iga glob/file viidet CI-s potentsiaalse lekkekohana
- Auditeeri töövooge regulaarselt, et avastada salasõnade kogemata lisamist.
- Kasutage turvalisi hoidlaid või keskkonnasaladusi, ärge kunagi kontrollige saladusi versioonikontrolli
- Puhastage või filtreerige kõik töövoo väljundid
- Logige tundlikke töövoo tegevusi auditeeritavuse säilitamiseks
CI on kood. Töövood on kood. Logid ja väljundid on kood. Kaitse oma saladusi igal sammul või riski salajase lekke stsenaariumiga, mis ei vaja häkkerit, vaid ainult halba. CI/CD disaini valik.




