Ders 11 / 18
İstismar Çerçeveleri
İstismar çerçevesinin yalnız doğrulama sınırıyla ölçülmesi: 16 adayın 9'u gerçekte açıkken 3'ünün kanıta dönüşmesi, dört doğrulama seçeneğinden yalnız birinin olumsuz sonucunun açığın yokluğunu göstermesi, olumsuz dönen üç adayın ikisinin gerçekte açık olması, olumsuz ve zayıf sonuçların kapatma gerekçesi sayılması durumunda üç adayın yanlış kapanması ve iki hedefe kapsam nedeniyle hiç dokunulmaması.
İçindekiler
Buraya kadar beş araç sınıfı aynı sınıra çarptı: her seferinde bir kalemin gerçekten açık olduğunu gösterecek son adım yapılmadan kaldı. İstismar çerçevesi o son adımı yapan araç sınıfıdır ve tam bu nedenle en dar sınırlarla kullanılır.
Bu ders çerçevenin nasıl kullanıldığını anlatmaz; hiçbir araç, modül, adım dizisi, komut ya da yük yazılmaz. Ölçülen üç şey vardır: bir doğrulama denemesinin neyi kanıtladığı, neyi kanıtlamadığı ve hangi durumda hedefe zarar verdiği. Bir çerçeveyi yazılı yetki ve tanımlı kapsam olmadan bir hedefe yöneltmek, sonuç ne olursa olsun yetkisiz erişimdir ve yasal sonuç doğurur.
Dört Seçenek, İki Ayrı Soru
Bir adayı doğrulamanın birden çok yolu vardır ve bunlar iki bağımsız özellikle ayrılır.
Birincisi kanıt gücüdür. Pasif belirti eşleşmesi — yapılandırma ve sürüm bilgisinin bilinen bir tanımla karşılaştırılması — hedefe dokunmaz ve hiçbir zaman kesin kanıt üretmez; yalnız bir adayı güçlendirir. Yan etkisiz doğrulama, açığın var olması için gereken koşulun sağlanıp sağlanmadığını belirlenimci biçimde sınar. Durum değiştiren ve kesinti riskli seçenekler kesin kanıt üretir ve karşılığında hedefte iz ve risk bırakır.
İkincisi ve daha az konuşulanı, olumsuz sonucun anlamıdır. Bir koşul sınaması olumsuz döndüğünde koşulun sağlanmadığı bilinir; bu, açığın yokluğunun kanıtıdır. Bir deneme olumsuz döndüğünde ise hiçbir şey bilinmez. Deneme, hedefin o andaki durumu, yükü, bir ara katmanın davranışı ya da zamanlama nedeniyle başarısız olmuş olabilir. Başarısız bir doğrulama denemesi açığın olmadığını kanıtlamaz. Bu ayrımın kaybolması raporun en pahalı hatasıdır.
- AA36. Seçenek kataloğu, aday listesi ve barındırma sınıfları modeldir; gerçek bir hedef, gerçek bir açık kimliği ve gerçek bir araç yok.
- AA37.
acikalanı adayın gerçek durumudur; doğrulamadan önce bilinmez ve yalnız modelin sonucu hesaplayabilmesi için yazılmıştır. - AA38.
kosulluseçeneklerde sonuç hedefin o andaki ortam koşuluna bağlıdır; koşul sağlanmazsa deneme açık bir kalemde bile olumsuz döner. - AA39. Barındırma sınıfı seçenek kümesini daraltır.
yonetilen, üçüncü tarafın işlettiği bir hizmettir ve hiçbir deneme kapsam içinde değildir. - AA40. Katılım kuralları en yüksek risk düzeyini belirler; seçim, izin verilenler içinde kanıt gücü en yüksek, eşitlikte riski en düşük seçenektir.
- AA41. Süre, kayıt ve uyarı sayıları seçenek başına elle yazıldı.
// cerceve/sinir.mjs — istismar cercevesinin DOGRULAMA SINIRI modelidir. Hicbir arac, // modul, adim dizisi, komut ya da yuk yazilmaz; secenekler yalniz turu, risk duzeyi, // kanit gucu ve OLUMSUZ SONUCUN ANLAMI ile anilir. // olumsuz: 'yokluk' = olumsuz sonuc acigin yoklugunu gosterir; 'belirsiz' = hicbir sey gostermez. // kosullu = sonuc hedefin o andaki ortam kosuluna baglidir; kosul saglanmazsa deneme acik bir // kalemde bile olumsuz doner. Kosullu bir denemenin olumsuz sonucu HICBIR SEY gostermez. export const SECENEK = { 'belirti-eslesmesi': { risk: 0, kanit: 'zayif', olumsuz: 'belirsiz', kosullu: false, dk: 5, kayit: 1, uyari: 0 }, 'yan-etkisiz-dogrulama': { risk: 1, kanit: 'kesin', olumsuz: 'yokluk', kosullu: false, dk: 15, kayit: 2, uyari: 1 }, 'durum-degistiren': { risk: 2, kanit: 'kesin', olumsuz: 'belirsiz', kosullu: true, dk: 30, kayit: 4, uyari: 3 }, 'kesinti-riskli': { risk: 3, kanit: 'kesin', olumsuz: 'belirsiz', kosullu: true, dk: 45, kayit: 6, uyari: 5 }, }; // Barindirma sinifi: hedefin uzerinde hangi risk duzeyine kadar islem yapilabilir. // yonetilen = ucuncu tarafin islettigi hizmet; hicbir deneme kapsam icinde degildir. export const BARINDIRMA = { kendi: 3, paylasilan: 1, yonetilen: -1 }; export const IZIN_RISK = 2; // katilim kurallarinin izin verdigi en yuksek risk duzeyi // satir: aday | acik mi | pasif belirti | ortam kosulu saglandi mi | barindirma | secenekler export const ADAY = ` c01 acik evet evet kendi belirti-eslesmesi,yan-etkisiz-dogrulama c02 acik evet evet kendi belirti-eslesmesi,durum-degistiren c03 acik hayir evet kendi belirti-eslesmesi,yan-etkisiz-dogrulama c04 acik evet hayir kendi belirti-eslesmesi,durum-degistiren c05 acik evet evet paylasilan belirti-eslesmesi,durum-degistiren c06 acik hayir hayir kendi belirti-eslesmesi,durum-degistiren c07 acik evet evet yonetilen belirti-eslesmesi,yan-etkisiz-dogrulama c08 acik evet evet kendi belirti-eslesmesi c09 kapali evet evet kendi belirti-eslesmesi,yan-etkisiz-dogrulama c10 kapali evet evet kendi belirti-eslesmesi,durum-degistiren c11 kapali hayir evet kendi belirti-eslesmesi,yan-etkisiz-dogrulama c12 kapali evet evet kendi belirti-eslesmesi c13 kapali evet evet paylasilan belirti-eslesmesi,yan-etkisiz-dogrulama c14 kapali hayir evet kendi belirti-eslesmesi,kesinti-riskli c15 kapali evet evet yonetilen belirti-eslesmesi,durum-degistiren c16 acik hayir evet kendi belirti-eslesmesi,kesinti-riskli `.trim().split('\n').map((r) => { const [ad, durum, belirti, kosul, barindirma, sec] = r.trim().split(/\s+/); return { ad, acik: durum === 'acik', belirti: belirti === 'evet', kosul: kosul === 'evet', barindirma, secenek: sec.split(',') }; }); export const izinli = (a, s) => SECENEK[s].risk <= Math.min(IZIN_RISK, BARINDIRMA[a.barindirma]); // Secilen secenek: izin verilenler icinde kanit gucu en yuksek, esitlikte riski en dusuk olan. export function secim(a) { const uygun = a.secenek.filter((s) => izinli(a, s)); if (uygun.length === 0) return null; return uygun.sort((x, y) => { const g = (s) => (SECENEK[s].kanit === 'kesin' ? 1 : 0); return g(y) - g(x) || SECENEK[x].risk - SECENEK[y].risk; })[0]; } // Sonuc: kanit | yokluk-kaniti | belirsiz-olumsuz | guclu-aday | zayif-aday | dogrulanamadi export function sonuc(a) { const s = secim(a); if (!s) return { secenek: '-', sonuc: 'dogrulanamadi', dk: 0, kayit: 0, uyari: 0 }; const o = SECENEK[s]; let d; if (o.kanit === 'kesin') { if (a.acik && (a.kosul || !o.kosullu)) d = 'kanit'; else if (a.acik) d = 'belirsiz-olumsuz'; // acik ama deneme olumsuz dondu else d = o.olumsuz === 'yokluk' ? 'yokluk-kaniti' : 'belirsiz-olumsuz'; } else d = a.belirti ? 'guclu-aday' : 'zayif-aday'; return { secenek: s, sonuc: d, dk: o.dk, kayit: o.kayit, uyari: o.uyari }; } export function toplam() { const t = { kanit: 0, 'yokluk-kaniti': 0, 'belirsiz-olumsuz': 0, 'guclu-aday': 0, 'zayif-aday': 0, dogrulanamadi: 0, dk: 0, kayit: 0, uyari: 0, kanitlanamayanAcik: 0 }; for (const a of ADAY) { const r = sonuc(a); t[r.sonuc] += 1; t.dk += r.dk; t.kayit += r.kayit; t.uyari += r.uyari; if (r.sonuc !== 'kanit' && a.acik) t.kanitlanamayanAcik += 1; } return t; }
On Altı Aday, Altı Sonuç Türü
// cerceve/olc.mjs — on alti aday, cercevenin neyi kanitladigi ve neyi kanitlamadigi. import { SECENEK, BARINDIRMA, IZIN_RISK, ADAY, secim, sonuc, toplam } from './sinir.mjs'; const y = (g, ...s) => console.log(s.map((v, i) => (g[i] < 0 ? String(v).padEnd(-g[i]) : String(v).padStart(g[i]))).join('').trimEnd()); console.log(`${ADAY.length} aday (${ADAY.filter((a) => a.acik).length} gercekte acik), ` + `${Object.keys(SECENEK).length} dogrulama secenegi, izin verilen en yuksek risk ${IZIN_RISK}`); const A = [-24, 6, 6, 7, 7, 9, 11]; console.log('\n1. secenek turleri'); y(A, 'secenek', 'risk', 'dk', 'kayit', 'uyari', 'kosullu', 'olumsuz'); for (const [s, o] of Object.entries(SECENEK)) y(A, s, o.risk, o.dk, o.kayit, o.uyari, o.kosullu ? 'evet' : 'hayir', o.olumsuz); const B = [-6, 8, 9, 7, 12, 25, 18]; console.log('\n2. aday basina secilen secenek ve sonuc'); y(B, 'aday', 'gercek', 'belirti', 'kosul', 'barindirma', 'secilen', 'sonuc'); for (const a of ADAY) { const r = sonuc(a); y(B, a.ad, a.acik ? 'acik' : 'kapali', a.belirti ? 'evet' : 'hayir', a.kosul ? 'evet' : 'hayir', a.barindirma, r.secenek, r.sonuc); } const t = toplam(); console.log('\n3. cercevenin urettigi karar dagilimi'); for (const k of ['kanit', 'yokluk-kaniti', 'belirsiz-olumsuz', 'guclu-aday', 'zayif-aday', 'dogrulanamadi']) console.log(` ${k.padEnd(18)} ${String(t[k]).padStart(3)}`); console.log('\n4. neyi kanitlamaz'); const belirsizOlumsuz = ADAY.filter((a) => sonuc(a).sonuc === 'belirsiz-olumsuz'); const yanlisKapanirdi = ADAY.filter((a) => ['belirsiz-olumsuz', 'zayif-aday'].includes(sonuc(a).sonuc) && a.acik); console.log(` olumsuz sonucun yokluk kaniti sayildigi secenek ` + `${Object.values(SECENEK).filter((o) => o.olumsuz === 'yokluk').length} / ${Object.keys(SECENEK).length}`); console.log(` olumsuz cikan ama hicbir sey gostermeyen aday ${belirsizOlumsuz.length}`); console.log(` bunlarin gercekte acik olani ` + `${belirsizOlumsuz.filter((a) => a.acik).length}`); console.log(` olumsuz ve zayif sonuc 'acik degil' okunursa yanlis kapanan aday ` + `${yanlisKapanirdi.length}`); console.log(` gercekte acik olup kanitlanamayan aday ${t.kanitlanamayanAcik} / ` + `${ADAY.filter((a) => a.acik).length}`); console.log('\n5. bedel ve iz'); console.log(` toplam dogrulama suresi ${t.dk} dk`); console.log(` hedefte uretilen kayit ${t.kayit}`); console.log(` hedefte uretilen uyari ${t.uyari}`); console.log(` kapsam disi kaldigi icin hic dokunulmayan hedef ` + `${ADAY.filter((a) => a.barindirma === 'yonetilen').length}`); console.log(` paylasilan ortamda risk siniri dusurulen hedef ` + `${ADAY.filter((a) => a.barindirma === 'paylasilan').length}`);
16 aday (9 gercekte acik), 4 dogrulama secenegi, izin verilen en yuksek risk 2 1. secenek turleri secenek risk dk kayit uyari kosullu olumsuz belirti-eslesmesi 0 5 1 0 hayir belirsiz yan-etkisiz-dogrulama 1 15 2 1 hayir yokluk durum-degistiren 2 30 4 3 evet belirsiz kesinti-riskli 3 45 6 5 evet belirsiz 2. aday basina secilen secenek ve sonuc aday gercek belirti kosul barindirma secilen sonuc c01 acik evet evet kendi yan-etkisiz-dogrulama kanit c02 acik evet evet kendi durum-degistiren kanit c03 acik hayir evet kendi yan-etkisiz-dogrulama kanit c04 acik evet hayir kendi durum-degistiren belirsiz-olumsuz c05 acik evet evet paylasilan belirti-eslesmesi guclu-aday c06 acik hayir hayir kendi durum-degistiren belirsiz-olumsuz c07 acik evet evet yonetilen - dogrulanamadi c08 acik evet evet kendi belirti-eslesmesi guclu-aday c09 kapali evet evet kendi yan-etkisiz-dogrulama yokluk-kaniti c10 kapali evet evet kendi durum-degistiren belirsiz-olumsuz c11 kapali hayir evet kendi yan-etkisiz-dogrulama yokluk-kaniti c12 kapali evet evet kendi belirti-eslesmesi guclu-aday c13 kapali evet evet paylasilan yan-etkisiz-dogrulama yokluk-kaniti c14 kapali hayir evet kendi belirti-eslesmesi zayif-aday c15 kapali evet evet yonetilen - dogrulanamadi c16 acik hayir evet kendi belirti-eslesmesi zayif-aday 3. cercevenin urettigi karar dagilimi kanit 3 yokluk-kaniti 3 belirsiz-olumsuz 3 guclu-aday 3 zayif-aday 2 dogrulanamadi 2 4. neyi kanitlamaz olumsuz sonucun yokluk kaniti sayildigi secenek 1 / 4 olumsuz cikan ama hicbir sey gostermeyen aday 3 bunlarin gercekte acik olani 2 olumsuz ve zayif sonuc 'acik degil' okunursa yanlis kapanan aday 3 gercekte acik olup kanitlanamayan aday 6 / 9 5. bedel ve iz toplam dogrulama suresi 220 dk hedefte uretilen kayit 31 hedefte uretilen uyari 17 kapsam disi kaldigi icin hic dokunulmayan hedef 2 paylasilan ortamda risk siniri dusurulen hedef 2
Neyi Kanıtlar
Üçüncü blok altı sonuç türünü sayıyor ve ilk satır beklenenden küçüktür: on altı adayın üçü kanıta dönüşüyor. Dokuz aday gerçekte açıktır; çerçeve bunların üçte birini kanıtlar.
Kanıta dönenlerin ikisi yan etkisiz doğrulamayla, biri durum değiştiren bir denemeyle belirlenmiştir. Bu dağılım yön verir: kesin kanıt üretmenin en ucuz yolu deneme değil, koşul sınamasıdır. On beş dakika, iki kayıt, bir uyarı karşılığında hem kanıt hem de — açık değilse — yokluk kanıtı üretir. Durum değiştiren bir deneme aynı kesinliği otuz dakika, dört kayıt ve üç uyarı karşılığında verir ve olumsuz döndüğünde hiçbir şey söylemez.
İkinci satır, kursta az konuşulan bir ürünü sayıyor: üç yokluk kanıtı. Bu üç aday listeden kesin olarak düşer; düzeltme ekibine gitmez ve bir daha bakılmaz. Önceki derslerde elenen yanlış pozitiflerle aynı işi görürler, farkı gerekçenin belirlenimci olmasıdır.
Neyi Kanıtlamaz
Dördüncü blok bu dersin asıl konusudur. Dört doğrulama seçeneğinden yalnız biri olumsuz sonucunu yokluk kanıtı sayabilir. Kalan üçünde olumsuz sonuç bir bilgi taşımaz.
Üç aday olumsuz döndü ve ikisi gerçekte açık. c04 ile c06 için gereken ortam koşulu deneme
sırasında sağlanmamıştı; deneme olumsuz döndü, açık yerinde duruyor. Bunlar rapora “açık
bulunamadı” diye girerse iki gerçek açık kapanır. Doğru satır “doğrulama denendi, olumsuz döndü,
sonuç belirsiz” biçimindedir ve düzeltme önceliğinde adaylık statüsünü korur.
Aynı yanılgının ikinci biçimi zayıf sonuçlardadır. c16 gerçekte açıktır, pasif belirtisi eşleşmez
ve kesin doğrulama seçeneği kesinti riski taşıdığı için kullanılamaz. Sonuç “zayıf aday”dır. Olumsuz
ve zayıf sonuçların tümü “açık değil” diye okunursa üç aday yanlış kapanır.
Toplamda dokuz açık adayın altısı kanıtlanamıyor. Nedenleri farklıdır ve raporda ayrı ayrı yazılır: ikisinde deneme koşulu sağlanmadı, ikisinde risk sınırı kesin seçeneği kapattı, birinde zaten kesin bir seçenek yok, birinde hedef kapsam dışı. Hiçbiri “açık yok” değildir.
Zarar Riski ve Kapsam
Beşinci blok bedeli veriyor: 220 dakika, 31 kayıt, 17 uyarı. Uyarı sayısı önceki derslerin tümünden yüksektir ve nedeni açıktır — kesin kanıt üreten seçeneklerin hepsi hedefe dokunur.
İki hedefe hiç dokunulmadı. Üçüncü tarafın işlettiği bir hizmet üzerinde çalışan iki aday, kapsam dışı olduğu için hiçbir seçenekle sınanmadı; bunlardan biri gerçekte açıktır ve bulgu olarak değil, değerlendirme dışında kalmış risk olarak raporlanır. Paylaşılan ortamdaki iki hedefte risk sınırı düşürüldü: aynı ortamdaki başka kiracıları etkileyebilecek her seçenek kapandı ve elde yalnız belirti eşleşmesi kaldı.
Tabloda görünmeyen bir risk kalemi daha vardır ve kapsam denetiminin neden her denemeden önce programlı çalıştırıldığını açıklar. Bir denemenin hedefi elle ya da bir listeden gelir; liste eski, bir kayıt taşınmış ya da bir adres yeniden atanmış olabilir. Yanlış hedefe yöneltilmiş bir deneme, niyet ne olursa olsun yetkisiz erişimdir ve verilen yetkiyi geçersiz kılar. Hedefin kimliğinin denemeden hemen önce doğrulanması bu yüzden bir alışkanlık değil, bir denetim adımıdır.
Kesinti riskli seçenek katılım kuralları izin vermediği için hiçbir adayda kullanılmadı. Bu, ölçüm ağı gibi bir ortamda olağan karardır: bir sayaç toplayıcının hizmet dışı kalması saha ekiplerinin işini durdurur ve faturalama döngüsünü kaydırır. Kanıtın bedeli, kanıtladığı şeyin değerinden büyük olduğunda deneme yapılmaz — adayın adaylıkla kalması kabul edilir ve gerekçesi yazılır.
Özet
- On altı adayın dokuzu gerçekte açıktır; çerçeve bunların yalnız üçünü kanıtlar. Kesin kanıtın en ucuz yolu deneme değil, belirlenimci koşul sınamasıdır.
- Dört doğrulama seçeneğinden yalnız birinin olumsuz sonucu açığın yokluğunu gösterir; kalan üçünde olumsuz sonuç hiçbir bilgi taşımaz.
- Olumsuz dönen üç adayın ikisi gerçekte açıktır; olumsuz ve zayıf sonuçlar “açık değil” diye okunursa üç aday yanlış kapanır.
- Kanıtlanamayan altı açık adayın gerekçesi ayrı ayrı yazılır: koşul sağlanmadı, risk sınırı kapattı, kesin seçenek yok, hedef kapsam dışı. Hiçbiri “açık yok” değildir.
- Üç yokluk kanıtı listeden kesin olarak düşer ve elenen yanlış pozitiflerle aynı işi görür.
- Doğrulama 220 dakika, 31 kayıt ve 17 uyarı üretir; iki hedefe kapsam nedeniyle hiç dokunulmaz, ikisinde risk sınırı düşürülür ve kesinti riskli seçenek hiçbir adayda kullanılmaz.
Sonraki Adım
Bu derste ölçülen her şey — kaç istek, hangi risk sınıfı, hangi seçenek, ne kadar uyarı — bir yerde öğrenilmiş olmalıdır. Doğrulama sırasında ilk kez denenen bir adım, hem hedefe hem de değerlendirmenin kendisine risk yükler. Alıştırmanın yeri gerçek bir kurum ağı değildir.
Sonraki ders yasal alıştırma ortamlarını kapsam cinsinden ele alır ve konuyu kapatır. Ölçülen şey bu ortamların ne öğrettiği değil, ne öğretmediğidir: yedi dersin ürettiği beceri listesi çıkarılır, her ortamın kapsadığı kalem sayılır ve hiçbir ortamın kapsamadığı kalemler ayrı yazılır. Gerçek bir değerlendirmeyle laboratuvar arasındaki farkın kaç kalemde durduğu, bu konunun son sayısıdır.
İlerlemeni kaydetmek ve not almak için Giriş yap
Notlarım
Not almak için giriş yapmalısın.