Pentesting CI/CD Metodologija

Reading time: 8 minutes

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks

VCS

VCS označava Sistem Kontrole Verzija, ovaj sistem omogućava programerima da upravljaju svojim izvorni kodom. Najčešći je git i obično ćete naći kompanije koje ga koriste na jednoj od sledećih platformi:

  • Github
  • Gitlab
  • Bitbucket
  • Gitea
  • Cloud provajderi (oni nude svoje VCS platforme)

CI/CD Pipelines

CI/CD pipelines omogućavaju programerima da automatizuju izvršavanje koda za različite svrhe, uključujući izgradnju, testiranje i implementaciju aplikacija. Ovi automatizovani radni tokovi se pokreću specifičnim akcijama, kao što su push-ovi koda, pull zahtevi ili zakazani zadaci. Korisni su za pojednostavljenje procesa od razvoja do produkcije.

Međutim, ovi sistemi moraju biti izvršeni negde i obično sa privilegovanim akreditivima za implementaciju koda ili pristup osetljivim informacijama.

VCS Pentesting Metodologija

note

Čak i ako neke VCS platforme omogućavaju kreiranje pipelines, u ovoj sekciji ćemo analizirati samo potencijalne napade na kontrolu izvornog koda.

Platforme koje sadrže izvorni kod vašeg projekta sadrže osetljive informacije i ljudi moraju biti veoma oprezni sa dozvolama dodeljenim unutar ove platforme. Ovo su neki uobičajeni problemi na VCS platformama koje napadači mogu zloupotrebiti:

  • Leaking: Ako vaš kod sadrži curenja u commit-ima i napadač može pristupiti repozitorijumu (jer je javan ili jer ima pristup), mogao bi otkriti curenja.
  • Pristup: Ako napadač može pristupiti nalogu unutar VCS platforme, mogao bi dobiti veću vidljivost i dozvole.
  • Registracija: Neke platforme će samo omogućiti spoljnim korisnicima da kreiraju nalog.
  • SSO: Neke platforme neće dozvoliti korisnicima da se registruju, ali će omogućiti svakome da pristupi sa važećim SSO (tako da napadač može koristiti svoj github nalog da uđe, na primer).
  • Akreditivi: Korisničko ime+Lozinka, lični tokeni, ssh ključevi, Oauth tokeni, kolačići... postoji nekoliko vrsta tokena koje korisnik može ukrasti da bi na neki način pristupio repozitorijumu.
  • Webhook-ovi: VCS platforme omogućavaju generisanje webhook-ova. Ako nisu zaštićeni nevidljivim tajnama, napadač bi mogao da ih zloupotrebi.
  • Ako nema tajne, napadač bi mogao zloupotrebiti webhook treće strane
  • Ako je tajna u URL-u, isto se dešava i napadač takođe ima tajnu
  • Kompromitovanje koda: Ako zlonameran akter ima neku vrstu write pristupa nad repozitorijumima, mogao bi pokušati da ubaci zlonamerni kod. Da bi bio uspešan, možda će morati da obiđe zaštite grana. Ove akcije se mogu izvesti sa različitim ciljevima na umu:
  • Kompromitovati glavnu granu da bi kompromitovao produkciju.
  • Kompromitovati glavnu (ili druge grane) da bi kompromitovao mašine programera (jer obično izvršavaju testove, terraform ili druge stvari unutar repozitorijuma na svojim mašinama).
  • Kompromitovati pipeline (proverite sledeću sekciju)

Pipelines Pentesting Metodologija

Najčešći način da se definiše pipeline je korišćenjem CI konfiguracione datoteke koja se hostuje u repozitorijumu koji pipeline gradi. Ova datoteka opisuje redosled izvršenih poslova, uslove koji utiču na tok i postavke okruženja za izgradnju.
Ove datoteke obično imaju dosledno ime i format, na primer — Jenkinsfile (Jenkins), .gitlab-ci.yml (GitLab), .circleci/config.yml (CircleCI), i YAML datoteke GitHub Actions smeštene pod .github/workflows. Kada se pokrene, posao pipeline-a povlači kod iz odabranog izvora (npr. commit / grana), i izvršava komande navedene u CI konfiguracionoj datoteci protiv tog koda.

Stoga je krajnji cilj napadača da na neki način kompromituje te konfiguracione datoteke ili komande koje izvršavaju.

PPE - Izvršenje Zagađenog Pipeline-a

Putanja Izvršenja Zagađenog Pipeline-a (PPE) koristi dozvole u SCM repozitorijumu da manipuliše CI pipeline-om i izvršava štetne komande. Korisnici sa potrebnim dozvolama mogu modifikovati CI konfiguracione datoteke ili druge datoteke koje koristi posao pipeline-a da uključe zlonamerne komande. Ovo "zagađuje" CI pipeline, što dovodi do izvršenja ovih zlonamernih komandi.

