Örnek çıktı
Bir derin tarama raporu neye benziyor?
Aşağıdaki rapor gerçek bir derin taramadan alınmış, anonimleştirilmiş bir örnektir: 7.700 satırlık bir web uygulaması, 44 tespit sınıfı, 19 dakika, 18 bulgu. Bulguların yapısı ve derinliği birebir gerçek çıktıdır; uygulama adı, rotalar ve ayrıntılar kurgusallaştırılmıştır — müşterilerimizin düzeltilmemiş gerçek açıklarını asla yayınlamayız.
Özet
acme-blog · 7.720 satır · derin (llm) · 19 dkToplam 18 bulgu · her biri dosya:satır kanıtı ve düzeltme önerisiyle · çıktı: yapay zekâ ajanlarının okuyabileceği Markdown + insan için PDF.
Dikkat edilecek nokta: aşağıdaki en ciddi bulguların hiçbiri “bilinen zafiyetli kütüphane” ya da desen eşleşmesi değil. Kod sözdizimsel olarak temiz; açık güven kararında. Bunları görmek için kodu bir denetçinin okuduğu gibi okumak gerekir — ücretsiz taramanın (açık kaynak tarayıcılar) yakalayamadığı sınıf tam olarak budur.
Bulgular (9 / 18 gösteriliyor)
Tüm /admin/* uçlarında kimlik doğrulama kırık — taklit edilebilir header kontrolü
src/middleware.ts:8
- Sorun:
- Middleware, yönetim uçlarına erişimi yalnızca bir kimlik header'ının VAR OLMASINA bakarak veriyor. Header'ın içeriği doğrulanmıyor; imza kontrolü yok. İstemci bu header'ı kendisi gönderebilir.
- Düzeltme:
- Header'ı güvenilir kabul etme: JWT'yi kimlik sağlayıcının açık anahtarıyla doğrula (imza + issuer + audience + exp) ve doğrulanan kimliği yetkilendirmede kullan.
Desen tarayıcıları burada 'bilinen zafiyetli fonksiyon' göremez — kod sözdizimsel olarak temiz. Açık, GÜVEN KARARINDA; bunu görmek için akışı anlamak gerekir.
Kenar (edge) JWT'si yalnızca varlığıyla güveniliyor, imza/claim doğrulaması yok
src/middleware.ts:8
- Sorun:
- Uygulama, önündeki erişim katmanının token'ı doğruladığını varsayıyor. Ancak uygulama uçlarına doğrudan (kenar katmanını atlayarak) erişilebiliyorsa, doğrulanmamış token kabul edilir.
- Düzeltme:
- Token'ı uygulama tarafında da doğrula (JWKS ile imza + claim'ler). Kenar katmanını tek savunma hattı olarak kullanma.
Yazı oluştur/güncelle ve sil uçlarında CSRF savunması yok
src/pages/admin/save.ts:1
- Sorun:
- Durum değiştiren POST uçları anti-CSRF token'ı ya da SameSite tabanlı bir koruma taşımıyor. Oturumu açık bir yönetici, saldırganın hazırladığı sayfayı ziyaret ederse içerik silinebilir/değiştirilebilir.
- Düzeltme:
- Origin/Referer doğrulaması + tek kullanımlık CSRF token'ı ekle; oturum çerezini `SameSite=Lax/Strict` yap.
Yazı gövdesindeki markdown ham HTML olarak basılıyor — kalıcı (stored) XSS
src/pages/writing/[slug].astro:9
- Sorun:
- İçerik, sanitizasyondan geçmeden `set:html` ile DOM'a yazılıyor. Yönetim paneline erişebilen (bkz. yukarıdaki kırık auth) biri kalıcı script enjekte edebilir.
- Düzeltme:
- Render öncesi bir HTML sanitizer'dan geçir (izin listesi tabanlı) ve CSP ile derinlemesine savunma ekle.
JSON-LD içinde escape edilmemiş JSON.stringify ile script kırılması
src/layouts/Base.astro:49
- Sorun:
- Yapısal veri bloğuna gömülen değer `</script>` dizisini kaçırmıyor; içerik kontrol edilebiliyorsa script bağlamından çıkılabilir.
- Düzeltme:
- `<`, `>` ve `&` karakterlerini unicode kaçışlarına çevirerek göm ya da JSON'u ayrı bir uçtan sun.
Hiçbir rotada Content-Security-Policy yok — üstelik sanitize edilmeyen HTML sink'leri varken
src/layouts/Base.astro:126
- Sorun:
- CSP yokluğu, yukarıdaki XSS bulgularının etkisini doğrudan büyütüyor: enjekte edilen script kısıtsız çalışır.
- Düzeltme:
- En az `script-src 'self'` ile başlayan bir CSP uygula; inline script'ler için nonce kullan.
Yönetim yazma uçları hız sınırlaması olmadan erişilebiliyor
src/pages/admin/save.ts:1
- Sorun:
- Kimlik doğrulaması kırık olduğu için bu uçlar pratikte kimliksiz erişilebilir ve hiçbir hız sınırı yok — otomatik kötüye kullanım mümkün.
- Düzeltme:
- Kimlik doğrulamayı düzelttikten sonra yazma uçlarına IP + hesap bazlı sıkı hız sınırı ekle.
Ham veritabanı sürücü hatası yönetim ekranına yansıtılıyor
src/pages/admin/save.ts:35
- Sorun:
- İstisna mesajı olduğu gibi arayüze basılıyor; şema/altyapı ayrıntıları sızabilir.
- Düzeltme:
- Kullanıcıya jenerik mesaj göster, ayrıntıyı sunucu tarafında logla.
Eşzamanlı içerik oluşturma UNIQUE kısıtıyla yarışıyor
src/pages/admin/save.ts:33
- Sorun:
- İki eşzamanlı istek aynı slug'ı üretmeye çalışırsa kısıt ihlali kullanıcıya hata olarak düşer.
- Düzeltme:
- Çakışmayı `ON CONFLICT` ile ele al ya da slug'ı sunucu tarafında benzersizleştir.
Dürüst kapsam
Bu bir statik kod + yapılandırma denetimidir; canlı sistem testi (pentest) değildir. Kodda görünmeyen altyapı ayarları kapsam dışıdır — raporda bunlar “kapsam dışı” olarak işaretlenir. Kaynak kodunuz saklanmaz; yalnızca bulgular tutulur. Ayrıntılar