Większość zespołów postrzega lukę w zabezpieczeniach związaną z eskalacją uprawnień jako błąd jądra lub niewłaściwe wykorzystanie sudo na serwerze produkcyjnym. W 2026 roku bardziej niebezpieczna wersja żyje gdzie indziej: w pipeline który buduje i wysyła Twój kod. CI/CD Zadanie rutynowo utrzymuje dostęp do zapisu w repozytoriach, tokenach rejestrów pakietów i poświadczeniach w chmurze. Atakujący, który uruchamia kod w ramach tego zadania, nie musi się zbytnio wysilać. pipeline już to dla nich zrobił.
W tym przewodniku wyjaśniono, jak wygląda luka w zabezpieczeniach związana z eskalacją uprawnień CI/CD pipelinei kontenerów, omawia najpopularniejsze ścieżki wykorzystywane przez atakujących i pokazuje, jak zamknąć każdą z nich.
TL;DR: luka w zabezpieczeniach umożliwiająca eskalację uprawnień CI/CD pipelines
W pipeline, atakujący często nie musi eskalować uprawnień. pipeline już je ma. Luka w zabezpieczeniach umożliwiająca eskalację uprawnień CI/CD jest to zwykle uprawnienie o szerszym zakresie, niż wymaga tego dane zadanie, czekające na uruchomienie niezaufanego kodu.
- Pipelinesą uprzywilejowane z założenia. Czytają kod źródłowy, przechowują tajemnice, publikują artefakty i wdrażają je w środowisku produkcyjnym, co czyni je jednym z najcenniejszych celów eskalacji w Twojej organizacji.
- Większość ścieżek eskalacji wynika z błędnej konfiguracji, a nie z exploitów. Szerokie tokeny domyślne,
pull_request_targetprzepływy pracy wykorzystujące kod rozwidlony i długotrwałe klucze chmurowe powodują większe szkody niż jakiekolwiek klucze typu zero-day. - Eskalacja uprawnień kontenera zmienia jedno zadanie w całe zadanie. Kontenery uprzywilejowane, użytkownicy root i zamontowane gniazdo Docker sprawiają, że kontener kompilacji jest bramą, a nie granicą.
- Dzieje się to już na dużą skalę. Robak CHAINDROP wykorzystał podwyższony poziom dostępu w modułach uruchamiających GitHub Actions, aby odczytać dane uwierzytelniające bezpośrednio z pamięci modułu uruchamiającego.
- Rozwiązaniem jest uzyskanie jak najmniejszego uprawnienia i jego ciągłe egzekwowanie. Sprawdzaj zakres każdego tokena, zabezpieczaj każdy kontener i wykrywaj zmiany uprawnień, zanim atakujący je wykryje.
Co to jest podatność?
Luka w zabezpieczeniach związana z eskalacją uprawnień to każda słabość, która pozwala użytkownikowi, procesowi lub fragmentowi kodu uzyskać uprawnienia wykraczające poza ich przeznaczenie. MITRE ATT&CK śledzi to jako własną taktykę. TA0004: Eskalacja uprawnień, ponieważ to właśnie ten krok zmienia mały punkt zaczepienia w prawdziwą szkodę.
Istnieją dwie klasyczne formy:
- Eskalacja pionowa: przechodząc na przykład ze zwykłego użytkownika na użytkownika root lub z tokena tylko do odczytu na taki, który może zapisywać.
- Eskalacja pozioma: poruszanie się na boki, na przykład wykorzystywanie dostępu do jednego zadania w celu dotarcia do repozytorium, sekretów lub środowiska innego zespołu.
Atakujący wykorzystują lukę w zabezpieczeniach związaną z eskalacją uprawnień, wykorzystując trzy rodzaje słabości: błędy w oprogramowaniu, błędne konfiguracje i nadmierne uprawnienia. Na serwerach najwięcej uwagi poświęca się błędom. CI/CD pipelinePrawie całą pracę wykonują błędy w konfiguracji i nadmierne uprawnienia.
Dlaczego jest to tak niebezpieczne w CI/CD pipelines
A pipeline to nie tylko narzędzie do tworzenia. To zautomatyzowana tożsamość z jednym z najszerszych dostępów w Twojej firmie. Typowe zadanie może:
- Sprawdź i zmodyfikuj kod źródłowy
- Odczytuj sekrety ze zmiennych środowiskowych, sejfów i usług metadanych w chmurze
- Publikuj pakiety, obrazy i udostępniaj artefakty
- Wdrażanie na etapie przygotowawczym i produkcyjnym
OWASP Top 10 CI/CD Zagrożenia bezpieczeństwa bezpośrednio nazywa ten problem. Jego ryzyko CICD-SEC-5: Niewystarczające PipelineKontrola dostępu oparta na opisuje, w jaki sposób atakujący uruchamiają złośliwy kod w pipeline nadużywać udzielonych mu uprawnień do poruszania się w sposób boczny, wewnątrz lub na zewnątrz CI/CD pomimo napiętego harmonogramu
To nie jest teoria. Podczas kampanii CHAINDROP w sierpniu 2026 r. złośliwe oprogramowanie wyodrębniono tymczasowe dane uwierzytelniające z pamięci programu uruchamiającego GitHub Actions i wykorzystał skradzione tokeny publikacji do zainfekowania kolejnych pakietów. W systemach Linux ładunek uruchomił swój kolektor przez sudo aby odczytać pamięć procesu wykonawczego. To jest eskalacja uprawnień w CI/CD pipelines w najczystszej postaci: zatruta zależność, zwiększony dostęp do biegacza i każdy sekret, którego praca mogła dotknąć. To ten sam schemat, który widzimy w naszych cotygodniowych ustaleniach dotyczących złośliwe pakiety npm.
Gdzie w systemie ukrywa się luka w zabezpieczeniach umożliwiająca eskalację uprawnień? pipeline?
Sześć popularnych ścieżek, co każda z nich odblokowuje dla atakującego i kontrola, która ją zamyka.
| Ścieżka eskalacji | Jak to się dzieje | Co otrzymuje atakujący | Jak to zamknąć |
|---|---|---|---|
| Uprzywilejowany pipeline jako unikalny cyfrowy, niezmienny certyfikat, który | Przepływy pracy działają z szerokimi domyślnymi zakresami tokenów, ponieważ nie permissions blok jest ustawiony | Dostęp do kodu, wydań i innych przepływów pracy | Ustaw domyślne ustawienia tylko do odczytu i udziel dostępu do zapisu dla każdego zadania, tylko tam, gdzie jest to konieczne |
| Zatrute pipeline egzekucja | pull_request_target lub podobne wyzwalacze sprawdzają i uruchamiają kod z niezaufanego forka | Sekrety repozytorium i token zapisu z jednego pull request | Nigdy nie uruchamiaj kodu fork w kontekście uprzywilejowanym; rozdziel zadania zaufane i niezaufane |
| Eskalacja uprawnień kontenera | Kontenery kompilacji uruchamiane jako root, w trybie uprzywilejowanym lub z zamontowanym gniazdem Docker | Uzyskaj dostęp do roota na hoście wykonawczym i każdego uruchomionego przez niego zadania | Uruchom jako użytkownik inny niż root, usuń możliwości i zablokuj eskalację uprawnień w specyfikacji kontenera |
| Długotrwałe dane uwierzytelniające w chmurze | Statyczne klucze chmury przechowywane jako sekrety lub zmienne środowiskowe | Stały dostęp do kont w chmurze, długo po zakończeniu zadania | Użyj krótkotrwałych, federacyjnych poświadczeń i automatyczne unieważnianie ujawnionych sekretów |
| Uporczywi, samodzielnie hostowani biegacze | Runnery są ponownie wykorzystywane w różnych zadaniach i repozytoriach bez konieczności ich ponownego tworzenia | Wytrwałość i umiejętność manipulowania konfiguracjami innych zespołów | Użyj efemerycznych biegaczy i izoluj ich według poziomu zaufania |
| Nadmiernie uprzywilejowane konta ludzkie | Nieaktywni administratorzy, zewnętrzni współpracownicy i nieprzejrzane zmiany uprawnień kumulują się | Ważne konto, które można zmienić pipelinei ochrony gałęzi | Ciągły przegląd dostępu i powiadamianie o nietypowych zmianach uprawnień |
Eskalacja uprawnień kontenera: gdy kontener kompilacji nie jest granicą
Kontenery dają poczucie izolacji, dlatego zespoły często traktują je jako granicę bezpieczeństwa. CI/CD, często nie są one jednym. Eskalacja uprawnień kontenera ma miejsce, gdy kod w kontenerze kompilacji przejmuje kontrolę nad hostem, a wraz z nim nad każdym innym zadaniem tam uruchomionym.
W większości przypadków można wyróżnić trzy ustawienia:
- Uruchamiam jako root. Jeśli procesem wewnątrz kontenera jest proces root, każde wyłamanie rozpocznie się od najsilniejszej możliwej pozycji.
- Tryb uprzywilejowany. Uprzywilejowany kontener ma niemal taki sam dostęp do hosta, jak proces działający bezpośrednio na nim.
- Zamontowane gniazdo Docker. Montowanie
/var/run/docker.sockdo zadania, dzięki czemu może skutecznie tworzyć obrazy, przekazuje zadanie główne hostowi, ponieważ może uruchamiać nowe uprzywilejowane kontenery.
Badacze bezpieczeństwa pokazali, jak to się dzieje w rzeczywistych systemach CI. W jednym dobrze udokumentowanym przypadku badacze przeszli od skryptów kompilacji uruchamianych w kontenerze CI do pełna ucieczka kontenera na hostach kompilacji Cloudflare Pages, dlaciswyłącznie dlatego, że kontener był traktowany jako granica bezpieczeństwa.
Oto jak wygląda utwardzona specyfikacja zadania Kubernetes. Kluczowe ustawienie to allowPrivilegeEscalation: false, który zapobiega uzyskaniu przez proces większych uprawnień niż jego proces nadrzędnyna przykład poprzez pliki binarne setuid.
# Wzmocniony kontener kompilacji: blokuje najczęstsze ścieżki eskalacji uprawnień kontenera Wersja api: v1 uprzejmy: Strąk metadanych: Nazwa: ci-build specyfikacja: kontekst bezpieczeństwa: uruchomJakoNieRoot: prawdziwy uruchom jako użytkownik: 10001 Profil seccomp: rodzaj: Domyślny czas wykonania Pojemniki: - Nazwa: budować obraz: registry.example.com/build-image@sha256: kontekst bezpieczeństwa: zezwól na eskalację uprawnień: fałszywy uprzywilejowany: fałszywy readOnlyRootFilesystem: prawdziwy możliwości:
Ta sama zasada dotyczy samego pliku Dockerfile. Dodaj użytkownika innego niż root i przełącz się na niego przed punktem wejścia:
# Uruchom kontener jako użytkownik inny niż root OD węzeł:22-slim BIEGAĆ użytkownikradd --uid 10001 --utwórz-dom budowniczy KIERUNEK ROBOCZY / app KOPIA --chown=budowniczy:budowniczy , , USER budowniczy CMD ["węzeł", "index.js"]
Dokumentacja Kubernetesa na temat konfigurowanie kontekstu zabezpieczeń omawia szczegółowo każde z tych ustawień.
GitHub Actions: luka w zabezpieczeniach umożliwiająca eskalację, która jest widoczna gołym okiem
GitHub Actions to miejsce, w którym wiele zespołów po raz pierwszy spotyka się z eskalacją uprawnień CI/CD pipelines, ponieważ niebezpieczne wzory wyglądają zupełnie zwyczajnie. Dwa z nich warto sprawdzić w każdym repozytorium już dziś.
Zakres tokena. Każdy przepływ pracy otrzymuje GITHUB_TOKENWłasne wytyczne GitHub dotyczące automatyczne uwierzytelnianie tokenem Jest jasne: akcja może dotrzeć do tego tokena, nawet jeśli nie zostanie on przekazany jawnie, dlatego zawsze należy ograniczać jego uprawnienia do minimum. Ustawienie uprawnień tylko do odczytu na początku przepływu pracy i przyznanie dostępu do zapisu dla każdego zadania eliminuje najczęstszą ścieżkę eskalacji w jednym kroku:
Nazwa: budować on: [naciskać] # Domyślnie dla każdego zadania: tylko do odczytu uprawnienia: treść: czytać Oferty pracy: test: biegnie dalej: ubuntu-najnowsze kroki: # Przypnij działania stron trzecich do pełnego commit SHA, nie jest tagiem zmiennym - zastosowania: działania/kasa@commit-sha> - biegać: npm ci && test npm zwolnić: wymagania: test biegnie dalej: ubuntu-najnowsze # Tylko ta praca może pisać i tylko to, co jest potrzebne uprawnienia: treść: napisać kroki: - zastosowania: działania/kasa@commit-sha> - biegać: ./scripts/release.sh
Niepewne wyzwalacze. Przepływy pracy wyzwalane przez pull_request_target uruchomić z sekretami docelowego repozytorium i tokenem z możliwością zapisu, nawet gdy pull request pochodzi z forka. Jeśli ten przepływ pracy następnie wyewidencjonuje i uruchomi kod forka, każdy może otworzyć pull request i wykonaj kod z uprawnieniami. To luka w zabezpieczeniach umożliwiająca eskalację uprawnień, która nie wymaga żadnego exploita, wystarczy pull request. Wykonuj kroki z uprawnieniami do zaufanego kodu i uruchamiaj niezaufany kod w osobnym przepływie pracy bez poufnych informacji.
Jeśli chcesz zobaczyć te wzory w bezpiecznym miejscu, koza-xygeni repozytorium gromadzi celowo niezabezpieczone dane pipeline oraz IaC konfiguracje do szkolenia. Aby uzyskać szerszy przegląd konfiguracji GitHub, zapoznaj się z naszym przewodnikiem jak sprawdzić, czy aplikacja lub repozytorium GitHub jest bezpieczne.
Jak zapobiegać podatności na eskalację uprawnień w CI/CD pipelines
Zamykanie eskalacji uprawnień w CI/CD pipelineSprowadza się to do jednej zasady: najmniejszego uprzywilejowania, stosowanego na każdej warstwie i sprawdzanego w sposób ciągły, a nie jednorazowo. Praktyczna lista kontrolna:
- Zakres każdego tokena. Tylko do odczytu domyślnie, dostęp do zapisu dla każdego zadania i brak tokenów obejmujących całą organizację w przepływach pracy w repozytorium.
- Oddziel kod zaufany od niezaufanego. Nigdy nie uruchamiaj kodu pochodzącego z forków lub od zewnętrznych współpracowników w zadaniu, które zawiera tajemnice.
- Utwardź każdy kontener konstrukcyjny. Użytkownicy bez uprawnień root, brak trybu uprzywilejowanego, brak gniazda Docker, pominięte możliwości,
allowPrivilegeEscalation: false. - Zastąp długotrwałe sekrety. Preferuj krótkotrwałe poświadczenia federacyjne i natychmiast cofaj wszystkie ujawnione informacje.
- Przypnij to, co biegasz. Odnośniki do działań i obrazów osób trzecich commit SHA lub digest, więc zagrożony tag nie może zmienić Twojego pipeline.
- Uważaj na dryf. Uprawnienia rozszerzają się z czasem. Powiadomienia o nowych administratorach, osłabionych zabezpieczeniach gałęzi i nieoczekiwanych zmianach w przepływie pracy.
- Brama pipeline. Zakończ kompilację niepowodzeniem, gdy pojawi się krytyczny błąd konfiguracji, zanim zostanie ona scalona.
Trudność polega nie na znajomości tych zasad. Trudność polega na ich egzekwowaniu w setkach repozytoriów i przepływach pracy, które zmieniają się każdego dnia.
W jaki sposób Xygeni zatrzymuje lukę w zabezpieczeniach związaną z eskalacją uprawnień? CI/CD?
Każda ścieżka eskalacji jest dopasowana do możliwości Xygeni, która ją wykrywa lub blokuje.
| Ryzyko | Co robi Xygeni |
|---|---|
| Pipeline błędne konfiguracje | Detektory błędnej konfiguracji skanuj definicje zadań CI, twórz skrypty i pliki konfiguracyjne w serwisach GitHub, GitLab, Azure DevOps, Bitbucket, CircleCI i Jenkins oraz flaguj uprawnienia w szerszym zakresie niż pozwala na to najlepsza praktyka |
| Eskalacja uprawnień kontenera | IaC i kontrole kontenerów obejmuje pliki Dockerfile, pliki docker-compose, manifesty Kubernetes i wykresy Helm, w tym kontenery uruchamiane jako root |
| Użytkownicy z nadmierną liczbą uprawnień i nieaktywni | Analiza najmniejszych uprawnień identyfikuje nieaktywnych i nadmiernie uprzywilejowanych użytkowników, a także Health Check zamienia każde znalezisko w bilet |
| Dryf uprawnień | Alerty wykrywania anomalii dotyczące nietypowych zmian uprawnień, nietypowych połączeń i nieoczekiwanych instalacji wtyczek |
| Ujawnione dane uwierzytelniające | Wykrywanie sekretów obejmuje kod, pipelineobrazy kontenerów i s z automatycznym unieważnianiem dla obsługiwanych typów tajnych |
| Złośliwy kod w pipeline | Blokuje odwrotne powłoki i pobieranie złośliwego oprogramowania pipelinew czasie rzeczywistym, a MEW wykrywa złośliwe pakiety jeszcze przed powstaniem podpisu |
| Egzekwowanie | Pre-commit hooks i CI guardrails nie udaj kompilacji w przypadku problemów krytycznych, korzystając z niestandardowych zasad YAML dla własnych reguł |
Kontrole są zgodne z OWASP Top 10 CI/CD Zagrożenia bezpieczeństwa oraz standardtakie jak CIS, NIST i OpenSSF. Każde odkrycie wpływa do Xygeni ASPM, gdzie jest ono traktowane priorytetowo, obok ustaleń dotyczących kodu, zależności i sekretów, tak aby luka w zabezpieczeniach związana z eskalacją uprawnień, która faktycznie dociera do środowiska produkcyjnego, została naprawiona w pierwszej kolejności.
Największe zwiększenie uprawnień w CI/CD pipelines już znajduje się w plikach przepływu pracy i czeka na uruchomienie niezaufanego kodu.
FAQ
Czym jest luka w zabezpieczeniach związana z eskalacją uprawnień? CI/CD?
To każda słabość, która pozwala na uruchomienie kodu w pipeline uzyskać szerszy dostęp, niż jest to wymagane w danym zadaniu, np. token z nadmierną liczbą uprawnień, przepływ pracy, który uruchamia niezaufany kod z sekretami lub kontener kompilacji, który może dotrzeć do hosta.
Czym jest eskalacja uprawnień kontenera?
Eskalacja uprawnień kontenera ma miejsce, gdy proces wewnątrz kontenera uzyskuje wyższe uprawnienia, często uprawnienia roota na hoście. Typowe przyczyny to działanie jako root, w trybie uprzywilejowanym oraz zamontowane gniazdo Dockera.
Czy allowPrivilegeEscalation: false zatrzymać ucieczkę kontenerów?
Blokuje jedną ważną ścieżkę: proces uzyskujący większe uprawnienia niż jego element nadrzędny, na przykład poprzez pliki binarne z identyfikatorem setuid. Działa najlepiej w połączeniu z użytkownikiem innym niż root, z ograniczonymi uprawnieniami i bez trybu uprzywilejowanego.
Is pull_request_target zawsze niebezpieczne?
Nie samo w sobie. Staje się to luką w zabezpieczeniach związaną z eskalacją uprawnień, gdy przepływ pracy wyewidencjonowuje i uruchamia kod z pull request, ponieważ kod ten jest następnie uruchamiany z użyciem Twoich sekretów i tokena z możliwością zapisu.
Jak znaleźć ścieżki eskalacji uprawnień w wielu repozytoriach?
Ręczne recenzje nie są skalowalne. Zautomatyzowane CI/CD Narzędzie bezpieczeństwa stale skanuje każdy przepływ pracy, specyfikację kontenera i zestaw uprawnień i wysyła alerty, gdy coś się rozszerza.