Da bi zlonameran akter bio uspešan u izvođenju PPE napada, mora biti u mogućnosti da:

  • Ima write pristup VCS platformi, jer se obično pipelines pokreću kada se izvrši push ili pull zahtev. (Proverite VCS pentesting metodologiju za sažetak načina za dobijanje pristupa).
  • Imajte na umu da ponekad spoljni PR računa kao "write pristup".
  • Čak i ako ima write dozvole, mora biti siguran da može modifikovati CI konfiguracionu datoteku ili druge datoteke na koje se konfiguracija oslanja.
  • Za to, možda će morati da bude u mogućnosti da obiđe zaštite grana.

Postoje 3 vrste PPE:

  • D-PPE: Direktan PPE napad se dešava kada akter modifikuje CI konfiguraciju datoteku koja će biti izvršena.
  • I-DDE: Indirektan PPE napad se dešava kada akter modifikuje datoteku na koju se CI konfiguraciona datoteka oslanja (kao što je make datoteka ili terraform konfiguracija).
  • Javni PPE ili 3PE: U nekim slučajevima, pipelines mogu biti pokrenuti od strane korisnika koji nemaju write pristup u repozitorijumu (i koji možda čak nisu ni deo organizacije) jer mogu poslati PR.
  • 3PE Injekcija Komandi: Obično, CI/CD pipelines će postaviti promenljive okruženja sa informacijama o PR-u. Ako tu vrednost može kontrolisati napadač (kao što je naslov PR-a) i koristi se na opasnom mestu (kao što je izvršavanje sh komandi), napadač može ubaciti komande tamo.

Prednosti Eksploatacije

Poznavanje 3 vrste za zagađenje pipeline-a, hajde da proverimo šta napadač može dobiti nakon uspešne eksploatacije:

  • Tajne: Kao što je ranije pomenuto, pipelines zahtevaju privilegije za svoje poslove (preuzimanje koda, izgradnja, implementacija...) i te privilegije se obično dodeljuju u tajnama. Ove tajne su obično dostupne putem env promenljivih ili datoteka unutar sistema. Stoga će napadač uvek pokušati da eksfiltrira što više tajni.
  • U zavisnosti od platforme pipeline-a, napadač može morati da specificira tajne u konfiguraciji. To znači da ako napadač ne može da modifikuje CI konfiguracioni pipeline (I-PPE, na primer), može samo eksfiltrirati tajne koje taj pipeline ima.
  • Računanje: Kod se izvršava negde, u zavisnosti od toga gde se izvršava, napadač bi mogao biti u mogućnosti da se dalje preusmeri.
  • Na Mestu: Ako se pipelines izvršavaju na mestu, napadač bi mogao završiti u internoj mreži sa pristupom više resursima.
  • Cloud: Napadač bi mogao pristupiti drugim mašinama u cloud-u, ali takođe bi mogao eksfiltrirati IAM uloge/token-e servisnih naloga iz njega da bi dobio dalji pristup unutar cloud-a.
  • Mašine platforme: Ponekad će poslovi biti izvršeni unutar mašina platforme pipelines, koje obično su unutar cloud-a sa nema više pristupa.
  • Izaberi to: Ponekad će platforma pipelines imati konfigurisanih nekoliko mašina i ako možete modifikovati CI konfiguracionu datoteku, možete naznačiti gde želite da izvršite zlonamerni kod. U ovoj situaciji, napadač će verovatno pokrenuti reverznu ljusku na svakoj mogućoj mašini da pokuša da je dalje eksploatiše.
  • Kompromitovanje produkcije: Ako ste unutar pipeline-a i konačna verzija se gradi i implementira iz njega, mogli biste kompromitovati kod koji će se na kraju izvršavati u produkciji.

Više relevantnih informacija

Alati & CIS Benchmark

  • Chain-bench je alat otvorenog koda za reviziju vašeg softverskog lanca snabdevanja za bezbednosnu usklađenost zasnovan na novom CIS Software Supply Chain benchmark. Revizija se fokusira na ceo SDLC proces, gde može otkriti rizike od vremena koda do vremena implementacije.

Top 10 CI/CD Bezbednosnih Rizika

Proverite ovaj zanimljiv članak o top 10 CI/CD rizicima prema Cider-u: https://www.cidersecurity.io/top-10-cicd-security-risks/

Laboratorije

Automatski Alati

  • Checkov: Checkov je alat za statičku analizu koda za infrastrukturu kao kod.

Reference

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks