İçeriğe atla
0 XP 0
12 dkderinleşmeyle 13 dk50 XP6 etkinlik

Bulguyu önceliklendirmek ve kapıyı doğru yere koymak

Bu derste
  • Tarama araçları birlikte çalışınca onlarca bulgu birikir; önceliklendirme hangisinin önce kapanacağını, kapı ise neyin geçeceğini belirler.
  • Bulguları CVSS, EPSS, KEV ve SSVC ile önceliklendir. Tekrarlanan bulguları birleştir. Göz ardı edilen bulguya gerekçe ve bitiş tarihi ekle. Yayını durdurma kurallarını CI komutlarına dönüştür.

Puan bütün etkinlikleri cevaplayınca hesaba yazılır. Bu dersi tamamlayınca +50 XP alacaksın. Giriş yapmadan ilerlersen puan yalnız bu tarayıcıda durur.

Altay Kargo'nun hattı artık dört tarama yöntemini birlikte çalıştırıyor: SAST, DAST, IaC taraması ve sır taraması. Bağımlılık taraması da eklenince tek bir sürüm adayında kırk iki bulgu birikti. Ekibin bu bulgulara ayıracak iki günü var. Hepsini kapatmak mümkün değil, hepsi aynı önemde de değil.

Bazıları aynı açığın farklı araçlardaki kopyası, bazıları yanlış pozitif. Önceliklendirme, hangi bulgunun önce ele alınacağına karar verdiğin adımdır. Güvenlik kapısı bu kararın bir kısmını otomatikleştirir ve eşiği aşan bulguyu geliştirme hattından geçirmez. Bu derste bulguyu hangi girdilerle tarttığını, karar ağacıyla nasıl sıraladığını, tekrarları ve yanlış pozitifleri nasıl yönettiğini ve kapı politikasını nasıl yazdığını görürsün.

Risk girdileri

Önceliklendirme birkaç girdiyi birlikte okur. İlki ciddiyettir. CVSS puanı bir açığın teknik ciddiyetini 0 ile 10 arasında bir sayıya döker. Güncel sürüm CVSS 4.0, ölçütleri dört gruba ayırır: temel (Base), tehdit (Threat), çevresel (Environmental) ve ek (Supplemental).

Açık kayıtlarının çoğunda yalnız temel puan yazar ve bu puan CVSS-B diye gösterilir. Temel puan açığın kendisini anlatır, senin ortamını bilmez. Tehdit grubu istismar olgunluğunu, çevresel grup ise varlığın senin için önemini ekler. CVSS belirtimi de puanı kullanan kuruma, temel ölçütleri kendi tehdit ve çevre bilgisiyle zenginleştirmesini önerir.

İkinci girdi istismar olasılığıdır. EPSS, yayımlanmış bir CVE'nin önümüzdeki 30 gün içinde gerçek saldırılarda kullanılma olasılığını tahmin eden bir modeldir ve her gün güncellenir.

Üçüncü girdi kanıttır. CISA'nın KEV kataloğu, sahada istismar edildiği doğrulanmış açıkları listeler. KEV'deki bir açık artık olasılık değil, gerçektir.

Dördüncü girdi ulaşılabilirliktir: açık kod çalışan bir yolda mı, dışarıdan kimlik doğrulamasız erişilebiliyor mu? Beşincisi varlık kritikliğidir. Ödeme servisindeki orta bir açık, iç wikideki aynı açıktan daha önemlidir.

EPSS ve KEV yalnız CVE kimliği olan açıklarda çalışır. Kendi kodundaki SAST bulgusunun CVE'si yoktur; orada ulaşılabilirlik ve varlık kritikliği ağır basar.

Etkinlik 1 / 6

Önceliklendirmede hangi bulgu genelde listenin başına çıkar?

SSVC ile karar ağacı

Puanları toplamak yerine bir karar ağacı da kurabilirsin. SSVC (Stakeholder-Specific Vulnerability Categorization), CISA'nın açıkları önceliklendirirken kullandığı karar modelidir. Model dört soru sorar. İstismar durumu nedir: kanıt yok (none), açık kavram kanıtı var (poc) ya da aktif istismar var (active).

Saldırı güvenilir biçimde otomatikleşir mi: evet ya da hayır. Teknik etki kısmi mi, tam mı? Görev ve refah etkisi düşük, orta ya da yüksek mi? Son değer iki alt sorudan çıkar.

Açıklı bileşen kurumun temel işleri için ne kadar hayati, istismar insanlara ne ölçüde zarar verir? Ağacın yaprakları dört karardır: Track, Track*, Attend ve Act.

İstismar  Otomatik  Teknik etki  Görev ve refah  Karar
none      no        partial      low             Track
none      no        total        medium          Track
none      no        total        high            Track*
none      yes       total        high            Attend
poc       no        partial      high            Track*
poc       yes       partial      high            Attend
poc       yes       total        high            Attend
active    no        total        medium          Attend
active    no        total        high            Act
active    yes       total        medium          Act
CISA SSVC karar tablosundan seçilmiş on satır. Tam tablo 36 satırdır.

Track, açığın standart güncelleme döngüsünde kapatılacağı anlamına gelir. Track* aynı süreyi korur ama yakın izleme ister. Attend, yönetici düzeyinde ilgi ve standarttan hızlı düzeltme ister. Act, yönetimin de dahil olduğu bir müdahale ve mümkün olan en kısa sürede düzeltme ister.

Tam tablodan bir örüntü çıkar: Act kararı yalnız aktif istismar olan satırlarda görünür. Bu dört karar gün sayısı vermez, süreyi kurum kendi politikasında yazar. Altay Kargo'nun politikasında Act için 48 saat, Attend için 7 gün, Track* için 30 gün var.

Track bulgusu sıradaki planlı sürümle kapanır. CISA'nın Haziran 2026'da ABD federal kurumları için yayımladığı BOD 26-04 yönergesi ise ayrı bir SSVC tablosuyla süreyi doğrudan koyar. Bu tablo KEV kaydına, internete açıklığa, otomasyona ve teknik etkiye bakar ve en acil durumda 3 gün ister.

Bulgu                                  İstismar  Otomatik  Etki     Görev   Karar   Süre
A  İade ucunda SQL enjeksiyonu (SAST)  poc       yes       total    high    Attend  7 gün
B  Rapor işinde kritik CVE (SCA)       none      no        total    medium  Track   sürüm
C  SSH'ye açık güvenlik grubu (IaC)    poc       yes       partial  high    Attend  7 gün
D  Eksik çerçeve başlığı (DAST)        poc       no        partial  high    Track*  30 gün
Altay Kargo'nun dört bulgusu için SSVC kararları ve şirket politikasındaki süreler.

A dışarıdan, kimlik doğrulamasız erişilen bir uçta duruyor. SQL enjeksiyonunun bilinen bir istismar yöntemi var, tarama araçlarıyla otomatikleşir ve veritabanının tamamını açar. B'nin CVSS puanı 9,8. Ama açıklı fonksiyon yalnız iç ağdaki gece rapor işinde çalışıyor ve kanıtlanmış bir istismarı yok.

Puanı en yüksek bulgu sıralamada en alta iner. C bir yanlış yapılandırmadır, yine de internetteki tarayıcılar 22 numaralı portu sürekli yoklar. D kullanıcıyı kandırmayı gerektirir, bu yüzden otomatikleşmez. Bir gün B'deki CVE KEV kataloğuna girerse istismar durumu active olur ve karar Attend'e yükselir.

Etkinlik 2 / 6

SSVC tablosuna bakarak her bulguyu kararına göre ayır.

Önce bir seçeneğe, sonra aşağıdaki uygun kutuya bas. İstersen seçeneği kutuya sürükleyip bırak. Yerini değiştirmek için aynı işlemi tekrarla.

0/5 seçenek yerleşti.

Yanlış pozitif ve tekrar eden bulgu

Tarama aracı güvenli bir satırı riskli sanabilir. Parametreli bir sorguyu dizge birleştirmeyle karıştırmak bunun tanıdık örneğidir. Her yanlış pozitifi araştırmak zaman yer.

Daha kötüsü, ekip yanlış pozitife alıştıkça gerçek bulguyu da görmezden gelmeye başlar. Buna uyarı yorgunluğu denir ve fark edilmesi en geç olan maliyettir. Yanlış pozitifi azaltmanın ilk yolu kuralı düzeltmektir: temizleyiciyi tanıtmak, hedefi daraltmak.

Kod taraması dersinde Semgrep kuralının hedefi tek argümana daraltılınca parametreli sorgu uyarısı kaybolmuştu. Kural düzeltilemiyorsa bulgu kayıtlı bir gerekçeyle bastırılır.

