tj-actions/changed-files - CVE-2025-30066 - lihim na pagtagas

CVE‑2025‑30066: Kapag ang mga tj‑action/binagong‑file ay humahantong sa Lihim na Pagtagas

Ang pagtagas ng sikreto ay hindi palaging tungkol sa masamang code o mga mahinang library. Minsan, bumababa ito sa kung paano natin pinamamahalaan ang mga sikreto habang tumatakbo ang CI, at ang CVE‑2025‑30066 ay isang halimbawa kung paano ito maaaring maging hindi tama. Ang GitHub Action tj‑actions/changed‑files, malawakang ginagamit upang matukoy ang mga binagong file sa pull requests, naging tahimik na daluyan para sa lihim na pagtagas. Narito ang nangyari at kung paano mo maisasara ang iyong CI/CD lihim pipeline.

Ano ang Nangyari sa CVE‑2025‑30066?

Noong kalagitnaan ng Marso 2025, nakompromiso ang mga tj‑actions/changed‑file. Muling isinulat ng attacker ang mga umiiral na tag ng bersyon (hanggang v45.0.7) upang ituro ang isang malisyosong commitBinago nito ang kilos ng Action nang hindi napapansin ng mga developer; walang bagong bersyon ang inilabas, tanging hindi nakikitang pagbabago sa tag lamang.

Ang payload ay diretso ngunit mapanganib: kumuha ito ng isang remote Base64-encoded Python script na nag-scan ng runner memory para sa mga credential, itinatapon ang mga ito sa mga log o ini-exfiltrate ang mga ito. Hindi ito isang logical code flaw sa tj-actions/changed-files; ito ay isang pang-aabuso sa kung paano maaaring mangyari ang secret leakage sa loob ng mga CI workflow gamit ang reusable Action na iyon. Ang CVE-2025-30066 ay hindi tungkol sa mga buffer overflow; ito ay tungkol sa isang pagkabigo sa disenyo ng CI na nagbigay-daan sa pagtagas ng mga sikreto.

Epekto: Ang anumang repo na gumagamit ng mga apektadong bersyon ng tj‑actions/changed‑files ay nanganganib sa pagtagas ng sikreto, lalo na kung ang mga sensitibong token o file ay pinangasiwaan nang hindi ligtas sa mga pattern ng file o mga CI output.

Bakit Ito Nakakaapekto sa mga Daloy ng Trabaho na Umaasa sa mga Aksyon na Magagamit Muli

Mga daloy ng trabaho ng DevSecOps lubos na umaasa sa mga tj‑actions/changed‑files para sa:

  • Mag-automate pull request checks
  • Tukuyin ang mga binagong file sa mga partikular na path
  • Iwasan ang mga paulit-ulit na trabaho sa CI

Ngunit ang mga daloy ng trabahong ito ay kadalasang nakakaligtaan ang isang bagay: kung paano maaaring kasama sa mga glob pattern ang sensitibong data. Ipinapalagay ng mga developer na ang mga tj‑actions/changed‑file ay gumagana nang ligtas bilang default. Gayunpaman, kung mag-glob ka mga config/** at ang mga sikreto ay nakaimbak sa mga config/secrets.env, nagdagdag ka lang ng isang lihim na file sa mga output o log ng CI. Hindi iyon bug sa Action; ito ay isang CI/CD pagkabigo sa disenyo na humahantong sa lihim na pagtagas. Ang CVE‑2025‑30066 ay isang malinaw na halimbawa nito.

Paano Nangyari ang Lihim na Pagtagas (Pagsusuri ng Kahinaan)

Suriin natin ang pangunahing problema sa likod ng CVE‑2025‑30066:

  • Globbing pattern tulad ng **/*.env hindi sinasadyang nagtugma ang mga lihim na file
  • Itinuring ng tj‑actions/changed‑files ang mga sikretong iyon bilang mga binagong file
  • Ang mga sikreto ay napunta sa mga step output, log, o mga downstream job

