Повеќето тимови ја замислуваат ранливоста на ескалацијата на привилегиите како грешка во јадрото или злоупотреба. sudo на продукциски сервер. Во 2026 година, поопасната верзија живее некаде на друго место: во pipeline што го гради и испорачува вашиот код. А CI/CD задачата рутински задржува пристап за пишување во вашите складишта, токени за вашите регистри на пакети и акредитиви за вашиот облак. Напаѓачот кој ќе го изврши кодот во таа задача не треба многу да ескалира. pipeline веќе го направи тоа за нив.
Ова упатство објаснува како изгледа ранливоста при ескалација на привилегии во CI/CD pipelines и контејнери, ги разгледува најчестите патеки што ги користат напаѓачите и покажува како да се затвори секоја од нив.
TL;DR: ранливост на ескалација на привилегии во CI/CD pipelines
Во pipeline, напаѓачот често нема потреба да ги ескалира привилегиите. pipeline веќе ги има. Ранливост на ескалација на привилегии во CI/CD обично е дозвола нацртана пошироко од потребното за задачата, чекајќи недоверлив код да се изврши во неа.
- Pipelineсе привилегирани по дизајн. Тие читаат изворен код, чуваат тајни, објавуваат артефакти и се распоредуваат во производство, што ги прави една од највредните цели за ескалација во вашата организација.
- Повеќето патеки за ескалација се погрешни конфигурации, а не експлоатации. Широки стандардни токени,
pull_request_targetРаботните процеси што извршуваат fork код и долготрајните cloud клучеви прават поголема штета од кој било zero-day. - Ескалацијата на привилегиите на контејнерите ја претвора една задача во цел извршен директор. Привилегираните контејнери, root корисниците и монтираниот Docker сокет го прават контејнерот за градење врата, а не граница.
- Тоа веќе се случува на големо. Црвот CHAINDROP користел зголемен пристап на извршувачите на GitHub Actions за да чита акредитиви директно од меморијата на извршувачот.
- Поправката е со најмали привилегии, применета континуирано. Провери го секој токен, зацврсти го секој контејнер и откриј го отстапувањето од дозволите пред напаѓачот да го пронајде.
Што е тоа ранливост?
Ранливоста при ескалација на привилегии е секоја слабост што му овозможува на корисник, процес или дел од кодот да добие дозволи над она што требало да го има. MITRE ATT&CK го следи тоа како своја тактика, TA0004: Ескалација на привилегии, бидејќи токму скалата го претвора малото потпирање во вистинска штета.
Постојат две класични форми:
- Вертикална ескалација: преминување нагоре, на пример од обичен корисник на root, или од токен само за читање на токен што може да пишува.
- Хоризонтална ескалација: движејќи се странично, на пример користејќи го пристапот на една работа за да се стигне до складиштето, тајните или околината на друг тим.
Напаѓачите ја искористуваат ранливоста на ескалација на привилегии преку три вида слабости: софтверски грешки, погрешни конфигурации и прекумерни дозволи. На серверите, грешките го привлекуваат најголемото внимание. CI/CD pipelines, погрешните конфигурации и прекумерните дозволи ја завршуваат речиси целата работа.
Зошто е толку опасно во CI/CD pipelines
A pipeline не е само алатка за градење. Тоа е автоматизиран идентитет со најширок пристап во вашата компанија. Типична работа може:
- Проверете го и изменете го изворниот код
- Читајте тајни од променливи на околината, трезори и услуги за метаподатоци во облак
- Објавувајте пакети, слики и ослободете артефакти
- Распоредување за поставување и продукција
на OWASP Топ 10 CI/CD Безбедносни ризици директно го именува овој проблем. Неговиот ризик CICD-SEC-5: Недоволно Pipeline-Контроли за пристап базирани на опишува како напаѓачите кои извршуваат малициозен код во pipeline ги злоупотребува дозволите што му се дадени за движење странично, внатре или надвор од CI/CD систем.
Ова не е теоретски. За време на кампањата CHAINDROP во август 2026 година, малициозниот софтвер извлечени се привремени акредитиви од меморијата на извршителот на GitHub Actions и користеле украдени токени за објавување за да инфицираат повеќе пакети. На Linux извршувачите, товарот го стартуваше својот колектор преку sudo да ја прочита меморијата на процесот извршител. Тоа е ескалација на привилегии во CI/CD pipelineво најчиста форма: отруена зависност, зголемен пристап до тркачот и секоја тајна што работата може да ја допре. Тоа е истиот модел што го гледаме во нашите неделни наоди за малициозни npm пакети.
Каде се крие ранливоста на ескалација на привилегии во pipeline?
Шест вообичаени патеки, што секоја од нив отклучува за напаѓачот и контролата што ги затвора.
| Патека за ескалација | Како се случува | Што добива напаѓачот | Како да го затворите |
|---|---|---|---|
| Препривилегирани pipeline знак | Работните текови работат со широки стандардни опсези на токени бидејќи нема permissions блокот е поставен | Пристап за пишување на код, изданија и други работни процеси | Поставете стандардни поставки само за читање и доделете пристап за пишување по задача, само кога е потребно |
| Труење pipeline извршување | pull_request_target или слични тригери проверуваат и извршуваат код од недоверлива вилушка | Тајни на складиштето и токен за запишување, од еден единствен pull request | Никогаш не извршувајте fork код во привилегиран контекст; поделете доверливи и недоверливи задачи |
| Ескалација на привилегии на контејнер | Контејнерите за градење работат како root, во привилегиран режим или со монтиран Docker сокет | Рутирајте на хостот на runner и пристапете до секоја задача што ја извршува | Изврши како не-root, отфрли ги можностите и блокирај ја ескалацијата на привилегиите во спецификацијата на контејнерот |
| Долготрајни акредитиви во облакот | Статични клучеви во облакот складирани како тајни или променливи на околината | Постојан пристап до cloud сметки, долго по завршувањето на работата | Користете краткотрајни, федерални акредитиви и автоматски поништува откриени тајни |
| Упорни тркачи кои самостојно се хранат | Тркачите се користат повторно низ задачи и складишта без да се градат повторно. | Упорност и способност за менување на градбите на другите тимови | Користете ефемерни трчачи и изолирајте ги според ниво на доверба |
| Премногу привилегирани човечки сметки | Неактивни администратори, надворешни соработници и непрегледани промени на дозволи се натрупуваат | Валидна сметка што може да се промени pipelineи заштита на гранки | Континуирано прегледувај го пристапот и известувај за аномални промени во дозволите |
Ескалација на привилегии на контејнер: кога контејнерот за градење не е граница
Контејнерите се чувствуваат како изолација, па затоа тимовите често ги третираат како безбедносна граница. CI/CD, тие често не се едно. Ескалацијата на привилегиите на контејнерот се случува кога кодот во контејнерот за градење добива контрола врз домаќинот, а со тоа и врз секоја друга задача што се извршува таму.
Три поставки се одговорни за повеќето случаи:
- Работи како root. Ако процесот во контејнерот е root, секое пробивање започнува од најсилната можна позиција.
- Привилегиран режим. Привилегираниот контејнер има речиси ист пристап до домаќинот како и процесот што работи директно на него.
- Монтиран Docker сокет. Монтажа
/var/run/docker.sockво задача за да може ефикасно да креира слики со раце кои работат рутирање на домаќинот, бидејќи може да стартува нови привилегирани контејнери.
Истражувачите за безбедност покажаа како ова се одвива во реални CI системи. Во еден добро документиран случај, истражувачите преминаа од скрипти за градење што работат во CI контејнер на целосно бегство од контејнер на хостовите за градење на Cloudflare Pages, преcisely бидејќи контејнерот се третираше како безбедносна граница.
Еве како изгледа зајакнатата спецификација за работа на Кубернетес. Клучната поставка е allowPrivilegeEscalation: false, Која спречува процесот да добие повеќе привилегии од неговиот родител, на пример преку setuid бинарни датотеки.
# Зацврстен под за градење: ги блокира најчестите патеки за ескалација на привилегии на контејнери apiВерзија: v1 вид: Pod метаподатоци: името: ci-build спец: безбедносен контекст: runAsNonRoot: вистина стартувајкакокорисник: 10001 seccompПрофил: тип: Стандарднозавршување контејнери: - името: се изгради слика: registry.example.com/build-image@sha256: безбедносен контекст: allowPrivilegeEscalation: лажни привилегирана: лажни readOnlyRootFilesystems: вистина способности:
Истиот принцип важи и за самата Dockerfile. Додадете корисник кој не е root и префрлете се на него пред точката на внесување:
# Стартувај го контејнерот како корисник кој не е root ОД јазол: 22-тенок RUN useradd --флуид 10001 --креирај-дом градител РАБОТЕН ДИРЕКТ /апликација КОПИРАЈ --чоун=градител: градител . . КОРИСНИК градител CMD [„јазол“, „индекс.js“]
Документацијата на Кубернетес за конфигурирање на безбедносен контекст ги опфаќа сите овие поставки детално.
GitHub Actions: ранливост на ескалација што се крие на виделина
GitHub Actions е местото каде што многу тимови првпат се среќаваат со ескалација на привилегиите во CI/CD pipelines, бидејќи опасните шеми изгледаат сосема обични. Два од нив вреди да се проверат во секое складиште денес.
Опсег на токени. Секој работен тек добива GITHUB_TOKEN. Сопствени упатства на GitHub за автоматска автентикација на токени е јасно: дејството може да го достигне тој токен дури и ако не го пренесете експлицитно, па затоа секогаш треба да ги ограничите неговите дозволи на минимум. Поставувањето дозволи само за читање на врвот од работниот тек и доделувањето пристап за пишување по задача го отстранува најчестиот пат на ескалација во еден чекор:
името: се изгради on:[притисни] # Стандардно за секоја задача: само за читање дозволи: содржината: чита работни места: тест: работи-на: најновото издание на ubuntu чекори: # Закачи ги дејствата од трети страни на целосен commit SHA, не е променлива ознака - употреба: акции/наплата@commit-ша> - работи: npm ci && npm тест порака: потреби: тест работи-на: најновото издание на ubuntu # Само оваа работа може да пишува, и само она што ѝ е потребно дозволи: содржината: пишувам чекори: - употреба: акции/наплата@commit-ша> - работи: ./scripts/release.sh
Недоверливи активирачи. Работни текови предизвикани од pull_request_target работи со тајните на целното складиште и токен способен за пишување, дури и кога pull request доаѓа од вилушка. Ако тој работен тек потоа го провери и го изврши кодот на вилушката, секој може да отвори pull request и извршете код со вашите привилегии. Тоа е ранливост на ескалација на привилегии која воопшто не бара експлоатација, само pull requestЧувајте ги привилегираните чекори на доверливиот код и стартувајте го недоверливиот код во посебен работен тек без тајни.
Ако сакате да ги видите овие шеми на безбедно место, ксигени-коза складиштето собира намерно небезбедно pipeline IaC конфигурации за обука. За поширок преглед на вашата GitHub поставка, видете го нашиот водич за како да знаете дали апликацијата или складиштето на GitHub се безбедни.
Како да се спречи ранливоста на ескалација на привилегии во CI/CD pipelines
Затворање на ескалацијата на привилегии во CI/CD pipelineсе сведува на еден принцип: најмали привилегии, применети на секој слој и проверувани континуирано, а не еднаш. Практична контролна листа:
- Опсег на секој токен. Стандардно само за читање, пристап за пишување по задача и без токени за целата организација во работните процеси на складиштето.
- Одделете го доверливиот и недоверливиот код. Никогаш не извршувајте код од forks или надворешни соработници во задача што чува тајни.
- Стврднете го секој контејнер за градење. Корисници кои не се root, без привилегиран режим, без Docker сокет, намалени можности,
allowPrivilegeEscalation: false. - Заменете ги долговечните тајни. Претпочитајте краткотрајни федеративни акредитиви и веднаш поништете сè што е откриено.
- Закачи што работиш. Референца за дејства и слики од трети страни преку commit SHA или digest, па компромитирана ознака не може да го промени вашиот pipeline.
- Внимавајте на дрифт. Дозволите се прошируваат со текот на времето. Известување за нови администратори, ослабени заштити на филијалите и неочекувани промени во работниот процес.
- Портата pipeline. Неуспешно градење кога ќе се појави критична погрешна конфигурација, пред да се спои.
Тешкиот дел е да не се знаат овие правила. Тие се спроведуваат низ стотици репозиториуми и работни процеси што се менуваат секој ден.
Како Xygeni спречува ранливост на ескалација на привилегии во CI/CD?
Секоја патека на ескалација, се совпаѓа со можноста на Xygeni што ја детектира или блокира.
| Ризик | Што прави Xygeni |
|---|---|
| Pipeline погрешни конфигурации | Детектори за погрешна конфигурација скенирање на дефиниции за задачи на CI, креирање скрипти и конфигурациски датотеки низ GitHub, GitLab, Azure DevOps, Bitbucket, CircleCI и Jenkins и означување на дозволи пошироки од оние што ги дозволува најдобрата пракса |
| Ескалација на привилегии на контејнер | IaC и проверки на контејнери покривање на Dockerfiles, docker-compose датотеки, Kubernetes манифести и Helm графикони, вклучувајќи контејнери што работат како root |
| Премногу привилегирани и неактивни корисници | Анализата со најмалку привилегии ги идентификува неактивните и препривилегираните корисници, а Health Check го претвора секое откритие во билет |
| Промената на дозволите | Предупредувања за откривање аномалии при необични промени на дозволите, аномални спојувања и неочекувани инсталации на додатоци |
| Откриени акредитиви | Откривањето на тајни опфаќа код, pipelines и слики од контејнери, со автоматско повлекување за поддржани тајни типови |
| Малициозен код во pipeline | Блокира обратни школки и преземања на малициозен софтвер во pipelines во реално време, а MEW детектира малициозни пакети пред да постои потпис |
| спроведување | Pre-commit hooks и CI guardrails неуспешно градење на критични проблеми, со прилагодени YAML политики за вашите сопствени правила |
Проверките се усогласуваат со OWASP Топ 10 CI/CD Безбедносни ризици standardи како што се CIS, NIST и OpenSSFСекое откритие се влева во Xygeni ASPM, каде што е дадена приоритет заедно со наодите од код, зависности и тајни, така што ранливоста на ескалација на привилегии што всушност стигнува до производството се поправа прва.
Најголема ескалација на привилегии во CI/CD pipelines веќе седи во вашите датотеки на работниот тек, чекајќи да се изврши недоверлив код.
NAJČESTO POSTAVUVANI PRAŠANJA
Што е ранливост на ескалација на привилегии во CI/CD?
Секоја слабост е таа што дозволува кодот да работи во pipeline да добијат повеќе пристап отколку што е потребно за работата, како што е препривилегиран токен, работен тек што извршува недоверлив код со тајни или контејнер за градење што може да стигне до домаќинот.
Што е ескалација на привилегии на контејнер?
Ескалација на привилегии на контејнер е кога процес во контејнер добива повисоки привилегии, честопати root на хостот. Вообичаени причини се работење како root, привилегиран режим и монтиран Docker сокет.
Не allowPrivilegeEscalation: false да се спречи бегањето од контејнери?
Тоа блокира еден важен пат: процес кој добива повеќе привилегии од неговиот родител, на пример преку setuid бинарни датотеки. Најдобро работи во комбинација со корисник кој не е root, исклучени можности и без привилегиран режим.
Is pull_request_target секогаш опасно?
Не само по себе. Станува ранливост на ескалација на привилегии кога работниот тек ќе провери и ќе изврши код од pull request, бидејќи тој код потоа се извршува со вашите тајни и токен способен за пишување.
Како да најдам патеки за ескалација на привилегии низ многу репозиториуми?
Рачните прегледи не се скалираат. Автоматизиран CI/CD Безбедносната алатка континуирано ги скенира сите работни процеси, спецификациите на контејнерот и поставените дозволи и предупредува кога нешто ќе се прошири.