Aynı açık birden çok araçta da görünebilir. İade ucundaki SQL enjeksiyonunu Bandit, Semgrep ve CodeQL ayrı ayrı bildirir, ZAP da aynı ucu yanıttan yakalar. Dört kayıt tek bir açıktır.

Tekilleştirme yapılmazsa ekip aynı işi dört kez açar, metrikler de şişer. Bu işi bulgu yönetim sistemleri üstlenir. Açık kaynak DefectDojo çok sayıda aracın çıktısını içe aktarır.

Seçtiğin alanlardan, örneğin dosya, satır ve CWE kimliğinden bir özet değeri hesaplar ve eşleşen bulguyu ilk kaydın tekrarı olarak işaretler. Ekip tek bir asıl kayıt üzerinde çalışır. SARIF'teki partialFingerprints alanı da işe yarar. Kod biraz kaysa bile aynı bulguyu tanımak için kararlı bir parmak izi taşır.

Araç     Kural                    Konum                 CWE
Bandit   B608                     src/sepet.py:18       CWE-89
Semgrep  sepet-sql-enjeksiyonu    src/sepet.py:18       CWE-89
CodeQL   py/sql-injection         src/sepet.py:18       CWE-89
ZAP      SQL Injection [40018]    GET /iade?durum=      CWE-89
Dört araç, tek açık. İlk üçü dosya ve satırla, ZAP ise adresle eşleşir.

İlk üç kayıt aynı dosyayı, aynı satırı ve aynı CWE kimliğini gösterir. Eşleştirmek kolaydır; eşleşme alanları doğru ayarlandıysa bulgu yönetim sistemi bunu kendiliğinden yapar. Dördüncü kayıt bir dosya değil, bir adres verir. Onu aynı açığa bağlamak için /iade ucunun hangi fonksiyona düştüğünü bilmen gerekir.

Birleştirilen kayıt en güçlü kanıtı taşır: SAST nerede olduğunu, DAST dışarıdan gerçekten ulaşıldığını gösterir. Ulaşılabilirlik kanıtı da önceliği yükseltir. Tekilleştirme bu yüzden yalnız gürültüyü azaltmaz, kararı da güçlendirir.

Etkinlik 3 / 6

Aşağıdaki fonksiyonda hangi satır gerçek bir enjeksiyon riski taşır?

Zafiyetli satıra tıkla.

Bastırma kaydı

Bastırma bir karardır ve her karar gibi kaydı olmalıdır. Altay Kargo'da her bastırma dört bilgi taşır: kural kimliği, gerekçe, sahip ve bitiş tarihi.

Kural kimliği yalnız o kuralı susturur. Gerekçe, inceleyen kişinin neden zararsız bulduğunu anlatır. Sahip, süre dolduğunda kararı yeniden açacak kişi ya da ekiptir.

Bitiş tarihi kararın sonsuza kadar geçerli kalmasını önler. Her aracın kendi bastırma biçimi var. Ekip bu dört bilgiyi hepsine aynı düzende yazar, böylece tek bir betik hepsini okuyabilir.

# src/rapor.py
# Gerekçe: tablo adı iki sabitten biri, kullanıcı girdisi değil.
# Sahip: sepet-ekibi. Bitiş: 2026-12-31
sorgu = "SELECT toplam FROM " + tablo + " WHERE kullanici_id = %s"  # nosec B608

# terraform/bastion.tf
resource "aws_security_group" "bastion" {
  #checkov:skip=CKV_AWS_24:Geçici kurulum. Sahip: altyapı-ekibi. Bitiş: 2026-09-30
}

# .gitleaksignore
# Test fikstürü, canlı anahtar değil. Sahip: depo-ekibi. Bitiş: 2027-01-31
5cd1b3a269e21866b8ecaa7ffb117297cf449ec2:tests/fikstur.py:stripe-access-token:1
Üç aracın bastırma biçimi, aynı dört bilgiyle.

Bitiş tarihini yazmak yetmez, birinin ona bakması gerekir. Altay Kargo bunun için geliştirme hattında küçük bir betik çalıştırır. Betik depodaki her dosyada Bitiş etiketini arar, tarihi bugünle karşılaştırır ve süresi geçmiş bastırma varsa işi kırar. Böylece süresi dolan karar kendiliğinden yeniden incelemeye döner.

Bastırmanın sahibi ya gerekçeyi yenileyip yeni bir tarih yazar ya da bulguyu düzeltir. Betik bugünün tarihini argüman olarak alır, bu yüzden geçmiş ya da gelecek bir günü de sınayabilirsin.

