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 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 —
:latesttag 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.

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.

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.

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.

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.

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.
- GitHub: github.com/alperenkesk/k8scan
- Website: k8scan.com
- Docker:
ghcr.io/alperenkesk/k8scan:latest