Pentesting CI/CD Methodology

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

VCS

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

  • Github

  • Gitlab

  • Bitbucket

  • Gitea

  • Cloud provajderi (oni nude svoje sopstvene VCS platforme)

Pipelines

Pipelines omogućavaju programerima da automatizuju izvršavanje koda (za izgradnju, testiranje, implementaciju... svrhe) nakon što se određene radnje dese: push, PR, cron... Oni su veoma korisni za automatizaciju svih koraka od razvoja do produkcije.

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

Metodologija testiranja penetracije VCS-a

Čak i ako neke VCS platforme omogućavaju kreiranje pipelina, u ovom odeljku ć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 koje se dodeljuju unutar ove platforme. Ovo su neki uobičajeni problemi sa VCS platformama koje napadač može zloupotrebiti:

  • Curenje: Ako vaš kod sadrži curenja u commit-ovima i napadač može pristupiti repozitorijumu (jer je javan ili jer ima pristup), on može otkriti curenja.

  • Pristup: Ako napadač može pristupiti nalogu unutar VCS platforme, on može dobiti veću vidljivost i dozvole.

  • Registracija: Neke platforme će dozvoliti samo eksternim korisnicima da kreiraju nalog.

  • SSO: Neke platforme neće dozvoliti korisnicima da se registruju, ali će dozvoliti svakome da pristupi sa validnim SSO (tako da napadač može koristiti svoj github nalog da pristupi 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 pristupio repozitorijumu na neki način.

  • Webhook-ovi: VCS platforme omogućavaju generisanje webhook-ova. Ako nisu zaštićeni sa nevidljivim tajnama, napadač može zloupotrebiti ove webhook-ove.

  • Ako nije postavljena tajna, napadač može zloupotrebiti webhook treće strane

  • Ako je tajna u URL-u, isto se dešava i napadač takođe ima tajnu

  • Kompromitacija koda: Ako zlonamerni akter ima neku vrstu pisanog pristupa repozitorijumima, on može pokušati da ubaci zlonamerni kod. Da bi bio uspešan, možda će morati da zaobiđe zaštitu grane. Ove akcije se mogu izvršiti sa različitim ciljevima:

  • Kompromitacija glavne grane da bi se kompromitovala produkcija.

  • Kompromitacija glavne (ili drugih grana) da bi se kompromitovali računari programera (jer obično izvršavaju testove, terraform ili druge stvari unutar repozitorijuma na svojim računarima).

  • Kompromitacija pipeline-a (proverite sledeće odeljke)

Metodologija testiranja penetracije Pipelines-a

Najčešći način definisanja pipeline-a je korišćenjem konfiguracionog fajla CI-a koji se nalazi u repozitorijumu koji pipeline gradi. Ovaj fajl opisuje redosled izvršavanja poslova, uslove koji utiču na tok i postavke okruženja za izgradnju. Ovi fajlovi obično imaju dosledno ime i format, na primer - Jenkinsfile (Jenkins), .gitlab-ci.yml (GitLab), .circleci/config.yml (CircleCI), i GitHub Actions YAML fajlovi smešteni pod .github/workflows. Kada se pokrene, posao pipeline-a vuče kod sa izabranog izvora (npr. commit / grana) i izvršava komande navedene u konfiguracionom fajlu CI-a protiv tog koda.

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

PPE - Trovanje izvršavanja pipeline-a

Put trovanja izvršavanja pipeline-a (PPE) zloupotrebljava dozvole u SCM repozitorijumu da manipuliše CI pipeline-om i izvršava štetne komande. Korisnici sa potrebnim dozvolama mogu izmeniti konfiguracione fajlove CI-a ili druge fajlove koje koristi posao pipeline-a da bi uključili zlonamerne komande. Ovo "trovanje" CI pipeline-a dovodi do izvršavanja ovih zlonamernih komandi.

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

  • Ima pisan pristup VCS platformi, jer se pipeline-ovi obično pokreću kada se iz

Još relevantnih informacija

Alati i CIS Benchmark

  • Chain-bench je alat otvorenog koda za proveru usklađenosti sigurnosti vašeg softverskog lanca snabdevanja na osnovu novog CIS Software Supply Chain benchmarka. Provera se fokusira na ceo proces SDLC-a, gde može otkriti rizike od vremena kodiranja do vremena implementacije.

Top 10 CI/CD sigurnosnih rizika

Proverite ovaj interesantan članak o top 10 CI/CD rizika 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

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

Last updated