Құпия ақпараттың ағып кетуі әрқашан жаман код немесе осал кітапханалармен байланысты емес. Кейде бұл 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Бұл әзірлеушілер байқамай Әрекеттің әрекетін өзгертті; жаңа нұсқасы шығарылмады, тек көрінбейтін тегтер өзгертілді.
Пайдалы жүктеме қарапайым, бірақ қауіпті болды: ол жүгіруші жадын тіркелгі деректерін сканерлейтін, оларды журналдарға тастайтын немесе эксфильтрациялайтын қашықтағы Base64-кодталған Python скриптін шығарып алды. Бұл tj-actions/changed-файлдарындағы логикалық код кемшілігі емес еді; бұл қайта пайдалануға болатын әрекетті пайдаланып, 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/өзгертілген файлдар бұл құпияларды өзгертілген файлдар ретінде қарастырды
- Құпиялар қадамдық шығыстарда, журналдарда немесе кейінгі жұмыстарда пайда болды
Бұл құпиялардың нұсқамен басқарылатын жолдарда сақталуына байланысты болды (жаман идея), ал CI конфигурациясы оларды глоббингтен анық түрде алып тастамады (сонымен қатар жаман). Сондықтан бұл код қатесі емес, бұл tj-actions/changed-files шығыстарымен құпия ақпараттың ағып кетуіне әкелетін CI дизайнының нашар гигиенасы.
Практикалық пайдалану жолы: 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/өзгертілген файлдардан бас тартудың қажеті жоқ. Қайта пайдалануға болатын әрекеттерді құпияларды бірінші орынға қою арқылы пайдалану керек:
Құпияларды өңдеудің ең жақсы тәжірибелері
- Версияны басқару құпияларын ешқашан ашпаңыз
- Сезімтал жолдарға сәйкес келетін глобус үлгілерінен аулақ болыңыз
- Қоршаған ортаға негізделген құпияларды пайдаланыңыз (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бұзылған нұсқаларды пайдалануды анықтау үшін s (мысалы, tj-actions/changed-files@v45)
- сияқты ықтимал құпияларды қамтитын файлдарды сәйкестендіру үлгілерін тексереді **/*.env, *.key немесе .env.*
Саясатқа негізделген ақпараттық технологиялар Guardrails
- Үшінші тарап әрекеттері үшін SHA бекітуін мәжбүрлейді
- Құпияларды журналдарға жасыруы мүмкін қауіпті файл глобустарын пайдалануды блоктайды
- Алдын алады pipelineжұмыс процесінің шығыстарының бөлігі ретінде сезімтал мәндерді шығарудан s
Жұмыс процестерін қауіп-қатердің бір бөлігі ретінде қарастыру арқылы Xygeni құпия гигиенаның тек ең жақсы тәжірибе ғана емес, сонымен қатар кіріктірілген қорғаныс екеніне кепілдік береді.
Қорытынды: Құпия ағып кету қарапайым әрекетті дұрыс пайдаланбаудан басталуы мүмкін
CVE‑2025‑30066 кітапхана қатесі емес еді; ол CI/CD tj-actions/өзгертілген файлдарды дұрыс пайдаланбаудан туындаған дизайндағы сәтсіздік. DevSecOps командалары нені жоюы керек:
- CI-дегі әрбір glob/файл сілтемесін ықтимал ағып кету нүктесі ретінде қарастырыңыз
- Құпиялардың кездейсоқ енгізілуін анықтау үшін жұмыс процестерін үнемі тексеріп отырыңыз
- Қауіпсіз сейфтерді немесе қоршаған орта құпияларын пайдаланыңыз, құпияларды нұсқаны басқаруға ешқашан тексермеңіз
- Барлық жұмыс процесінің шығыстарын зарарсыздандырыңыз немесе сүзіңіз
- Аудиттелуін сақтау үшін сезімтал жұмыс процесінің әрекетін тіркеңіз
CI – код. Жұмыс ағындары – код. Журналдар мен шығыстар – код. Құпияларыңызды әр қадамда қорғаңыз, әйтпесе хакерді қажет етпейтін, тек жаман құпия ақпараттың таралу қаупін тудырыңыз. CI/CD дизайн таңдауы.




