k8scan: Kubernetes Güvenlik Tarama Aracı

Kubernetes (K8s), konteynerleştirilmiş uygulamaları otomatik deploy eden, ölçeklendiren ve yöneten açık kaynak bir orkestrasyon platformudur. Günümüzde küçük ekiplerden büyük kurumsal yapılara kadar neredeyse her ölçekte kullanılıyor ve tüm büyük bulut sağlayıcılar tarafından destekleniyor.

Ancak bu yaygınlık beraberinde ciddi güvenlik riskleri de getiriyor. Yanlış yapılandırılmış bir RBAC, gereksiz yetkilere sahip bir pod ya da denetimsiz bırakılmış bir container, tüm cluster’ınızın ele geçirilmesine yol açabilir.

Bu noktada k8scan devreye giriyor. Tamamen Go ile yazılmış, read‑only çalışan ve cluster’ınızda herhangi bir değişiklik yapmadan 8 farklı kategoride güvenlik analizi gerçekleştiren bir araç.

k8scan HTML Raporu

k8scan Nedir?

k8scan, Kubernetes cluster’larınızdaki güvenlik açıklarını, yanlış yapılandırmaları ve potansiyel saldırı vektörlerini tespit etmek için geliştirilmiş bir güvenlik tarama aracıdır. Tek bir static binary olarak çalışır, hiçbir runtime bağımlılığı yoktur.

Tek cümleyle özet: Cluster’ınıza kubectl erişiminiz varsa, k8scan ile saniyeler içinde kapsamlı bir güvenlik raporu alabilirsiniz.

Öne Çıkan Özellikler

Read‑Only Çalışma

k8scan, Kubernetes API’ye yalnızca get, list ve watch çağrıları yapar. Cluster’ınızda hiçbir değişiklik yapmaz. Bu sayede production cluster’larında bile gönül rahatlığıyla çalıştırabilirsiniz.

8 Kategoride Güvenlik Taraması

Araç, aşağıdaki kategorilerde 120’den fazla güvenlik kontrolü gerçekleştirir:

  • Container Security — Privileged container’lar, tehlikeli Linux capability’ler (SYS_ADMIN, BPF, NET_RAW), hostPID/IPC/Network kullanımı, hostPath mount’ları
  • RBAC — Wildcard yetkiler, pod/exec erişimi, system:masters binding’leri, cross-namespace yetki sıçramaları
  • Secrets — Environment variable’larda düz metin şifreler, AWS anahtarları, GitHub token’ları, sertifika sorunları
  • Network — Açık NodePort’lar, eksik NetworkPolicy’ler, cloud metadata API’sine erişim
  • Control Plane — Anonim API erişimi, kubelet read-only port, etcd güvenlik kontrolleri
  • Workload — Eksik PodDisruptionBudget, resource limit kontrolü, HPA eksikliği
  • Image:latest tag kullanımı, güvenilmeyen registry’ler
  • Runtime Threats — Crypto miner tespiti, Docker-in-Docker, SSH server çalıştıran container’lar

Capability Break Analizi

k8scan’ı diğer tarama araçlarından ayıran en önemli özellik, Capability Break analizidir. Bu özellik, tek tek bulguları birbirleriyle ilişkilendirerek gerçek saldırı senaryolarını ortaya çıkarır.

Örneğin:

“Privileged bir container tespit ettim” → “Bu container’ın bağlı olduğu ServiceAccount’un secrets okuma yetkisi var” → “Container Isolation + Secret Exposure = Compound Break”

Bu sayede tek başına düşük önemde görünen bir bulgu, başka bir zafiyetle birleştiğinde aslında ne kadar kritik olduğunu görebilirsiniz.

Capability Break Analizi

Validation Proof Mekanizması

Her bir Capability Break, neden kırık sayıldığını kanıtlayan bir Validation Proof ile birlikte gelir. Hangi bulguların hangi ağırlıkta bu sonuca katkıda bulunduğunu, hangi güvenlik sınırının ihlal edildiğini net bir şekilde gösterir.

Validation Proof

Compound Break: Çok Aşamalı Saldırı Zincirleri

İki veya daha fazla Capability Break’in birleşmesiyle oluşan saldırı zincirlerini Compound Break olarak adlandırıyoruz. k8scan, bu zincirleri otomatik olarak tespit eder ve her birine MITRE ATT&CK mapping’i, blast radius hesaplaması ve güven skoru atar.

Compound Break Analizi

Proof‑of‑Concept Komutları

Her tespit için, durumu doğrulayabileceğiniz read‑only kubectl komutları üretilir. Bu sayede bulguyu teyit etmek için ekstra araştırma yapmanız gerekmez.

Proof of Concept

Etkileşimli Attack Graph

HTML raporunda her bir Capability Break ve Compound Break için etkileşimli bir saldırı grafiği (attack graph) çizilir. Bu grafik, bir saldırganın hangi adımlarla ilerleyebileceğini görsel olarak gösterir.

Attack Graph

Nasıl Kullanılır?

Kurulum

git clone https://github.com/alperenkesk/k8scan.git
cd k8scan
make build
./bin/k8scan scan

Go 1.24+ ve cluster’a erişimi olan bir kubectl yeterli. Ayrıca Docker ile de çalıştırabilirsiniz:

docker run -v ~/.kube:/root/.kube:ro ghcr.io/alperenkesk/k8scan:latest scan

Kullanım Örnekleri

# Tüm cluster'ı tara
k8scan scan

# Belirli bir namespace'te sadece HIGH ve üzeri bulguları göster
k8scan scan --namespace production --min-severity HIGH

# HTML + JSON raporu oluştur
k8scan scan --output-html report.html --output-json report.json

# Manifest'leri statik analiz et (canlı cluster gerekmez)
k8scan lint deployment.yaml
k8scan lint ./charts/myapp/ --helm ./charts/myapp/

CI/CD Entegrasyonu

--fail-on parametresi ile pipeline’larınızı güvenlik bulgularına göre başarısıza düşürebilirsiniz:

k8scan scan --output-sarif results.sarif --fail-on CRITICAL

Çıktıyı SARIF formatında alarak GitHub Advanced Security ile entegre edebilirsiniz:

- name: k8scan security audit
  run: ./bin/k8scan scan --output-sarif k8scan.sarif --fail-on HIGH

- name: Upload SARIF
  uses: github/codeql-action/upload-sarif@v3
  with:
    sarif_file: k8scan.sarif

Beş Farklı Çıktı Formatı

Format Kullanım Alanı
Terminal Anlık tarama, hızlı kontrol
JSON Makine okuması, API entegrasyonu
HTML Detaylı koyu temalı interaktif rapor
SARIF 2.1.0 GitHub Advanced Security / GitLab
Markdown GitHub issue, PR yorumu, README

Kullanım Senaryoları

1. Production Öncesi Güvenlik Kontrolü

Yeni bir Helm chart veya Kustomize overlay’i deploy etmeden önce k8scan lint ile statik analiz yaparak olası güvenlik sorunlarını önceden görebilirsiniz.

2. Periyodik Tarama

Kubernetes Job veya CronJob olarak çalıştırarak belirli aralıklarla cluster’ınızı tarayabilir, çıktıları arşivleyebilirsiniz.

3. CI/CD Pipeline

Her deploy öncesi otomatik tarama ile güvenlik açıklarının production’a ulaşmasını engelleyebilirsiniz.

4. Export ile Analiz

k8scan-export.sh scripti ile cluster durumunuzu export edip zip dosyası olarak alabilirsiniz. k8scan.com üzerinden bulut taraması ise çok yakında kullanıma sunulacak.

Teknik Detaylar

  • Dil: Go 1.24+
  • API: client-go ile Kubernetes API’ye doğrudan bağlantı
  • Static Binary: Distroless tabanlı Docker imajı (~15 MB)
  • Parallel Tarama: Tüm scanner’lar eşzamanlı çalışır
  • Güvenlik Skoru: Bulgulara göre 0-100 arası puan ve A-F notu
  • CIS Benchmark: Bulgular CIS Kubernetes Benchmark v1.8 kontrolleriyle eşlenir

Sonuç

k8scan, Kubernetes güvenliğine bütüncül bir yaklaşım getiriyor. Sadece tek tek bulguları listelemekle kalmıyor, bunları birbirine bağlayarak gerçek saldırı senaryolarını ortaya çıkarıyor. Capability Break ve Compound Break analizi sayesinde, güvenlik ekipleri hangi zafiyetlere öncelik vermesi gerektiğini net bir şekilde görebiliyor.

Açık kaynak olarak geliştirilen proje, Elastic License 2.0 ile lisanslanmış durumda. Kişisel kullanım, iç güvenlik denetimleri ve katkılar için tamamen ücretsiz.