Pentesting CI/CD Methodology

htARTE (HackTricks AWS Red Team Expert) ile sıfırdan kahraman olmak için AWS hackleme öğrenin!

HackTricks'ı desteklemenin diğer yolları:

VCS

VCS, Sürüm Kontrol Sistemi anlamına gelir ve bu sistemler geliştiricilerin kaynak kodlarını yönetmelerine olanak tanır. En yaygın olanı git olup, genellikle şirketlerin aşağıdaki platformlardan birini kullanarak kullandığını göreceksiniz:

  • Github

  • Gitlab

  • Bitbucket

  • Gitea

  • Bulut sağlayıcıları (kendi VCS platformlarını sunarlar)

Pipelines

Pipelines, geliştiricilere kodun otomatik olarak yürütülmesini (derleme, test, dağıtma vb. amaçlarla) belirli eylemler gerçekleştikten sonra sağlar: Bir itme, bir PR, cron... Bunlar, geliştirmeden üretime kadar olan tüm adımları otomatikleştirmek için son derece kullanışlıdır.

Ancak, bu sistemlerin bir yerde yürütülmesi ve genellikle kod dağıtmak için ayrıcalıklı kimlik bilgilerine sahip olması gerekir.

VCS Pentest Metodolojisi

Bazı VCS platformlarının bu bölüm için pipeline'lar oluşturmaya izin vermesine rağmen, sadece kaynak kodun kontrolüne yönelik potansiyel saldırıları analiz edeceğiz.

Projenizin kaynak kodunu içeren platformlar, hassas bilgiler içerir ve insanlar bu platform içinde verilen izinlere çok dikkat etmelidir. Saldırganın istismar edebileceği bazı yaygın sorunlar şunlardır:

  • Sızıntılar: Kodunuz, taahhütlerde sızıntılar içeriyorsa ve saldırgan repo'ya erişebiliyorsa (genel veya erişimi olduğu için), sızıntıları keşfedebilir.

  • Erişim: Bir saldırgan, VCS platformu içindeki bir hesaba erişebilirse, daha fazla görünürlük ve izin elde edebilir.

  • Kayıt: Bazı platformlar yalnızca harici kullanıcıların hesap oluşturmasına izin verir.

  • SSO: Bazı platformlar kullanıcıların kaydolmasına izin vermez, ancak geçerli bir SSO ile herkesin erişmesine izin verir (bu nedenle bir saldırgan örneğin github hesabını kullanabilir).

  • Kimlik bilgileri: Kullanıcıların bir şekilde bir repo'ya erişmek için çalabileceği kullanıcı adı + şifre, kişisel belirteçler, ssh anahtarları, Oauth belirteçleri, çerezler... birkaç tür belirteç vardır.

  • Webhooks: VCS platformları, webhooks oluşturmayı sağlar. Eğer bunlar görünmez sırlarla korunmuyorsa, bir saldırgan bunları istismar edebilir.

  • Eğer bir sır yoksa, saldırgan üçüncü taraf platformunun webhook'unu istismar edebilir

  • Eğer sır URL'de ise, aynı şey olur ve saldırgan ayrıca sırra sahip olur

  • Kodun tehlikeye girmesi: Kötü niyetli bir aktörün repo'lar üzerinde bir tür yazma erişimi varsa, zararlı kod enjekte etmeye çalışabilir. Başarılı olmak için genellikle dal korumalarını atlatması gerekebilir. Bu eylemler farklı hedeflerle gerçekleştirilebilir:

  • Üretimi tehlikeye atmak için ana dalı tehlikeye atmak.

  • Geliştiricilerin makinelerini tehlikeye atmak için ana (veya diğer dalları) tehlikeye atmak (genellikle test, terraform veya diğer şeyleri repo içinde makinelerinde çalıştırırlar).

  • Pipeline'ı tehlikeye atmak (bir sonraki bölüme bakın)

Pipelines Pentest Metodolojisi

Bir pipeline'ı tanımlamanın en yaygın yolu, pipeline'ın oluşturulduğu repo'da barındırılan bir CI yapılandırma dosyası kullanmaktır. Bu dosya, yürütülen işlerin sırasını, akışı etkileyen koşulları ve yapılandırma dosyasına karşı belirtilen komutları tanımlar. Bu dosyalar genellikle tutarlı bir ad ve formata sahiptir, örneğin — Jenkinsfile (Jenkins), .gitlab-ci.yml (GitLab), .circleci/config.yml (CircleCI) ve .github/workflows altında bulunan GitHub Actions YAML dosyaları. Pipeline işlemi tetiklendiğinde, pipeline işi seçilen kaynaktan (örneğin taahhüt / dal) kodu çeker ve bu kod üzerinde CI yapılandırma dosyasında belirtilen komutları çalıştırır.

Bu nedenle, saldırganın nihai hedefi, bu yapılandırma dosyalarını veya yürütülen komutları bir şekilde tehlikeye atmaktır.

Zehirli Pipeline Yürütme (PPE)

Zehirli Pipeline Yürütme (PPE) yolu, bir SCM deposundaki izinleri istismar ederek bir CI pipeline'ı manipüle etmek ve zararlı komutları yürütmektir. Gerekli izinlere sahip kullanıcılar, CI yapılandırma dosyalarını veya pipeline işi tarafından kullanılan diğer dosyaları değiştirerek zararlı komutları içerecek şekilde pipeline'ı "zehirler". Bu, bu zararlı komutların yürütülmesine yol açar.

Bir saldırganın PPE saldırısı gerçekleştirirken başarılı olabilmesi için şunlara ihtiyacı vardır:

  • Genellikle bir itme veya bir pull isteği gerçekleştirildi

Daha ilgili bilgiler

Araçlar ve CIS Benchmark

  • Chain-bench, yeni bir CIS Yazılım Tedarik Zinciri benchmark üzerinde güvenlik uyumluluğunu denetlemek için açık kaynaklı bir araçtır. Denetleme, kod zamanından dağıtım zamanına kadar olan tüm SDLC sürecine odaklanır ve riskleri ortaya çıkarabilir.

En İyi 10 CI/CD Güvenlik Riski

Cider'a göre en iyi 10 CI/CD riski hakkında ilginç bir makaleyi kontrol edin: https://www.cidersecurity.io/top-10-cicd-security-risks/

Laboratuvarlar

Otomatik Araçlar

  • Checkov: Checkov, altyapı olarak kod analizi aracıdır.

Referanslar

AWS hackleme konusunda sıfırdan kahraman olmak için htARTE (HackTricks AWS Red Team Expert)'ı öğrenin!

HackTricks'i desteklemenin diğer yolları:

Last updated