Nid yw gollyngiadau cyfrinachau bob amser yn ymwneud â chod gwael neu lyfrgelloedd agored i niwed. Weithiau, mae'n dibynnu ar sut rydym yn rheoli cyfrinachau yn ystod rhediadau CI, ac mae CVE-2025-30066 yn enghraifft berffaith o sut y gall hynny fynd i'r ochr. Y Weithred GitHub tj-actions/changed-files, a ddefnyddir yn helaeth i ganfod ffeiliau wedi'u newid yn pull requests, daeth yn sianel dawel ar gyfer gollyngiadau cyfrinachol. Dyma beth ddigwyddodd a sut allwch chi gloi eich CI/CD cyfrinachau pipeline.
Beth Ddigwyddodd yn CVE‑2025‑30066?
Ganol mis Mawrth 2025, cafodd tj-actions/changed-files ei beryglu. Ailysgrifennodd yr ymosodwr y tagiau fersiwn presennol (hyd at v45.0.7) i bwyntio at feddalwedd faleisus commitNewidiodd hyn ymddygiad y Weithred heb i ddatblygwyr sylwi; ni ryddhawyd fersiwn newydd, dim ond ymyrryd â thagiau anweledig.
Roedd y llwyth tâl yn syml ond yn beryglus: tynnodd sgript Python o bell wedi'i amgodio gan Base64 a oedd yn sganio cof rhedwr am gymwysterau, gan eu dympio i logiau neu eu hidlo. Nid oedd hyn yn nam cod rhesymegol yn y tj-actions/changed-files; roedd yn gamddefnydd o sut y gall gollyngiad cyfrinachau ddigwydd o fewn llifau gwaith CI gan ddefnyddio'r Weithred ailddefnyddiadwy honno. Nid oedd CVE-2025-30066 yn ymwneud â gorlifiadau byffer; roedd yn ymwneud â methiant dylunio CI a alluogodd i gyfrinachau ollwng.
Effaith: Roedd unrhyw repo a oedd yn defnyddio'r fersiynau yr effeithiwyd arnynt o tj-actions/changed-files mewn perygl o ollyngiad cyfrinachol, yn enwedig os oedd tocynnau neu ffeiliau sensitif yn cael eu trin yn anniogel mewn patrymau ffeiliau neu allbynnau CI.
Pam mae hyn yn effeithio ar lif gwaith sy'n dibynnu ar gamau ailddefnyddiadwy
Llifau gwaith DevSecOps yn dibynnu'n fawr ar tj-actions/changed-files i:
- Awtomeiddio pull request gwiriadau
- Nodi ffeiliau wedi'u newid mewn llwybrau penodol
- Osgowch swyddi CI diangen
Ond mae'r llifau gwaith hyn yn aml yn anwybyddu un peth: sut y gallai patrymau glob gynnwys data sensitif. Mae datblygwyr yn tybio bod tj-actions/changed-files yn ymddwyn yn ddiogel yn ddiofyn. Fodd bynnag, os ydych chi'n glob ffurfweddiadau/** a chyfrinachau wedi'u storio yn ffurfweddiadau/cyfrinachau.amgylchedd, rydych chi newydd ychwanegu ffeil gyfrinachol at allbynnau neu logiau CI. Nid nam yn y Weithred yw hynny; mae'n CI/CD methiant dylunio sy'n arwain at ollyngiad cyfrinachol. Mae CVE-2025-30066 yn enghraifft glir o hyn.
Sut Digwyddodd y Gollyngiad Cyfrinachol (Dadansoddiad o'r Bregusrwydd)
Gadewch i ni ddadbacio'r methiant craidd y tu ôl i CVE‑2025‑30066:
- Patrymau globio fel **/*.amgylchedd ffeiliau cyfrinachol wedi'u paru'n anfwriadol
- Roedd tj-actions/changed-files yn trin y cyfrinachau hynny fel ffeiliau wedi'u newid
- Daeth cyfrinachau i ben mewn allbynnau cam, logiau, neu swyddi i lawr yr afon
Digwyddodd hyn oherwydd bod cyfrinachau wedi'u storio mewn llwybrau a reolir gan fersiynau (syniad gwael), ac nid oedd ffurfweddiad y CI yn eu heithrio'n benodol rhag globbio (drwg hefyd). Felly nid nam cod yw e, ond hylendid dylunio CI gwael sy'n achosi gollyngiad cyfrinachau gydag allbynnau tj-actions/changed-files.
Llwybr Manteision Ymarferol: O Swydd CI i Amlygiad i Gredydau
Enghraifft o osodiad CI a achosodd ollyngiad cyfrinachol trwy tj-actions/changed-files:
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 ffurfweddiadau/cyfrinachau.amgylchedd wedi newid:
- Cafodd ei nodi gan tj-actions/changed-files
- Cafodd ei gynnwys yn camau.newidiwyd.allbynnau.pob_ffeil_newidiedig
- Camau diweddarach a gofnododd ef neu a'i drosglwyddo i sgriptiau, gan ollwng cyfrinachau
Digwyddodd y gollyngiad hwn oherwydd bod rhesymeg CI yn trin cyfrinachau fel ffeiliau rheolaidd. Dyna lle mae'r gollyngiad cyfrinachau'n dechrau, nid oherwydd gorlif byffer, ond camddefnyddio tj-actions/changed-files mewn dyluniad CI diffygiol.
Mae lluosogi yn digwydd gydag allbynnau fel:
yaml ‑ name: Use changed file list run: echo "Changed files: ${{ steps.changed.outputs.all_changed_files }}" If cyfrinachau.amgylchedd yn y rhestr honno, gall ei henw ffeil a'i gynnwys o bosibl ymddangos mewn logiau adeiladu. Hyd yn oed rhesymeg amodol fel:
yaml if: contains(steps.changed.outputs.all_changed_files, 'secrets.env') Gall ddatgelu arteffactau sensitif. Mae hwn yn CI/CD methiant dylunio sy'n caniatáu gollyngiad cyfrinachol, nid nam yn y Cod Gweithredu.
Sut i Ddefnyddio Llifau Gwaith Ailddefnyddiadwy yn Ddiogel ac Atal Gollyngiadau
Nid oes angen i chi gefnu ar tj-actions/changed-files. Dylech ddefnyddio Camau y gellir eu hailddefnyddio gyda meddylfryd sy'n rhoi cyfrinachau yn gyntaf:
Arferion Gorau Trin Cyfrinachau
- Peidiwch byth â chyfrinachau rheoli fersiynau
- Osgowch batrymau glob sy'n cyfateb i lwybrau sensitif
- Defnyddiwch gyfrinachau sy'n seiliedig ar yr amgylchedd (GITHUB_ENV, vaults, Cyfrinachau GitHub)
CI/CD ffurfweddiad Guardrails
- Pinio Camau Gweithredu i SHAau na ellir eu newid bob amser, nid tagiau (peidiwch byth â defnyddio @v45)
- Trin allbwn tj-actions/changed-files fel pe bai wedi'i halogi, ei lanhau neu ei hidlo
- Gosod allbynnau dim ond os ydynt wedi'u diheintio
⚠️ Enghraifft Anniogel:
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 Yr uchod yw'r union gamddefnydd y tu ôl i ollyngiadau cyfrinachol a CVE‑2025‑30066.
Dewis arall diogel:
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 Drwy wneud hyn, rydych chi'n osgoi'r CI/CD methiant dylunio sy'n arwain at ollyngiad cyfrinachol trwy tj-actions/changed-ffeiliau.
Yn ogystal:
- Analluogi neu gyfyngu ar gofnodi lle gallai cyfrinachau ymddangos
- Defnyddiwch nodweddion masgio cyfrinachol GitHub
- Cyfyngu mynediad i gofnodion adeiladu ac arteffactau
Cyfrinachau Cyflym - Rhestr Wirio Defnyddio CI Diogel
| Arfer gorau |
|---|
| Peidiwch â storio cyfrinachau mewn ffeiliau sy'n cael eu rheoli gan fersiynau |
| Defnyddiwch vaults neu Gyfrinachau GitHub ar gyfer manylion mewngofnodi |
| Pinio tj-actions/changed-files i SHAs na ellir eu newid bob amser |
| Hidlo neu lanhau allbynnau o tj-actions/changed-files |
| Peidiwch byth â chynnwys llwybrau cyfrinachol mewn patrymau glob |
| Cuddio neu gyfyngu ar logiau a allai ddatgelu data sensitif |
| Archwilio ffurfweddiadau CI etifeddol yn aml |
Rôl Xygeni: Gorfodi Cyfrinachau CI ar Raddfa
Xygeni ei sicrhau CI/CD pipelinedrwy ganolbwyntio ar sut mae cyfrinachau'n cael eu trin, eu defnyddio a'u datgelu yn y byd go iawn Llifau gwaith DevOps. Nid dim ond sganio cod ydyw; mae'n ymwneud â gorfodi arferion gorau rheoli cyfrinachau trwy fyw pipeline dadansoddiad.
Canfod Defnydd Allbwn Anniogel
- Yn sganio gweithredoedd GitHub ar gyfer defnyddiau o echo, rhedeg, ac allbynnau lle mae ${{ steps.*.outputs.* }} gallai gynnwys gwerthoedd sensitif
- Yn nodi pryd y cyfeirir at gyfrinachau neu y caiff eu hargraffu'n uniongyrchol, yn fwriadol, neu drwy gamgymeriad
Monitro Cyfrinachau a Ddollwyd
- Yn canfod gwerthoedd entropi uchel (allweddi API, tocynnau) y tu mewn i logiau ac allbynnau cam
- Yn sbarduno rhybuddion pan fydd cyfrinachau'n ymddangos yn y pipeline logiau, hyd yn oed os cânt eu cuddio i lawr yr afon
Defnydd Gweithredu wedi'i Gamffurfweddu
- Yn olrhain pob Gweithred GitHub ar draws pipelines i ganfod defnydd o fersiynau sydd wedi'u peryglu (e.e., tj-actions/newidiwyd-ffeiliau@v45)
- Yn archwilio patrymau paru ffeiliau sy'n cynnwys cyfrinachau posibl fel **/*.amgylchedd, *.allwedd, neu .amgylchedd.*
CI yn Seiliedig ar Bolisi Guardrails
- Yn gorfodi pinio SHA ar gyfer Camau Gweithredu trydydd parti
- Yn rhwystro defnyddio globiau ffeiliau anniogel a allai ysgubo cyfrinachau i logiau
- Yn atal pipelines rhag allyrru gwerthoedd sensitif fel rhan o allbynnau llif gwaith
Drwy drin llifau gwaith fel rhan o'ch arwyneb bygythiad, mae Xygeni yn sicrhau nad arfer gorau yn unig yw hylendid cyfrinachol, ond amddiffyniad adeiledig.
Casgliad: Gall Gollyngiad Cyfrinachol Ddechrau gyda Chamddefnydd Syml
Nid nam llyfrgell oedd CVE‑2025‑30066; roedd yn CI/CD methiant dylunio yn deillio o ddefnydd amhriodol o tj-actions/changed-files. Yr hyn y dylai timau DevSecOps ei ddysgu:
- Trin pob cyfeiriad glob/ffeil yn CI fel pwynt gollyngiad posibl
- Archwiliwch lifau gwaith yn rheolaidd i weld a oes cyfrinachau’n cael eu cynnwys ar ddamwain.
- Defnyddiwch gromlechau neu gyfrinachau amgylchedd diogel, peidiwch byth â gwirio cyfrinachau i mewn i reoli fersiynau
- Glanhau neu hidlo pob allbwn llif gwaith
- Cofnodwch weithgarwch llif gwaith sensitif i gynnal archwiliadwyedd
Cod yw CI. Cod yw llifau gwaith. Cod yw logiau ac allbynnau. Gwarchodwch eich cyfrinachau ym mhob cam, neu risgiwch senario gollyngiad cyfrinachol nad oes angen haciwr arno, dim ond un drwg. CI/CD dewis dylunio.




