Жашыруун маалыматтын агып чыгышы дайыма эле жаман код же аялуу китепканалар жөнүндө эмес. Кээде, бул CI иштетүү учурунда сырларды кантип башкараарыбызга байланыштуу болот, ал эми CVE‑2025‑30066 - бул кантип капталга кетиши мүмкүн экендигинин окуу китебиндеги мисал. GitHub Action tj‑actions/changed‑files, өзгөртүлгөн файлдарды аныктоо үчүн кеңири колдонулат. pull requests, жашыруун агып чыгуунун үнсүз каналына айланды. Бул жерде эмне болгону жана сиз кантип кулпулай алаарыңыз көрсөтүлгөн CI/CD сырлары pipeline.
CVE‑2025‑30066да эмне болду?
2025-жылдын март айынын ортосунда tj-actions/changed-files бузулган. Чабуулчу зыяндуу программаны көрсөтүү үчүн учурдагы версия тегдерин (v45.0.7 чейин) кайра жазган commitБул иштеп чыгуучулар байкабай туруп, Action'дун жүрүм-турумун өзгөрттү; жаңы версия чыгарылган жок, жөн гана көрүнбөгөн тегдер өзгөртүлдү.
Пайдалуу жүктөм жөнөкөй, бирок кооптуу болчу: ал Base64 менен коддолгон алыскы Python скриптин чыгарып, ал рюнердин эс тутумун ишеним грамоталарын текшерүү үчүн сканерлеп, аларды журналдарга төгүп же эксфильтрациялап жиберчү. Бул tj-actions/changed-files'теги логикалык код кемчилиги эмес болчу; бул кайра колдонулуучу Action'ду колдонуу менен CI жумуш агымдарынын ичинде жашыруун агып кетүү кантип пайда болушу мүмкүн экендигин кыянаттык менен пайдалануу болчу. CVE‑2025‑30066 буфердин ашып кетиши жөнүндө эмес болчу; бул сырлардын агып кетишине мүмкүндүк берген CI дизайнынын бузулушу жөнүндө болчу.
Таасири: tj-actions/өзгөртүлгөн файлдардын жабыркаган версияларын колдонгон ар кандай репозиторийде, айрыкча, файл шаблондорунда же CI чыгарууларында сезимтал токендер же файлдар кооптуу түрдө иштетилген болсо, жашыруун маалыматтардын агып кетүү коркунучу бар болчу.
Эмне үчүн бул кайра колдонулуучу аракеттерге таянып, жумуш агымдарына таасир этет
DevSecOps жумуш агымдары tj-actions/өзгөртүлгөн файлдарга төмөнкүгө катуу таянат:
- автоматташтыруу pull request чектер
- Өзгөртүлгөн файлдарды белгилүү бир жолдордо аныктоо
- Артык CI жумуш орундарынан алыс болуңуз
Бирок бул жумуш агымдары көп учурда бир нерсени этибарга албайт: glob үлгүлөрү кандайча купуя маалыматтарды камтышы мүмкүн. Иштеп чыгуучулар tj-actions/changed-files демейки шартта коопсуз иштейт деп болжолдошот. Бирок, эгер сиз glob болсоңуз конфигурациялар/** жана сырлар сакталат configs/secrets.env, сиз жаңы эле CI чыгыштарына же журналдарына жашыруун файл коштуңуз. Бул Аракеттеги ката эмес; бул CI/CD жашыруун агып кетүүгө алып келген долбоордун бузулушу. CVE‑2025‑30066 мунун ачык мисалы.
Жашыруун агып кетүү кантип болгон (Аялуулуктун талдоосу)
Келгиле, CVE‑2025‑30066 артындагы негизги катаны карап көрөлү:
- сыяктуу глоббинг үлгүлөрү **/*.env жашыруун файлдар кокустан дал келди
- tj-actions/changed-files бул сырларды өзгөртүлгөн файлдар катары иштеткен
- Сырлар кадамдык чыгууларда, журналдарда же кийинки жумуштарда пайда болду
Бул сырлар версия менен башкарылуучу жолдордо сакталгандыктан (жаман идея) жана CI конфигурациясы аларды глобалдаштыруудан ачык түрдө четтетпегендиктен (ошондой эле жаман) болгон. Демек, бул код катасы эмес, бул CI дизайнынын гигиенасынын начардыгы, анткени ал tj-actions/changed-files чыгыштары менен жашыруун агып кетүүсүнө алып келет.
Практикалык эксплуатация жолу: CI жумушунан тартып, ишеним грамоталарынын таасири астында калууга чейин
tj-actions/changed-files аркылуу жашыруун агып кетүүсүнө алып келген CI орнотуусунун мисалы:
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 өзгөртүлгөн:
- Бул tj-actions/changed-files тарабынан белгиленди
- Ал курамына кирген кадамдар.өзгөртүлгөн.чыгарылыштар.баары_өзгөртүлгөн_файлдар
- Кийинки кадамдар аны каттап же скрипттерге өткөрүп, сырларды ачып жиберди
Бул агып кетүү CI логикасы сырларды кадимки файлдардай иштеткендиктен болгон. Жашыруун агып кетүү дал ушул жерден башталат, буфердин ашып кетишинен эмес, кемчиликтери бар CI дизайнында tj-actions/өзгөртүлгөн файлдарды туура эмес колдонуудан улам.
Көбөйүү төмөнкүдөй чыгаруулар менен жүргүзүлөт:
yaml ‑ name: Use changed file list run: echo "Changed files: ${{ steps.changed.outputs.all_changed_files }}" If secrets.env ал тизмеде болсо, анын файлынын аталышы жана мазмуну курулуш журналдарында пайда болушу мүмкүн. Атүгүл шарттуу логика, мисалы:
yaml if: contains(steps.changed.outputs.all_changed_files, 'secrets.env') Сезимтал артефакттарды ачыкка чыгарышы мүмкүн. Бул CI/CD жашыруун агып кетүүгө жол берген дизайндагы ката, бул Иш-аракет кодундагы кемчилик эмес.
Кайра колдонулуучу жумуш агымдарын кантип коопсуз колдонуу жана агып кетүүнүн алдын алуу керек
tj-actions/changed-files функцияларынан баш тартуунун кажети жок. Кайра колдонулуучу Actions функциясын "жашыруундарды биринчи орунга коюу" деген ой менен колдонушуңуз керек:
Сырларды иштетүүнүн эң мыкты тажрыйбалары
- Версияны башкаруу сырларын эч качан ачпаңыз
- Сезимтал жолдорго дал келген глобус үлгүлөрүнөн алыс болуңуз
- Айлана-чөйрөгө негизделген сырларды колдонуңуз (GITHUB_ENV, сейфтер, GitHub сырлары)
CI/CD тарам орнотуусу Guardrails
- Ар дайым аракеттерди тегдерге эмес, өзгөрүлбөс SHAларга кадоо (эч качан колдонбоңуз) @v45)
- tj-actions/өзгөртүлгөн файлдардын чыгышын бузулган деп эсептеңиз, тазалаңыз же чыпкалаңыз
- Эгерде дезинфекцияланган болсо гана чыгарууларды орнотуу
⚠️ Кооптуу мисал:
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 Жогоруда айтылгандар жашыруун агып чыгуунун жана CVE‑2025‑30066нын артындагы кыянаттык менен пайдалануу болуп саналат.
Коопсуз альтернатива:
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 Муну менен сиз андан качасыз CI/CD tj-actions/өзгөртүлгөн файлдар аркылуу жашыруун агып кетүүгө алып келген дизайндагы ката.
кошумча:
- Жашыруун маалыматтар пайда болушу мүмкүн болгон жерлерде журнал жазууну өчүрүү же чектөө
- GitHub'тун жашыруун маскалоо функцияларын колдонуңуз
- Курулуш журналдарына жана артефакттарына кирүүнү чектөө
Quick Secrets - Коопсуз CI колдонуу тизмеси
| Мыкты тажрыйба |
|---|
| Сырларды версия менен башкарылуучу файлдарда сактабаңыз |
| Ишеним грамоталары үчүн сейфтерди же GitHub сырларын колдонуңуз |
| tj-actions/өзгөртүлгөн файлдарды ар дайым өзгөрүлбөс SHA'ларга кадоо |
| tj-actions/өзгөртүлгөн файлдардан чыгууларды чыпкалоо же тазалоо |
| Глоб үлгүлөрүнө эч качан жашыруун жолдорду кошпоңуз |
| Купуя маалыматтарды ачыкка чыгарышы мүмкүн болгон журналдарды жашыруу же чектөө |
| Көп учурда мурасталган CI конфигурацияларын аудит кылуу |
Xygeni'нин ролу: CI сырларын масштабдуу түрдө коргоо
Ксигени камсыздаганын CI/CD pipelineкөңүл буруу менен сырлар реалдуу дүйнөдө кантип иштетилет, колдонулат жана ачыкка чыгарылат DevOps жумуш агымдары. Бул жөн гана кодду сканерлөө эмес; бул жашыруун башкаруунун эң мыкты тажрыйбаларын түз эфир аркылуу ишке ашыруу жөнүндө. pipeline талдоо.
Кооптуу чыгарууну колдонууну аныктоо
- GitHub аракеттеринин сканерлери колдонуу үчүн echo, run жана чыгаруу буйруктары бар, мында ${{ steps.*.outputs.* }} сезимтал маанилерди камтышы мүмкүн
- Жашыруун маалыматтар түз, атайылап же жаңылыштык менен шилтеме берилгенде же басылып чыкканда аныктайт
Агып чыккан сырларды көзөмөлдөө
- Журналдардын жана кадамдык чыгуулардын ичиндеги жогорку энтропиялык маанилерди (API ачкычтары, токендер) аныктайт
- Жашыруун маалыматтар пайда болгондо эскертмелерди иштетет pipeline жыгачтар, ылдый карай маскировкаланган болсо да
Туура эмес конфигурацияланган аракет колдонулушу
- Бардык GitHub аракеттерин көзөмөлдөйт pipelineбузулган версияларды колдонууну аныктоо үчүн (мисалы, tj-actions/changed-files@v45)
- сыяктуу потенциалдуу сырларды камтыган файлдарды дал келтирүү үлгүлөрүн текшерет **/*.env, *.key же .env.*
Саясатка негизделген CI Guardrails
- Үчүнчү тараптын аракеттери үчүн SHA-пиндөөнү ишке ашырат
- Журналдарга сырларды киргизе турган кооптуу файл глобустарын колдонууну бөгөттөйт
- тоскоолдук pipelineжумуш агымынын чыгышынын бир бөлүгү катары сезгич маанилерди чыгаруудан келип чыккан s
Жумуш агымдарын коркунуч бетинин бир бөлүгү катары кароо менен, Xygeni жашыруун гигиена жөн гана эң жакшы тажрыйба эмес, ал орнотулган коргонуу экенин камсыздайт.
Жыйынтык: Жашыруун агып кетүү жөнөкөй аракеттен башталышы мүмкүн
CVE‑2025‑30066 китепкана катасы эмес болчу; ал CI/CD tj-actions/өзгөртүлгөн файлдарды туура эмес колдонуудан келип чыккан дизайндагы ката. DevSecOps командалары эмнени алып салышы керек:
- CIдеги ар бир глобус/файл шилтемесин потенциалдуу агып кетүү чекити катары караңыз
- Кокустан жашыруун сырларды киргизүү үчүн жумуш агымдарын үзгүлтүксүз текшерип туруңуз
- Коопсуз сейфтерди же айлана-чөйрөнүн сырларын колдонуңуз, эч качан сырларды версияларды башкарууга текшербеңиз
- Бардык жумуш агымынын чыгыштарын дезинфекциялаңыз же чыпкалаңыз
- Аудиттин мүмкүндүгүн сактоо үчүн сезгич жумуш процессинин активдүүлүгүн журналга жазыңыз
CI – бул код. Жумуш агымдары – бул код. Журналдар жана чыгаруулар – бул код. Ар бир кадамда сырларыңызды сактаңыз, болбосо хакердин кереги жок, жөн гана жаман жашыруун агып кетүү сценарийине кабылыңыз. CI/CD дизайн тандоосу.




