Blog
Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.
DevSecOps Nedir? Güvenlik Kontrollerini Pipeline'ın Doğru Yerine Koymak
DevSecOps, güvenlik kontrollerini pipeline'da ihtiyaç duydukları bilginin ilk ortaya çıktığı yere koymak ve bulguyu kodu yazan ekibe o anda döndürmektir: secret pre-commit'te, SAST ve SCA PR'da, image taraması main'de, DAST deploy'dan sonra. Bookstore pipeline'ının önce/sonra haritasını çıkarıyor, Semgrep baseline ile yalnız yeni bulguyu kırmayı gerçek çıktılarla gösteriyor ve kontrolleri NIST SSDF ile OWASP DSOMM'a eşliyoruz.
Secret Scanning: Pre-commit, Push Protection ve Sızan Secret'a İlk 30 Dakika
Secret scanning tek bir araç değil, katmanlardır: geliştirici makinesinde pre-commit, pipeline'da PR commit aralığı, GitHub'da push protection ve tüm geçmişin periyodik taranması; sızıntı olursa sıra her zaman önce rotate, sonra etki analizi, en son geçmişi temizlemektir. gitleaks 8.30'un varsayılan kurallarının dev önekli iki secret'ı neden kaçırdığını, Bookstore'a özel kuralları, base64 tespitini ve git-filter-repo ile temizliği gerçek çıktılarla gösteriyoruz.
Dependency Scanning Derinlemesine: NuGetAudit, npm audit, Dependabot ve Bulguları Önceliklendirmek
Dependency bulgularını CVSS skoruna göre sıralamak yetmez: aciliyeti KEV'deki sömürü kanıtı, EPSS'in 30 günlük sömürülme olasılığı ve kodun zafiyetli fonksiyona gerçekten ulaşıp ulaşmadığı belirler. Bookstore'da NuGetAudit'i repo seviyesinde ayarlıyor, .NET 10 package pruning'in false positive'i nasıl kaldırdığını, süreli NuGetAuditSuppress'i, EPSS/KEV sorgulayan bir triage aracını ve Dependabot'ta security ile version update'leri ayırmayı gerçek çıktılarla gösteriyoruz.
SAST: CodeQL, Semgrep ve .NET Security Analyzer'ları ile Kaynak Kodda Güvenlik Açığı Aramak
SAST, kullanıcı girdisinin (source) tehlikeli bir çağrıya (sink) sanitizer'sız ulaştığı yolları arar; yalnız modellediği sink'leri görür ve iş kuralı ya da authorization eksikliği bulamaz. Bookstore'da CodeQL, Semgrep ve .NET security analyzer'larını aynı beş soruna karşı çalıştırıyor, kimin neyi bulduğunu, Bookstore'a özel test edilmiş bir Semgrep kuralını, false positive triage'ını ve yalnız yeni bulguyu kıran bir pipeline'ı gerçek çıktılarla gösteriyoruz.
Container ve IaC Scanning: Image Zafiyetleri, Base Image Seçimi ve Manifest Taraması
Image taraması, deploy edilen artifact'taki işletim sistemi paketlerini ve uygulama bağımlılıklarını birlikte denetler; bulguların çoğu kullanılmayan paketlerden gelir ve chiseled, non-root bir base image bunları büyük ölçüde ortadan kaldırır. Bookstore image'ında 42 bulgunun 6'ya inişini, Trivy ile Grype'ın farkını, Mart 2026 Trivy olayından sonra tarayıcıyı SHA ve cosign imzasıyla doğrulamayı, Dockerfile, Kubernetes ve Terraform taramasını gerçek çıktılarla gösteriyoruz.
DAST: ZAP ile Çalışan Uygulamayı Taramak — Baseline, API Scan ve Authenticated Tarama
DAST çalışan uygulamaya dışarıdan istek gönderip header, cookie, hata sızıntısı ve yansıyan girdi gibi davranış açıklarını bulur; ama yalnız ulaşabildiği endpoint'leri tarar ve authorization hatasını göremez. Bookstore.Api'yi ZAP 2.17 ile baseline, API scan ve Automation Framework planıyla tarıyor, token'lı taramada oturumun düştüğünü yakalamayı, bulguları integration teste çevirmeyi ve main'de çalışan DAST job'ını gerçek çıktılarla gösteriyoruz.
SBOM ve VEX: CycloneDX 1.7 ve SPDX 3 ile Ne Kullandığını Bilmek
SBOM, bir sürümün içindeki bileşenlerin makine okunur listesidir ve asıl değeri yeni bir CVE geldiğinde hangi ürünün hangi sürümünün etkilendiğini build almadan sorgulayabilmektir; VEX ise etkilenip etkilenmediğini gerekçesiyle beyan eder. Bookstore için .NET, Angular ve image SBOM'larını üretip doğruluyor, Dependency-Track'te sorguluyor ve OpenVEX ile CycloneDX VEX'i gerçek çıktılarla uyguluyoruz.
İmzalama ve Provenance: Sigstore, Artifact Attestation'ları ve SLSA v1.2
Bir image imzası içeriğin değişmediğini ve kimin imzaladığını, provenance ise hangi repo, workflow ve commit'ten üretildiğini kanıtlar; ikisi de ancak deploy anında doğrulanırsa işe yarar. Keyless Sigstore imzasını ve GitHub attestation'larını gerçek release'ler üzerinde doğruluyor, Bookstore image'ına SBOM attestation'ı bağlıyor, Kyverno ile imzasız ve tag'li image'ı reddediyor ve pipeline'ı SLSA v1.2'ye göre değerlendiriyoruz.
Uçtan Uca: Bookstore Pipeline'ında Güvenlik Gate'leri, İstisna Yönetimi ve Ölçüm
Gürültüsüz bir güvenlik pipeline'ı PR'da yalnız geliştiricinin dakikalar içinde düzeltebileceği kontrolleri, main'de derin kontrolleri çalıştırır; fix'i olan critical ve high bulgu kırar, gerisi sahibi ve bitiş tarihi olan istisnalarla izlenir. Bookstore'un tek workflow'unu, süresi dolan istisnayı yakalayan bir gate'i, zafiyet yaşı ve MTTR ölçümünü, OpenSSF Scorecard'ı ve kontrollerin OWASP Top 10:2025 eşlemesini gerçek çıktılarla gösteriyoruz.