Nangyari ito dahil ang mga sikreto ay nakaimbak sa mga path na kontrolado ng bersyon (masamang ideya), at hindi tahasang inalis ng CI config ang mga ito sa globbing (masama rin). Kaya hindi ito isang code bug, ito ay mahinang kalinisan sa disenyo ng CI na nagdudulot ng pagtagas ng sikreto gamit ang mga output ng tj‑actions/changed‑files.

Praktikal na Landas ng Pagsasamantala: Mula sa Trabaho sa CI hanggang sa Pagkakalantad sa Kredensyal

Halimbawa ng pag-setup ng CI na nagdulot ng pagtagas ng sikreto sa pamamagitan ng mga tj-action/changed-file:

If mga config/secrets.env nagbago:

  • Namarkahan ito ng tj‑actions/changed‑files
  • Isinama ito sa mga hakbang.nabago.mga output.lahat_ng_mga_nabago_na_mga_file
  • Na-log ito o naipasa sa mga script sa mga susunod na hakbang, na naglalabas ng mga sikreto

Nangyari ang leak na ito dahil itinuring ng CI logic ang mga sikreto na parang mga regular na file. Doon nagsisimula ang secret leakage, hindi dahil sa buffer overflow, kundi dahil sa maling paggamit ng mga tj-action/changed-file sa isang depektibong disenyo ng CI.

Nangyayari ang pagpapalaganap gamit ang mga output tulad ng:

If mga sikreto.env Kung nasa listahang iyon, ang pangalan ng file nito at posibleng mga nilalaman ay maaaring lumitaw sa mga build log. Kahit ang conditional logic tulad ng:

Maaaring maglantad ng mga sensitibong artifact. Ito ay isang CI/CD pagkabigo sa disenyo na nagpapahintulot sa lihim na pagtagas, hindi isang depekto sa Action code.

Paano Ligtas na Gamitin ang mga Reusable Workflow at Pigilan ang Pagtagas

Hindi mo kailangang iwanan ang mga tj‑actions/changed‑files. Dapat mong gamitin ang mga reusable Actions nang may pag-iisip na sikreto ang inuuna:

Mga Lihim-Paghawak ng Pinakamahuhusay na Kasanayan

  • Huwag kailanman ibunyag ang mga sikreto sa pagkontrol ng bersyon
  • Iwasan ang mga glob pattern na tumutugma sa mga sensitibong landas
  • Gumamit ng mga sikretong nakabatay sa kapaligiran (GITHUB_ENV, vaults, GitHub Secrets)

CI/CD Configuration Guardrails

  • Palaging i-pin ang Mga Aksyon sa mga hindi nababagong SHA, hindi sa mga tag (huwag gamitin kailanman @v45)
  • Ituring ang output ng tj‑actions/changed‑files bilang kontaminado, i-sanitize o i-filter ito
  • Itakda lamang ang mga output kung na-sanitize na

⚠️ Halimbawa ng Hindi Ligtas:

Ang nasa itaas ay eksakto ang maling paggamit sa likod ng secret leakage at CVE‑2025‑30066.

Ligtas na Alternatibo:

Sa paggawa nito, maiiwasan mo ang CI/CD pagkabigo sa disenyo na humahantong sa lihim na pagtagas sa pamamagitan ng mga tj-action/changed-file.

Bukod pa rito:

  • Huwag paganahin o paghigpitan ang pag-log kung saan maaaring lumitaw ang mga sikreto
  • Gamitin ang mga sikretong tampok ng pagtago ng mga sikreto ng GitHub
  • Limitahan ang access sa mga build log at artifact

Mabilisang mga Lihim - Checklist ng Ligtas na Paggamit ng CI

Pinakamahusay na kasanayan
Huwag mag-imbak ng mga sikreto sa mga file na kontrolado ng bersyon
Gumamit ng mga vault o GitHub Secrets para sa mga kredensyal
Palaging i-pin ang mga tj‑actions/changed‑file sa mga immutable SHA
Salain o i-sanitize ang mga output mula sa mga tj‑actions/changed‑file
Huwag kailanman isama ang mga sikretong landas sa mga glob pattern
Itago o higpitan ang mga log na maaaring maglantad ng sensitibong data
Madalas na minanang mga CI config ng audit

