Kimden koruyorsun? Cevabı yazmadan yazdığın kod bir tahmindir

Tehdit modelleme kulağa kurumsal bir tatbikat gibi geliyor. Pratikte tek bir soruyu yazılı hâle getirmek: bu üründe kim, neyi, kimden koruyor — ve neyi korumuyoruz.

"Güvenli mi?" sorusunun cevabı yok. Çünkü soru eksik. Kime karşı, neyi, ne kadar süreyle güvenli?

Tehdit modelleme bu eksiği kapatan iş. Adı ağır duruyor ama özü basit: sistemin neyi koruduğunu, kimden koruduğunu ve neyi korumadığını yazılı hâle getirmek.

Son maddesi en önemlisi. Çünkü yazılı olmayan her şey, herkesin kafasında farklı varsayılıyor.

Dört soru

Pratikte kullandığım çerçeve dört soruya iniyor.

Ne değerli? Sperare'de göçmenlik belgeleri ve ödeme akışı. Xaron'da mesaj içeriği ve kim-kiminle ilişkileri. DRAVION'da kullanıcının kod tabanı ve model anahtarı. Bu liste kısa olmalı — her şey değerliyse hiçbir şey öncelikli değil.

Kim ister? Rastgele bir tarayıcı, hedefli bir saldırgan, kötü niyetli bir kullanıcı, ve — en çok atlanan — kendi sisteminin yetkili bir parçası. Sperare'de en gerçekçi tehdit dışarıdan biri değil, başkasının dosyasına bakmaya çalışan bir danışman.

Nereden girer? Sistemin dışarıyla temas ettiği her nokta: giriş akışı, dosya yükleme, ödeme webhook'u, arama sorgusu, davet bağlantısı. Her biri ayrı bir kapı.

Ne olursa yeter? Tam bir ihlale gerek yok. Bir kullanıcının hangi ülkeye vize başvurusu yaptığını öğrenmek, dosyanın içeriğini okumadan da zarar veriyor.

Kapsam dışını yazmak

En değerli çıktı, koruma listesi değil — kapsam dışı listesi.

Xaron mesaj içeriğini koruyor. Ama bir kullanıcının hangi sunucuda olduğunu, ne zaman çevrimiçi olduğunu, kimlerle aynı kanalda bulunduğunu sunucu görüyor. Bu meta veri, kararlı bir saldırgan için bazen içerikten değerli.

Bunu gizlemek yerine açıkça yazmak iki şey sağlıyor. Kullanıcı ne satın aldığını biliyor, ve ekip yanlışlıkla "biz zaten korunuyoruz" diye düşünmüyor.

Bir güvenlik modelinin en dürüst kısmı, korumadığı şeylerin listesidir.

Model kodla birlikte yaşamalı

Tehdit modelinin klasik başarısızlığı, bir kez yazılıp bir klasörde unutulması.

Yeni bir özellik yeni bir kapı açıyor. Davet bağlantısı ekliyorsun — artık bir bağlantıyı ele geçiren biri gruba girebiliyor. Dışa aktarma özelliği ekliyorsun — artık bir kullanıcı bütün veriyi tek dosyada alabiliyor.

Bu yüzden model bir belge değil, bir alışkanlık olmalı: yeni bir dış temas noktası eklendiğinde dört soruyu tekrar sormak. Bu, on beş dakikalık bir iş — ve genellikle bir şeyi değiştiriyor.

Kâğıt üstünde kalmasın

Son olarak, modelin karşılığı somut olmalı.

Her tehdit maddesinin ya bir kontrolü ya da bir kabulü olmalı. "Danışman başkasının belgesini göremez" bir cümle değil, satır seviyesinde bir politika ve onu doğrulayan bir negatif test. "Meta veriyi koruyamıyoruz" ise bir kabul — ve kullanıcıya söylenmiş olmalı.

Ne kontrolü ne kabulü olan bir madde, aslında bir dilek. Ve dilekler üretimde çalışmıyor.