Ders 18 / 18
Sorumlu Açıklama
Bildirimden yayına giden süre altı aşamada ölçülüyor: tek tarafı ilgilendiren bulgu ortalama 12,7 günde, dört tarafı ilgilendiren 96,0 günde kapanıyor ve en uzun aşama düzeltmedir. Üç yayın politikası karşılaştırıldığında sabit 90 günlük pencere 13 bulguyu düzeltilmeden yayımlıyor, düzeltmeye bağlı pencere hiçbirini yayımlamıyor ama en geç yayını 226. güne itiyor, uzatmalı pencere 3'te kalıyor. Ders kursu kapatır ve on sekiz dersin aday, kanıt ve iz sayılarını tek tabloda toplar.
İçindekiler
Bir önceki ders raporu yeniden üretilebilirlik cinsinden ölçtü ve tek bir varsayıma dayandı: raporun gideceği yer bellidir, orada bir düzeltme ekibi vardır ve o ekip bulguyu bekliyordur. Sözleşmeli bir değerlendirmede bu varsayım tutar. Bulgu dışarıdan geldiğinde — bağımsız bir araştırmadan, bir üçüncü taraf bileşeninde görülen bir kalemden — düşer.
Sorumlu açıklama (responsible disclosure), o durumda kime, hangi kanaldan, ne kadar süre içinde bildirileceğini ve bulgunun ne zaman yayımlanabileceğini belirleyen süreçtir. Bu ders onu iki sayı cinsinden ölçer: kaç gün ve kaç taraf. Ölçüm bir modeldir ve bütün süreler kurgudur; gerçek bir kurum, gerçek bir bileşen ya da gerçek bir açık kimliği yazılmaz.
- TS31. Bulgu kümesi önceki dersin 61 kaydıdır. Her bulgu dört bildirim sınıfından birine düşer ve sınıf, sürece giren taraf sayısını belirler.
- TS32. Süreç altı aşamadır: bildirim kanalının bulunması, alındı onayı, teknik doğrulama, düzeltme, dağıtım ve doğrulama turu. Süreler gün cinsindendir.
- TS33. Düzeltme süresi sınıf tabanından 0,6 ile 1,6 kat arasında sapar; bulguların bir bölümünde düzeltme takılır ve süre dört katına çıkar.
- TS34. Hazır günü, düzeltmenin dağıtılıp doğrulandığı gündür. Düzeltmenin yazılmış olması ile uygulanmış olması ayrı iki tarihtir.
- TS35. Üç yayın politikası karşılaştırılır: bildirimden 90 gün sonra sabit yayın; düzeltme hazır olduktan 14 gün sonra yayın; 90 gün ama düzeltme sürüyorsa bir kez 30 gün uzatma.
- TS36. Bir bulgu, yayın gününde hazır değilse düzeltilmeden yayımlanmış sayılır ve aradaki gün sayısı yayın sonrası açık kalan süredir.
Bildirimden Yayına
// aciklama.mjs — sorumlu aciklama sureci: bildirimden yayina kac gun, kac taraf. // MODELDIR; bulgu kumesi, sureler ve taraflar kurgudur. export const TOHUM = 20260714, N = 61; const uretec = (t) => { let s = t >>> 0; return () => (s = (s * 1664525 + 1013904223) >>> 0) / 4294967296; }; const r = uretec(TOHUM); // Asamalar: bildirim kanalinin bulunmasindan yayina kadar. Sureler gun cinsinden // ve sinifa gore degisir; her sinif ayri sayida tarafi ilgilendirir. export const ASAMA = ["kanal bulma", "alindi onayi", "teknik dogrulama", "duzeltme", "dagitim", "dogrulama turu"]; const KISA = ["kanal", "onay", "inceleme", "duzeltme", "dagitim", "tur"]; export const SINIF = [ { ad: "kurum yapilandirmasi", pay: 0.34, taraf: ["kurum"], gun: [1, 1, 2, 3, 2, 2] }, { ad: "kurum yazilimi", pay: 0.28, taraf: ["kurum", "gelistirme ekibi"], gun: [1, 2, 4, 14, 7, 3] }, { ad: "ucuncu taraf bilesen", pay: 0.23, taraf: ["kurum", "gelistirme ekibi", "bilesen saglayicisi"], gun: [5, 7, 10, 45, 21, 5] }, { ad: "paylasilan altyapi", pay: 0.15, taraf: ["kurum", "gelistirme ekibi", "altyapi isleticisi", "duzenleyici"], gun: [3, 5, 8, 30, 30, 7] }, ]; const sinifSec = (u) => { let t = 0; for (const s of SINIF) { t += s.pay; if (u < t) return s; } return SINIF.at(-1); }; // Her bulgu bir sinifa duser; duzeltme suresi sinif tabanindan sapar, bir bolumunde takilir. export const BULGU = Array.from({ length: N }, (_, i) => { const s = sinifSec(r()), carpan = 0.6 + r(), takilan = r() < 0.12; const gun = s.gun.map((g, j) => (j === 3 ? Math.round(g * carpan * (takilan ? 4 : 1)) : g)); return { no: i + 1, sinif: s.ad, taraf: s.taraf, gun, takilan, hazir: gun.reduce((a, g) => a + g, 0) }; }); if (import.meta.url === `file://${process.argv[1]}`) { const gen = (B) => (h) => h.map((v, j) => (j ? String(v).padStart(B[j]) : String(v).padEnd(B[0]))).join(""); const yz = gen([22, 7, 8, 7, 10, 10, 9, 6, 10, 7]); console.log(`model (tohum ${TOHUM}): ${N} bulgu, ${SINIF.length} bildirim sinifi`); console.log("\n" + yz(["bulgu sinifi", "bulgu", ...KISA, "ort gun", "taraf"])); for (const s of SINIF) { const l = BULGU.filter((b) => b.sinif === s.ad); const ort = l.reduce((a, b) => a + b.hazir, 0) / l.length; console.log(yz([s.ad, l.length, ...s.gun, ort.toFixed(1), s.taraf.length])); } const taraflar = new Set(SINIF.flatMap((s) => s.taraf)); const enUzun = ASAMA.map((a, j) => [a, SINIF.reduce((x, s) => x + s.gun[j], 0)]) .sort((a, b) => b[1] - a[1])[0]; console.log(`\ndort sinif toplam ${taraflar.size} ayri tarafi ilgilendiriyor; ` + `en uzun asama "${enUzun[0]}" (dort sinifta toplam ${enUzun[1]} gun)`); const dagitim = SINIF.reduce((a, s) => a + s.gun[4], 0); console.log(`duzeltme yazildiktan sonra dagitim tek basina ${dagitim} gun tutuyor: ` + `duzeltmenin var olmasi ile uygulanmis olmasi ayri iki tarihtir`); }
model (tohum 20260714): 61 bulgu, 4 bildirim sinifi bulgu sinifi bulgu kanal onay inceleme duzeltme dagitim tur ort gun taraf kurum yapilandirmasi 26 1 1 2 3 2 2 12.7 1 kurum yazilimi 15 1 2 4 14 7 3 40.3 2 ucuncu taraf bilesen 11 5 7 10 45 21 5 113.2 3 paylasilan altyapi 9 3 5 8 30 30 7 96.0 4 dort sinif toplam 5 ayri tarafi ilgilendiriyor; en uzun asama "duzeltme" (dort sinifta toplam 92 gun) duzeltme yazildiktan sonra dagitim tek basina 60 gun tutuyor: duzeltmenin var olmasi ile uygulanmis olmasi ayri iki tarihtir
Son iki sütun bir arada okunduğunda ilişki nettir: taraf sayısı arttıkça ortalama süre üç ile sekiz kat büyüyor. Tek tarafı ilgilendiren bir yapılandırma bulgusu 12,7 günde, üç tarafı ilgilendiren bir bileşen bulgusu 113,2 günde kapanıyor. Kaynağı yalnız düzeltme değildir: kanal bulma 1 günden 5 güne, alındı onayı 1 günden 7 güne çıkıyor, çünkü her yeni taraf kendi bildirim kanalını, onayını ve teknik incelemesini ekliyor.
En uzun aşama düzeltmedir ve dört sınıfta 92 gün tutar. Ama tek başına düzeltmeye bakmak yanıltıcıdır: dağıtım tek başına 60 gün tutuyor. Bir düzeltmenin yazılmış olması ile uygulanmış olması ayrı iki tarihtir ve arada açık hâlâ açıktır. Paylaşılan altyapı sınıfında dağıtım düzeltmeyle eşit süre tutuyor, çünkü değişiklik tek bir yerde değil, işletilen bütün kalemlerde uygulanmak zorundadır.
Kanal bulma aşaması küçüktür ama bir şey söyler: bildirimi yapacak kişi önce kime bildireceğini aramak zorundadır. Yayımlanmış bir bildirim adresi olmayan kurum, kendi düzeltme süresine baştan gün ekler.
Yayın Penceresi ve Taraf Sayısı
// yayin.mjs — yayin politikasi: sabit pencere, duzeltmeye bagli pencere, uzatmali pencere. import { BULGU, SINIF } from "./aciklama.mjs"; const N = BULGU.length, PENCERE = 90, UZATMA = 30, BEKLEME = 14; // Her politika bir bulgu icin yayin gunu dondurur. const POLITIKA = [ ["sabit pencere", () => PENCERE], ["duzeltmeye bagli", (b) => b.hazir + BEKLEME], ["uzatmali pencere", (b) => (b.hazir <= PENCERE ? PENCERE : PENCERE + UZATMA)], ]; const gen = (B) => (h) => h.map((v, j) => (j ? String(v).padStart(B[j]) : String(v).padEnd(B[0]))).join(""); const yz = gen([20, 11, 11, 13, 16, 20]); console.log(`${N} bulgu; pencere ${PENCERE} gun, uzatma ${UZATMA} gun, ` + `duzeltme sonrasi bekleme ${BEKLEME} gun (kurgu)`); console.log(yz(["politika", "ort yayin", "en gec", "duzeltilmis", "duzeltilmeden", "yayin sonrasi acik"])); for (const [ad, f] of POLITIKA) { const gun = BULGU.map(f), duzeltilmis = BULGU.filter((b) => b.hazir <= f(b)).length; console.log(yz([ad, (gun.reduce((a, g) => a + g, 0) / N).toFixed(1), Math.max(...gun), duzeltilmis, N - duzeltilmis, (BULGU.reduce((a, b) => a + Math.max(0, b.hazir - f(b)), 0) / N).toFixed(1)])); } // Taraf sayisi ile pencereyi asma arasindaki iliski. const y2 = gen([22, 8, 10, 14, 16, 14]); console.log("\n" + y2(["bulgu sinifi", "taraf", "bulgu", "90 gunu asan", "120 gunu asan", "takilan"])); for (const s of SINIF) { const l = BULGU.filter((b) => b.sinif === s.ad); console.log(y2([s.ad, s.taraf.length, l.length, l.filter((b) => b.hazir > PENCERE).length, l.filter((b) => b.hazir > PENCERE + UZATMA).length, l.filter((b) => b.takilan).length])); } const asan = BULGU.filter((b) => b.hazir > PENCERE); const cokTaraf = BULGU.filter((b) => b.taraf.length >= 3); console.log(`\n${N} bulgunun ${asan.length}'i ${PENCERE} gunluk pencereyi asiyor; ` + `bunlarin ${asan.filter((b) => b.taraf.length >= 3).length}'i uc ya da daha cok tarafi ` + `ilgilendiren siniflardan geliyor`); console.log(`uc ve daha cok tarafli ${cokTaraf.length} bulgunun ` + `${(100 * cokTaraf.filter((b) => b.hazir > PENCERE).length / cokTaraf.length).toFixed(1)}%'i ` + `pencereyi asiyor; tek tarafli ${BULGU.filter((b) => b.taraf.length === 1).length} bulgunun ` + `${BULGU.filter((b) => b.taraf.length === 1 && b.hazir > PENCERE).length}'i asiyor`); const takilan = BULGU.filter((b) => b.takilan); console.log(`duzeltmesi takilan ${takilan.length} bulgu, duzeltmeye bagli politikada ortalama ` + `${(takilan.reduce((a, b) => a + b.hazir + BEKLEME, 0) / takilan.length).toFixed(1)} gun ` + `yayimlanmadan bekliyor; sabit pencerede ${PENCERE}. gun yayimlanir`);
61 bulgu; pencere 90 gun, uzatma 30 gun, duzeltme sonrasi bekleme 14 gun (kurgu) politika ort yayin en gec duzeltilmis duzeltilmeden yayin sonrasi acik sabit pencere 90.0 90 48 13 5.9 duzeltmeye bagli 63.9 226 61 0 0.0 uzatmali pencere 96.4 120 58 3 3.1 bulgu sinifi taraf bulgu 90 gunu asan 120 gunu asan takilan kurum yapilandirmasi 1 26 0 0 3 kurum yazilimi 2 15 0 0 3 ucuncu taraf bilesen 3 11 9 2 2 paylasilan altyapi 4 9 4 1 1 61 bulgunun 13'i 90 gunluk pencereyi asiyor; bunlarin 13'i uc ya da daha cok tarafi ilgilendiren siniflardan geliyor uc ve daha cok tarafli 20 bulgunun 65.0%'i pencereyi asiyor; tek tarafli 26 bulgunun 0'i asiyor duzeltmesi takilan 9 bulgu, duzeltmeye bagli politikada ortalama 106.9 gun yayimlanmadan bekliyor; sabit pencerede 90. gun yayimlanir
Üç politika üç ayrı şeyi koruyor ve hiçbiri ötekini kapsamıyor. Sabit pencere kesin bir tarih verir ve kurumu süreye bağlar, ama 13 bulguyu düzeltilmeden yayımlar ve bunlar ortalama 5,9 gün boyunca hem açık hem herkese açıktır. Düzeltmeye bağlı pencere hiçbir bulguyu düzeltilmeden yayımlamaz; ortalama yayın günü 63,9 ile en erkendir, çünkü bulguların çoğu hızlı kapanır. Bedeli son sütunda değil “en geç” sütunundadır: 226. gün. Düzeltme takıldığında yayın süresiz ertelenebilir ve kararı bildirimi alan taraf verir.
Uzatmalı pencere ikisinin arasındadır: düzeltilmeden yayımlananı 13’ten 3’e, yayın sonrası açık süreyi 5,9 günden 3,1 güne indirirken en geç yayını 120 günde tutar. Kazandığı kesin bir üst sınırdır; eklediği, uzatmanın ne zaman verileceği kararıdır.
İkinci tablo pencereyi kimin aştığını gösteriyor ve sonuç tek bir eksende toplanıyor: 90 günü aşan 13 bulgunun 13’ü de üç ya da daha çok tarafı ilgilendiren sınıflardandır. Tek tarafı ilgilendiren 26 bulgunun hiçbiri pencereyi aşmıyor; üç ve daha çok taraflı 20 bulgunun yüzde 65,0’i aşıyor. Süreyi belirleyen şey açığın teknik ağırlığı değil, kaç kurumun aynı takvimde buluşması gerektiğidir. Düzeltmesi takılan 9 bulgu bu tabloya dağılmış durumdadır ve düzeltmeye bağlı politikada ortalama 106,9 gün yayımlanmadan bekler.
Buradan pratik bir kural çıkıyor: pencere tek bir sayı olarak yazılamaz. Taraf sayısı bildirimin ilk gününde bilinir ve pencere uzunluğu o sayıya bağlanabilir. Tek taraflı bir bulgu için 90 gün fazlasıyla yeterlidir; dört taraflı bir bulgu için aynı 90 gün, koordinasyon tamamlanmadan yayın demektir.
Özet
- Bildirimden hazır olma gününe kadar geçen süre taraf sayısına bağlıdır: tek taraflı bulgu ortalama 12,7 gün, iki taraflı 40,3 gün, üç taraflı 113,2 gün, dört taraflı 96,0 gün tutuyor.
- Artış yalnız düzeltmeden gelmiyor; kanal bulma 1 günden 5 güne, alındı onayı 1 günden 7 güne çıkıyor, çünkü her taraf kendi kanalını, onayını ve incelemesini ekliyor.
- Dağıtım dört sınıfta toplam 60 gün tutuyor: düzeltmenin yazılmış olması ile uygulanmış olması ayrı iki tarihtir ve arada açık hâlâ açıktır.
- Sabit 90 günlük pencere 13 bulguyu düzeltilmeden yayımlıyor ve ortalama 5,9 gün açık bırakıyor; düzeltmeye bağlı pencere hiçbirini yayımlamıyor ama en geç yayını 226. güne itiyor.
- Uzatmalı pencere düzeltilmeden yayımlananı 3’e, açık kalan süreyi 3,1 güne indirirken üst sınırı 120 günde tutuyor.
- 90 günü aşan 13 bulgunun tamamı üç ya da daha çok tarafı ilgilendiren sınıflardan geliyor; tek taraflı 26 bulgunun hiçbiri aşmıyor. Pencere uzunluğu teknik ağırlığa değil taraf sayısına bağlanmalıdır.
Kurs Kapanışı
| Ders | Aday | Kanıta dönen | Savunmada bıraktığı iz |
|---|---|---|---|
| Açık Kaynak İstihbaratı | 29 kalem, 20 aday | 9 kanıt, 6 yanlış pozitif | 12 erişim kaydı, 0 uyarı |
| Alan Adı ve Kayıt Sorgulama | 20 aday, 4 ölçüt | 8 kanıt, 0 yanlış pozitif | 26 kayıt, 0 uyarı |
| Alt Alan ve Varlık Keşfi | 24 bölge kaydı | 21 bulundu, 7 sahipsiz | ad başına 8,57 kayıt, 5 uyarı |
| Bağlantı Noktası Tarama | 96 nokta, 21 belirsiz | 18 kanıt, 3 yanlış pozitif | 72–90 kayıt, 2 uyarı |
| Servis ve Sürüm Belirleme | 21 servis, 4 düzey | 16 kesin, 0 yanlış atama | 168 kayıt, 6 uyarı |
| Paket Yakalama ve Çözümleme | 85 iddia adayı | 50 kanıt, 28 çıkarım | 0 kayıt, 1 yapılandırma onayı |
| Protokol Çözümleyicileri | 91 aday, 30 alan | 43 kanıt, 48 çıkarım | 0 kayıt, akış başına 1 uyarı |
| İstek Manipülasyonu | 18 aday, 40 istek | 8 kanıt, 6 elenen | 35 kayıt, 16 uyarı |
| Sanal Alan Analizi | 14 kalem, 27 davranış | 12 karara bağlanan, 1 yanlış | 0 kayıt, 5 dış bağlantı |
| Dosya ve Bağlantı İtibar Servisleri | 24 kalem, 8 gönderilebilir | %86 kesinlik, %8 anma | 0 kayıt, 14 servis sorgusu |
| İstismar Çerçeveleri | 16 aday, 9 gerçek | 3 kanıt, 3 yokluk kanıtı | 31 kayıt, 17 uyarı |
| Test Dağıtımları ve Laboratuvarlar | 18 beceri kalemi | 13 kapsanan, 5 açık | 0 kayıt, 0 gerçek risk |
| Katılım Kuralları | 64 hedef, 11 sınırda | 20 kapsamda onaylı | 0 kayıt, 6 taraf, 3 durdurma |
| Test Türleri | 78 / 63 / 60 aday | 6 / 20 / 31 kanıt | 468 / 221 / 90 kayıt |
| Açık Doğrulama | 240 ham aday | 61 kanıt, 9 askıda | 461 kayıt, zincirle 313 |
| Etki Değerlendirmesi | 61 bulgu, 2 bağlam | ilk onda 0 ortak sıra | 0 kayıt, 40 adam-gün kuyruk |
| Raporlama | 61 kayıt, 8 alan | 8 yeniden üretilir, 3 kapanır | 0 kayıt, 9,4 saat yazım |
| Sorumlu Açıklama | 61 bulgu, 4 sınıf | 48 düzeltilmiş yayın | 0 kayıt, 5 taraf, 13 aşan |
Tablonun ikinci ve üçüncü sütunu hiçbir satırda birbirine eşit değil, ve bu kursun kuralı buradan çıkıyor: sızma testinin çıktısı bulgu sayısı değil, kanıtlanmış ve yeniden üretilebilir bulgudur; kanıtlanamayan bir aday rapora girdiğinde düzeltme bütçesini boşa harcar. Dördüncü sütunda “0 kayıt” yazan dokuz satır var ve en çok kanıt üreten iki ders bunların içindedir: en çok iz bırakan adım en çok kanıt üreten adım değildir.
On sekiz derste aday–kanıt farkı hep aynı yönde çalıştı. Keşif adayı bol, kanıtı seyrek üretti; çözümleme araçları kanıt ile çıkarımı ayırdı; doğrulama listeyi dörtte bire indirip kendi hatasını da yazdı; süreç dersleri kanıtın tek başına yetmediğini gösterdi.
Bir sütun bütün bu ölçümde tek yönlü kaldı. Her adımın savunmada kaç kayıt ve kaç uyarı bıraktığı sayıldı: 12 erişim kaydından 468 kayda, sıfır uyarıdan 17 uyarıya. Ama o kayıtları kimin, ne kadar sürede ve hangi eşikle okuduğu hiç sorulmadı. Bir uyarı gerçekten birine ulaşıyor mu, ne kadar sürede bakılıyor, hangi eşiğin altındaki kayıt hiç görülmüyor ve gerçek bir olayda kimin ne yapacağı yazılı mı? M24/K08 Güvenlik Operasyonları ve Olay Müdahalesi kursu tam olarak bu soruyla başlar.
İlerlemeni kaydetmek ve not almak için Giriş yap
Notlarım
Not almak için giriş yapmalısın.