Tungkulin ni Xygeni: Pagpapatupad ng mga Lihim ng CI nang Malawakan

Xygeni tinitiyak CI/CD pipelines sa pamamagitan ng pagtutuon sa kung paano hinahawakan, ginagamit, at inilalantad ang mga sikreto sa totoong mundo Mga daloy ng trabaho sa DevOps. Hindi lang ito tungkol sa pag-scan ng code; ito ay tungkol sa pagpapatupad ng mga pinakamahusay na kasanayan sa pamamahala ng sikreto sa pamamagitan ng live pipeline pagtatasa.

Hindi Ligtas na Pagtukoy sa Paggamit ng Output

  • Ini-scan ang mga Aksyon sa GitHub para sa mga gamit ng echo, run, at naglalabas kung saan ang ${{ steps.*.outputs.* }} maaaring may kasamang mga sensitibong halaga
  • Tinutukoy kung ang mga sikreto ay direktang tinutukoy o inilimbag, sinasadya, o hindi sinasadya

Pagsubaybay sa mga Tumagas na Lihim

  • Nakakakita ng mga high-entropy value (mga API key, token) sa loob ng mga log at step output
  • Nagti-trigger ng mga alerto kapag lumitaw ang mga sikreto sa pipeline mga troso, kahit na natatakpan sa ibaba ng agos

Maling Pag-configure ng Paggamit ng Aksyon

  • Sinusubaybayan ang lahat ng Aksyon sa GitHub sa kabuuan pipelines upang matukoy ang paggamit ng mga nakompromisong bersyon (hal., tj-actions/changed-files@v45)
  • Sinusuri ang mga pattern ng pagtutugma ng file na kinabibilangan ng mga potensyal na sikreto tulad ng **/*.env, *.key, o .env.*

CI na Nakabatay sa Patakaran Guardrails

  • Nagpapatupad ng SHA-pinning para sa mga Pagkilos ng third-party
  • Hinaharangan ang paggamit ng mga hindi ligtas na file globs na maaaring magtago ng mga sikreto sa mga log
  • Pinipigilan pipelines mula sa paglabas ng mga sensitibong halaga bilang bahagi ng mga output ng daloy ng trabaho

Sa pamamagitan ng pagtrato sa mga daloy ng trabaho bilang bahagi ng iyong banta, tinitiyak ng Xygeni na ang sikretong kalinisan ay hindi lamang isang pinakamahusay na kasanayan, ito ay isang built-in na depensa.

Konklusyon: Ang Lihim na Paglabas ay Maaaring Magsimula sa Isang Simpleng Maling Paggamit

Ang CVE‑2025‑30066 ay hindi isang library bug; ito ay isang CI/CD pagkabigo sa disenyo na nagmumula sa hindi wastong paggamit ng mga tj-action/changed-file. Ang dapat tandaan ng mga DevSecOps team:

  • Ituring ang bawat glob/file reference sa CI bilang isang potensyal na leak point
  • Regular na ina-audit ang mga daloy ng trabaho para sa hindi sinasadyang pagsasama ng mga sikreto
  • Gumamit ng mga secure vault o environment secret, huwag kailanman suriin ang mga secret sa version control
  • I-sanitize o i-filter ang lahat ng output ng workflow
  • Mag-log ng sensitibong aktibidad sa daloy ng trabaho upang mapanatili ang kakayahang ma-audit

Ang CI ay code. Ang mga workflow ay code. Ang mga log at output ay code. Bantayan ang iyong mga sikreto sa bawat hakbang, o kaya'y magkaroon ng sitwasyon ng sikretong pagtagas na hindi nangangailangan ng hacker, kundi isang masamang tao. CI/CD pagpili ng disenyo.

mga tool sa pagsusuri ng komposisyon ng software ng mga tool sa sca
Unahin, ayusin, at i-secure ang mga panganib ng iyong software
Kunin ang Iyong Libreng Account.
Walang kinakailangang credit card.

I-secure ang Iyong Pag-develop at Paghahatid ng Software

kasama ang Xygeni Product Suite