Pentest Kapsamını URL Listesinden Attack-Surface Graph'a Dönüştürme
Çoğu sızma testi, açık bir zafiyet yüzünden değil, yanlış kapsam yüzünden değer kaybeder. Verilen URL listesini fiyatlandırmak kolaydır; ama bir saldırganın gerçekte kullandığı yol, roller, kiracılar, entegrasyonlar ve güven sınırlarından geçer. Bu yazıda kapsamı düz bir listeden saldırı-yüzeyi grafına nasıl çevirdiğimizi ve bunun neden daha fazla kritik bulgu ürettiğini anlatıyoruz.
SECNODEX Güvenlik Ekibi
Ofansif Güvenlik
Bir sızma testinin değeri çoğu zaman ilk gün, henüz tek bir istek gönderilmeden belirlenir: kapsamın nasıl tanımlandığı anda.
Yaygın senaryo şudur: müşteri birkaç URL ve bir giriş bilgisi paylaşır, tedarikçi bu listeyi test eder, rapor teslim edilir. Teknik olarak kusursuz görünen bu akış, en değerli güven sınırlarını sessizce kapsam dışında bırakabilir.
Temel sorun
URL listesi bir saldırı yüzeyi değildir. Saldırgan bir sayfayı değil, bir iş sonucuna giden yolu hedefler. Bu yol; roller, kiracılar, entegrasyonlar ve arka uç güven varsayımları arasından geçer — ve bunların çoğu verilen listede görünmez.
Bu yazıda, kapsamı düz bir URL listesinden bir saldırı-yüzeyi grafına (attack-surface graph) nasıl dönüştürdüğümüzü adım adım anlatıyoruz. Bu yaklaşım, aynı test bütçesinde neden daha fazla ve daha yüksek etkili bulgu ürettiğini de açıklıyor.
1. URL listesi neden yetersiz kalır?
Düz liste üç şeyi göstermez:
- Kim erişiyor — roller, kiracılar (tenant), servis kimlikleri. Aynı endpoint, farklı roller için farklı güven sınırı taşır.
- Ne akıyor — kimlik değişimi, ödeme, yetki devri gibi iş akışları. Bir BOLA zafiyeti tek endpoint'te değil, akışın bütününde ortaya çıkar.
- Nereye bağlanıyor — partner API'leri, webhook'lar, kimlik sağlayıcılar, mobil arka uçları. Saldırgan çoğu zaman doğrudan uygulamayı değil, bu güven köprülerini kullanır.
Sonuç: liste tabanlı test, her endpoint'i tek tek "yeşil" işaretleyip akıştaki zinciri kaçırabilir. Oysa kritik risk genellikle zincirlenmiş saldırı yolundan doğar.
2. Saldırı-yüzeyi grafı: düğümler ve kenarlar
Grafı iki temel öğeyle kurarız:
| Öğe | Ne temsil eder | Örnek |
|---|---|---|
| Düğüm (node) | Bir varlık, kimlik ya da güven bağlamı | Web app, API servisi, admin paneli, merchant-operator rolü, tenant-B, kimlik sağlayıcı, ödeme sağlayıcı |
| Kenar (edge) | İki düğüm arasındaki veri veya güven akışı | Operator → payout API, IdP → uygulama (token), uygulama → partner webhook |
Bir zafiyet, tek bir düğümde değil, çoğu zaman bir kenardaki güven varsayımının yanlış olmasından çıkar: "bu isteği yalnız yetkili tenant gönderebilir" varsayımı gibi.
3. Grafı adım adım kurmak
Adım 1 — Giriş noktalarını çıkar
Yalnız verilen URL'ler değil; alt alan adları, API sürümleri, GraphQL/REST uçları, WebSocket kanalları, dosya yükleme yüzeyleri, e-posta/SMS callback'leri ve mobil arka uç uçları. OpenAPI veya trafik kaydından "shadow endpoint" farkları çıkarılır.
Adım 2 — Kimlikleri ve rolleri modelle
Her rol ayrı bir güven bağlamıdır. Çok kiracılı sistemlerde her tenant ayrı düğümdür. Servisten servise kimlikler (service-to-service token) ve delege yetkiler (OAuth 2.0 / PKCE, SCIM) de modele girer.
Adım 3 — Güven sınırlarını işaretle
İki düğüm arasında güvenin "verildiği" her yer bir sınırdır: tarayıcı ↔ backend, uygulama ↔ partner API, on-prem ↔ bulut kimlik. Kritik sınırlar kırmızıyla işaretlenir; test önceliği buradan başlar.
Adım 4 — İş akışlarını kenar olarak ekle
Kimlik değişimi, hesap kurtarma, yüksek riskli işlem onayı, ödeme/iade, yetki devri. Bu akışlar endpoint listesinde görünmese de saldırının asıl hedefidir.
4. Kapsamı iş sonucundan geriye kur
Grafı kurduktan sonra kapsamı belirleyen soru URL sayısı değildir:
“Bir saldırgan hangi iş sonucuna ulaşırsa bu test başarısız sayılır?”
Cevap "başka bir kiracının ödeme verisine erişim" ise, testin merkezine tenant izolasyonu ve nesne yetkilendirme akışları alınır; ilgili düğüm ve kenarlar önceliklenir. Kapsam, listeden değil, korunması gereken sonuçtan türetilir.
5. Sık kaçırılan düğümler
- 1Legacy admin host — ana uygulamadan ayrı, eski bir yönetim alanından yapılan kritik yetki değişiklikleri.
- 2Partner/webhook güven köprüleri — imza doğrulaması zayıf callback'ler (replay ve canonical body).
- 3Mobil arka uç — web'den farklı, daha eski güven varsayımları taşıyan API sürümleri.
- 4Kimlik sağlayıcı sınırı — SAML imza kapsamı, OIDC dynamic client registration.
- 5Servisten servise kimlikler — mikroservisler arası aşırı geniş token yetki yayılımı.
6. Graftan test planına
Her kritik kenar için üç şey tanımlanır: test edilecek güven varsayımı, başarı kriteri (hangi iş sonucu kanıtlanırsa bulgu geçerli) ve gerekli rol/kimlikler. Böylece test, "endpoint tarama" değil, "graf üzerinde saldırı yolu doğrulama" hâline gelir.
İpucu
Bu yaklaşım raporun biçimini de değiştirir: bağımsız bulgu listesi yerine saldırı yolu anlatısı çıkar. Karar verici, hangi kenarın kesilmesiyle hangi iş riskinin kapandığını görür.
Özet
URL listesi bir başlangıç girdisidir, kapsam değil. Kapsamı varlık, rol, kiracı, entegrasyon ve güven sınırlarından oluşan bir grafa dönüştürmek; aynı bütçeyle daha fazla kritik bulgu, daha net iş etkisi ve daha uygulanabilir düzeltme üretir.
Ürününüzün kapsamını bu grafla birlikte çıkarmak isterseniz, 25 dakikalık bir kapsam görüşmesiyle başlayabiliriz.
Sık sorulan sorular
URL listesiyle yapılan test yanlış mı?
Yanlış değil ama eksik olabilir. Liste iyi bir başlangıç girdisidir; ancak roller, kiracılar, iş akışları ve entegrasyon güven sınırları eklenmeden en yüksek etkili saldırı yolları kapsam dışında kalabilir.
Attack-surface graph çıkarmak testi pahalılaştırır mı?
Genellikle tersine, bütçeyi doğru yere yönlendirir. Aynı test günü sayısıyla, düşük etkili endpoint taramaları yerine kritik güven sınırlarına odaklanıldığı için birim başına değer artar.
Bu yaklaşım hangi ürünler için uygun?
Özellikle çok kiracılı SaaS, API-first platformlar ve mobil arka uçları için değerlidir; çünkü buralarda risk tek endpoint'te değil, akış ve kiracı sınırlarında birikir.
Okumaya devam et
Web Uygulama Güvenliği
Web Uygulaması Sızma Testinde Kapsam Nasıl Belirlenir?
Web pentest kapsamı yalnızca domain ve ekran sayısı değildir. Uygulama sınırı, API'ler, roller, tenant'lar, iş akışları, test ortamı ve güvenli çalışma kuralları birlikte tanımlanmalıdır.
Yazıyı okuSızma Testi
Sızma Testi Teklifinde Hangi Teknik Maddeler Olmalı?
İyi bir sızma testi teklifi fiyat listesi değildir. Kapsam, test derinliği, çalışma kuralları, kanıt standardı, raporlama ve retest maddeleri net yazılmadığında iki teklif asla aynı işi tanımlamaz.
Yazıyı oku