import pathlib, re, sys
from datetime import date

desen = re.compile(r"Bitiş: (\d{4}-\d{2}-\d{2})")
bugun = date.fromisoformat(sys.argv[1])
dolan = 0
for yol in sorted(pathlib.Path(".").rglob("*")):
    if not yol.is_file() or ".git/" in yol.as_posix():
        continue
    for no, satir in enumerate(yol.read_text(errors="ignore").splitlines(), 1):
        m = desen.search(satir)
        if m and date.fromisoformat(m.group(1)) < bugun:
            print(f"{yol}:{no}: süresi geçmiş bastırma (Bitiş: {m.group(1)})")
            dolan += 1
print(f"{dolan} bastırmanın süresi doldu.")
sys.exit(1 if dolan else 0)
bastirma_denetle.py: bugünün tarihini argüman olarak alır, süresi geçmiş bastırmayı bulur ve işi 1 koduyla kırar.
$ python3 bastirma_denetle.py "$(date +%F)"
terraform/bastion.tf:2: süresi geçmiş bastırma (Bitiş: 2026-09-30)
1 bastırmanın süresi doldu.
1 Ekim 2026'da çalıştırılan betiğin çıktısı.

Bastırma satırı da koddur ve çekme isteğiyle gelir. Altay Kargo'da yeni bir nosec, nosemgrep ya da checkov:skip satırı taşıyan her çekme isteği güvenlik şampiyonunun onayını bekler. Onaylayan kişi gerekçeyi okur, bulguyu kendisi doğrular ve tarihi makul bulursa onaylar.

Kimliksiz bir bastırma ya da tarihsiz bir gerekçe doğrudan geri çevrilir. Bu basit kural, bastırma oranının sessizce tırmanmasını önler ve her susturmanın arkasında iki kişinin imzası olur.

Etkinlik 4 / 6

İyi bir yanlış pozitif yönetimi hangi adımları içerir?

Birden fazla doğru var.

Kapı politikası ve ölçüm

Önceliklendirme bulguyu sıralar, güvenlik kapısı ise karar noktasını otomatikleştirir. Kapı hattın bir durağında eşik koyar: eşiği aşan bulgu varsa birleşme ya da dağıtım durur. Altay Kargo'nun politikası üç kuraldan oluşur.

Yeni kritik ve yüksek bulgu birleşmeyi durdurur. Orta bulgu uyarı bırakır ve iş listesine düşer. Eski bulgular temel çizgide durur ve kapıyı kırmaz, onlar ayrı bir planla erir.

Son kural önemlidir. Eski borç yüzünden her çekme isteği kırılırsa ekip kapıyı kapatmanın yolunu arar. Politika yazılı bir belgede kalmaz, hattaki komutlara dönüşür.

# Çekme isteği: yalnız yeni ve ERROR düzeyindeki Semgrep bulgusu kırar
semgrep scan --config kurallar/ --baseline-commit "$HEDEF_DAL_SHA" --severity ERROR --error

# Altyapı: kalan Checkov kontrolü 1 koduyla kırar
checkov -d terraform/ --compact

# Gece DAST: kural dosyasında FAIL olan kural kırar, WARN kırmaz
zap-baseline.py -t https://staging.altaykargo.example -c zap-kurallari.conf -I

# Her gün: süresi geçmiş bastırma kırar
python3 bastirma_denetle.py "$(date +%F)"
Kapı politikası hattaki dört adım olarak.

Komutları satır satır oku. --baseline-commit hedef dalın commit'ini verir. Semgrep o commit'te zaten bulunan sonuçları gizler ve yalnız bu çekme isteğinin getirdiği bulguları gösterir.

--severity ERROR yalnız ERROR düzeyindeki kuralları raporlar. --error ise bulgu varsa 1 koduyla çıkar ve hattı durdurur. Checkov için ek seçenek gerekmez, kalan kontrol zaten 1 döndürür.

ZAP satırında -c kural dosyasını verir, -I yalnız uyarı varken başarısız dönmeyi kapatır. Böylece yalnız FAIL düzeyine çekilen kural dağıtımı durdurur.

Her bulgunun bir sahibi olmalıdır. Bulgu kodu yazan ekibe atanır, güvenlik ekibi danışman olarak kalır. Altay Kargo her ekipte bir güvenlik şampiyonu seçti. Şampiyon, bulguları ilk ayıklayan ve ekibine taşıyan geliştiricidir.

