tj-actions/changed-files - CVE-2025-30066 - gollyngiad cyfrinachol

CVE‑2025‑30066: Pan fydd tj‑actions/changed‑files yn Arwain at Ollyngiad Cyfrinachol

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.

offer-sca-meddalwedd-offer-dadansoddi-cyfansoddiad
Blaenoriaethu, cywiro a diogelu eich risgiau meddalwedd
Cael eich Cyfrif Am Ddim.
Nid oes angen cerdyn credyd.

Sicrhau eich Datblygiad a Chyflwyniad Meddalwedd

gyda Phecyn Cynnyrch Xygeni