Ранливост на ескалација на привилегии

Ранливост на ескалација на привилегии во CI/CD pipelines

Повеќето тимови ја замислуваат ранливоста на ескалацијата на привилегиите како грешка во јадрото или злоупотреба. 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, тие често не се едно. Ескалацијата на привилегиите на контејнерот се случува кога кодот во контејнерот за градење добива контрола врз домаќинот, а со тоа и врз секоја друга задача што се извршува таму.

Три поставки се одговорни за повеќето случаи:

  1. Работи како root. Ако процесот во контејнерот е root, секое пробивање започнува од најсилната можна позиција.
  2. Привилегиран режим. Привилегираниот контејнер има речиси ист пристап до домаќинот како и процесот што работи директно на него.
  3. Монтиран Docker сокет. Монтажа /var/run/docker.sock во задача за да може ефикасно да креира слики со раце кои работат рутирање на домаќинот, бидејќи може да стартува нови привилегирани контејнери.

Истражувачите за безбедност покажаа како ова се одвива во реални CI системи. Во еден добро документиран случај, истражувачите преминаа од скрипти за градење што работат во CI контејнер на целосно бегство од контејнер на хостовите за градење на Cloudflare Pages, преcisely бидејќи контејнерот се третираше како безбедносна граница.

Еве како изгледа зајакнатата спецификација за работа на Кубернетес. Клучната поставка е allowPrivilegeEscalation: false, Која спречува процесот да добие повеќе привилегии од неговиот родител, на пример преку setuid бинарни датотеки.

ci-build-pod.yamlКубернети
# Зацврстен под за градење: ги блокира најчестите патеки за ескалација на привилегии на контејнери
apiВерзија: v1
вид: Pod
метаподатоци:
  името: ci-build
спец:
  безбедносен контекст:
    runAsNonRoot: вистина
    стартувајкакокорисник: 10001
    seccompПрофил:
      тип: Стандарднозавршување
  контејнери: - името: се изгради
      слика: registry.example.com/build-image@sha256:
      безбедносен контекст:
        allowPrivilegeEscalation: лажни
        привилегирана: лажни
        readOnlyRootFilesystems: вистина
        способности:				

Истиот принцип важи и за самата Dockerfile. Додадете корисник кој не е root и префрлете се на него пред точката на внесување:

dockerfileпристанишен работник
# Стартувај го контејнерот како корисник кој не е root
ОД јазол: 22-тенок
RUN useradd --флуид 10001 --креирај-дом градител
РАБОТЕН ДИРЕКТ /апликација
КОПИРАЈ --чоун=градител: градител . .
КОРИСНИК градител
CMD [„јазол“, „индекс.js“]
Зошто е важно: без КОРИСНИК инструкцијата, контејнерот работи како root. Префрлањето на наменски корисник пред точката на влез значи дека компромитиран процес започнува со најмали можни привилегии.

Документацијата на Кубернетес за конфигурирање на безбедносен контекст ги опфаќа сите овие поставки детално.

GitHub Actions: ранливост на ескалација што се крие на виделина

GitHub Actions е местото каде што многу тимови првпат се среќаваат со ескалација на привилегиите во CI/CD pipelines, бидејќи опасните шеми изгледаат сосема обични. Два од нив вреди да се проверат во секое складиште денес.

Опсег на токени. Секој работен тек добива GITHUB_TOKEN. Сопствени упатства на GitHub за автоматска автентикација на токени е јасно: дејството може да го достигне тој токен дури и ако не го пренесете експлицитно, па затоа секогаш треба да ги ограничите неговите дозволи на минимум. Поставувањето дозволи само за читање на врвот од работниот тек и доделувањето пристап за пишување по задача го отстранува најчестиот пат на ескалација во еден чекор:

.github/workflows/build.ymlДејства на 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се сведува на еден принцип: најмали привилегии, применети на секој слој и проверувани континуирано, а не еднаш. Практична контролна листа:

  1. Опсег на секој токен. Стандардно само за читање, пристап за пишување по задача и без токени за целата организација во работните процеси на складиштето.
  2. Одделете го доверливиот и недоверливиот код. Никогаш не извршувајте код од forks или надворешни соработници во задача што чува тајни.
  3. Стврднете го секој контејнер за градење. Корисници кои не се root, без привилегиран режим, без Docker сокет, намалени можности, allowPrivilegeEscalation: false.
  4. Заменете ги долговечните тајни. Претпочитајте краткотрајни федеративни акредитиви и веднаш поништете сè што е откриено.
  5. Закачи што работиш. Референца за дејства и слики од трети страни преку commit SHA или digest, па компромитирана ознака не може да го промени вашиот pipeline.
  6. Внимавајте на дрифт. Дозволите се прошируваат со текот на времето. Известување за нови администратори, ослабени заштити на филијалите и неочекувани промени во работниот процес.
  7. Портата 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 Безбедносната алатка континуирано ги скенира сите работни процеси, спецификациите на контејнерот и поставените дозволи и предупредува кога нешто ќе се прошири.

алатки-за-анализа-на-композиции-на-sca-алатки
Дајте приоритет, санирајте и обезбедете ги вашите софтверски ризици
Добијте ја вашата бесплатна сметка.
Не е потребна кредитна картичка.

Обезбедете го развојот и испораката на вашиот софтвер

со Xygeni Product Suite