Kapıyı kimin açabileceği de yazılıdır. Acil bir yamada güvenlik sorumlusu kapıyı geçici olarak açabilir, ama karar gerekçesiyle kayda geçer ve ertesi gün incelenir. OWASP SAMM ve DSOMM bu uygulamaları olgunluk düzeylerine ayırır. Ekip bugün nerede durduğunu ve sıradaki adımı buradan okur.

Etkinlik 5 / 6

Altay Kargo'nun güvenlik kapısı bir çekme isteğinde şu sırayla çalışır. Doğru sırayı kur.

Sürükleyip doğru sıraya koy.

Bir öğeye odaklan, yukarı ve aşağı ok tuşlarıyla taşı. Home tuşu en üste, End tuşu en alta alır.

  • 1Bulgular ciddiyet ve ulaşılabilirliğe göre sıralanır
  • 2Eşik aşıldıysa birleşme durur, aşılmadıysa devam eder
  • 3Eşiği aşan kritik bulgu var mı denetlenir
  • 4Tarama araçları çalışır ve bulgu üretir

Kapının işe yarayıp yaramadığını ölçmeden bilemezsin. Altay Kargo dört sayıya bakar. Ortalama düzeltme süresi, bulgunun açılışından kapanışına geçen süredir. Açık bulgu yaşı, hâlâ açık bulguların ne kadar süredir beklediğini gösterir.

Bastırma oranı, bulguların ne kadarının düzeltilmek yerine susturulduğunu söyler. Bu oran tırmanıyorsa kurallar gürültülüdür ya da ekip kestirmeden gidiyordur. Kapının kırdığı derleme sayısı da önemlidir. Çok kırılan kapı eşiğin fazla düşük olduğunu, hiç kırılmayan kapı ise eşiğin fazla yüksek olabileceğini gösterir.

Etkinlik 6 / 6

Doğru mu, yanlış mı?

Eşiği kritik bulgulara göre ayarlanmış bir güvenlik kapısı, düşük önemli bir SAST bulgusunda birleşmeyi durdurmaz ve bulguyu uyarı olarak bırakır.

Derinleş:SSVC'nin farklı ağaçları

SSVC, Carnegie Mellon Üniversitesi'ndeki CERT Koordinasyon Merkezi'nde geliştirildi. Model tek bir ağaç değildir. Yazılımı geliştiren tedarikçi, yazılımı kurup işleten kurum ve açıkları koordine eden kurum için ayrı karar modelleri vardır.

Her model kendi sorusunu sorar. Tedarikçi yama ne kadar acil diye sorar, kurulum yapan kurum yamayı ne kadar hızlı uygulayacağını sorar. CISA'nın kullandığı ağaç, kamu kurumları ve kritik altyapı bakışıyla uyarlanmış bir sürümdür.

Görev ve refah sorusu bu yüzden kurumun temel görevleri ve halkın refahı üzerinden tanımlanır. Kendi ürününü geliştiren bir ekip tedarikçi modelini ya da kendi uyarlamasını kullanabilir. Asıl önemli olan karar noktalarını ve yaprakları yazılı tutmak, herkesin aynı soruyu aynı biçimde cevaplamasını sağlamaktır.

Derinleş:Kötü uygulamalar listesinde KEV

CISA'nın Ocak 2025'te yayımladığı Product Security Bad Practices belgesinin 2.0 sürümü, ürün güvenliğinde kaçınılması gereken uygulamaları sayar. Listedeki maddelerden biri doğrudan KEV kataloğuyla ilgilidir. Kritik altyapıda kullanılan bir ürünü, yayın anında KEV kataloğundaki istismar edilebilir bir açığı taşıyan bileşenle göndermek tehlikeli bir uygulama sayılır.

Belge ayrıca ürünü etkileyen yeni bir KEV kaydı yayımlandığında üreticiden ücretsiz bir yama bekler. Yama, açıklı bileşenin düzeltmesi çıktıktan sonra en geç 30 gün içinde gelmelidir. Açık üründe istismar edilemiyorsa üretici bunu nedeniyle birlikte açıkça yayımlar.

Belge gönüllü bir rehberdir, yasal bir zorunluluk getirmez. Hedef kitlesi kritik altyapıya ürün sağlayan yazılım üreticileridir. Yine de kapı politikası için net bir çıta verir: KEV kaydı taşıyan bir bileşen sürüme girmez.

Bu derste bir hata mı gördün? Bildir