İçeriğe geç
academia.sh

Ders 06 / 22

Bilinen ve Bilinmeyen Tehditler

Sıfırıncı günün denetim kapsamı cinsinden ölçülmesi: sekiz denetimin bilinen tehditte 7 halkayı kırılabilir kılarken bilinmeyen tehditte 5'e inmesi, imza tabanlı üç denetimin iki adımı tamamen boş bırakması, davranış tabanlı üç denetimin yakalamasının %70'ini koruması, yapılandırma tabanlı iki denetimin hiç etkilenmemesi, beklenen kalemin 6,42'den 19,69'a çıkması ve 77 günlük yama öncesi pencerede 115,49 kalem açık kalırken yapısal kırma altında aynı pencerenin 0,00 vermesi.

İçindekiler

Beş ders boyunca ölçülen her şey aynı varsayımın üstünde durdu: denetimlerin gördüğü şeyler önceden bilinen şeylerdi. Matristeki her hücre tanınan bir teknik sınıfına, her denetim kalemi tanınan bir kayıt örüntüsüne bağlıydı; ilişki modelindeki her köşe daha önce görülmüş bir bağlantıya dayandı.

Bir tekniğin ilk kez kullanıldığı an bu varsayımın dışındadır. Sıfırıncı gün (zero-day), bir açığın savunma tarafında henüz bilinmediği ve düzeltmesinin bulunmadığı durumdur. Bu ders o durumu bir sıfat olarak değil, kapsam kaybı olarak ölçer: kaç halka kırılabilir kalıyor, hangi denetim türü ayakta duruyor, ve düzeltme yayımlanana kadar geçen pencerede kaç kalem açık.

Denetimin Türü Neye Baktığını Belirler

Aşağıdaki yapı bir modeldir: çalışan bir istismar, bir açık kimliği ya da bir düzeltme kaydı yoktur; yalnız denetim türleri ve yakalama oranları vardır. Kurgu ölçüm ağı üzerinde çalışılır.

TM16: her denetim bir türe aittir — imza tabanlı denetim tanınan bir örüntüye, davranış tabanlı denetim sapmaya, yapılandırma tabanlı denetim durumun kendisine bakar. TM17: bilinmeyen tehditte imza tabanlı denetimin yakalaması sıfırdır; davranış tabanlı denetim çalışır ama eşiği o davranışa ayarlı olmadığı için bir çarpanla düşer; yapılandırma tabanlı denetim etkilenmez. TM18: zincir k. adımda kırılırsa o ana kadar erişilmiş kalem bir önceki adımın kalemidir.

// tehdit/bilinmeyen.mjs — bilinen ve bilinmeyen tehdidin denetim kapsami modeli: burada calisan
// bir istismar ya da acik kimligi yoktur; yalnizca denetim turleri ve yakalama oranlarindan
// olusan bir veri yapisi vardir. Rastgelelik yok, bekleyen deger hesaplanir.

export const ADIM = ["kesif", "ilk-erisim", "yurutme", "kalicilik", "yetki-yukseltme",
  "yanal-gecis", "toplama", "sizdirma"];
export const KALEM = [0, 1, 2, 3, 9, 26, 41, 48];

// TM16: her denetim bir ture aittir. Imza tabanli denetim taninan bir oruntuye bakar; davranis
// tabanli denetim sapmaya bakar; yapilandirma tabanli denetim durumun kendisine bakar.
export const DENETIM = [
  { ad: "imza-eslesmesi", tur: "imza", adim: "ilk-erisim", yakalama: 0.35 },
  { ad: "dosya-imzasi", tur: "imza", adim: "yurutme", yakalama: 0.4 },
  { ad: "surec-agaci-sapmasi", tur: "davranis", adim: "yurutme", yakalama: 0.2 },
  { ad: "baslatma-envanteri", tur: "yapilandirma", adim: "kalicilik", yakalama: 0.3 },
  { ad: "yetki-degisikligi", tur: "yapilandirma", adim: "yetki-yukseltme", yakalama: 0.25 },
  { ad: "oturum-sicramasi", tur: "davranis", adim: "yanal-gecis", yakalama: 0.18 },
  { ad: "veri-deseni-imzasi", tur: "imza", adim: "toplama", yakalama: 0.22 },
  { ad: "cikis-hacmi-sapmasi", tur: "davranis", adim: "sizdirma", yakalama: 0.45 },
];

// TM17: bilinmeyen tehditte imza tabanli denetimin yakalamasi sifirdir (henuz oruntu yoktur);
// davranis tabanli denetim calisir ama esigi o davranisa ayarli olmadigi icin bir carpanla
// duser; yapilandirma tabanli denetim tehdidin bilinip bilinmemesinden bagimsizdir.
export const CARPAN = {
  bilinen: { imza: 1, davranis: 1, yapilandirma: 1 },
  bilinmeyen: { imza: 0, davranis: 0.7, yapilandirma: 1 },
  "duyuruldu-yama-yok": { imza: 0, davranis: 1, yapilandirma: 1 },
  "yama-var-uygulanmadi": { imza: 1, davranis: 1, yapilandirma: 1 },
};

export function adimYakalama(carpan) {
  return ADIM.map((a) => 1 - DENETIM.filter((d) => d.adim === a)
    .reduce((t, d) => t * (1 - d.yakalama * carpan[d.tur]), 1));
}

// TM18: zincir k. adimda kirilirsa o ana kadar erisilmis kalem KALEM[k-1]'dir; yapisal kirma
// varsa zincir o adimdan sonra hic yurunemez.
export function beklenenKalem(carpan, son = ADIM.length) {
  const p = adimYakalama(carpan);
  let kalan = 1, toplam = 0;
  for (let i = 0; i < son; i++) {
    toplam += kalan * p[i] * (i === 0 ? 0 : KALEM[i - 1]);
    kalan *= 1 - p[i];
  }
  return toplam + kalan * (son === 0 ? 0 : KALEM[son - 1]);
}
export const kirilabilen = (carpan) => adimYakalama(carpan).filter((x) => x > 0).length;
// tehdit/kapsam.mjs — imza tabanli denetim bilinmeyende kac adimi kaciriyor, davranis tabanli
// kacini hala yakaliyor, yama oncesi pencerede kac kalem acik kaliyor.
import { ADIM, KALEM, DENETIM, CARPAN, adimYakalama, beklenenKalem, kirilabilen }
  from "./bilinmeyen.mjs";

const yaz = (g, ...s) => console.log(s.map((v, i) =>
  (g[i] < 0 ? String(v).padEnd(-g[i]) : String(v).padStart(g[i]))).join(""));
const tur = (t) => DENETIM.filter((d) => d.tur === t).length;

console.log(`${ADIM.length} adim, ${DENETIM.length} denetim ` +
  `(imza ${tur("imza")}, davranis ${tur("davranis")}, yapilandirma ${tur("yapilandirma")}); ` +
  `kirilabilen halka bilinende ${kirilabilen(CARPAN.bilinen)}, bilinmeyende ` +
  `${kirilabilen(CARPAN.bilinmeyen)}; beklenen kalem ` +
  `${beklenenKalem(CARPAN.bilinen).toFixed(2)} -> ` +
  `${beklenenKalem(CARPAN.bilinmeyen).toFixed(2)}`);

const A = [-22, -14, -18, 11, 13];
console.log("\n1. denetim kalemleri ve bilinmeyendeki yakalamalari");
yaz(A, "denetim", "tur", "adim", "bilinen", "bilinmeyen");
for (const d of DENETIM)
  yaz(A, d.ad, d.tur, d.adim, d.yakalama.toFixed(2),
    (d.yakalama * CARPAN.bilinmeyen[d.tur]).toFixed(2));

const B = [-18, 10, 12, 8, 16, 24];
console.log("\n2. adim adim: hangi halka bilinmeyende de kirilabiliyor");
yaz(B, "adim", "bilinen", "bilinmeyen", "kalem", "kalan yakalama", "durum");
const pB = adimYakalama(CARPAN.bilinen), pU = adimYakalama(CARPAN.bilinmeyen);
for (let i = 0; i < ADIM.length; i++)
  yaz(B, ADIM[i], pB[i].toFixed(3), pU[i].toFixed(3), KALEM[i],
    pB[i] === 0 ? "-" : `%${((pU[i] / pB[i]) * 100).toFixed(0)}`,
    pB[i] === 0 ? "hic denetim yok" : pU[i] === 0 ? "imza dusunce kapaniyor" : "aciksa kaliyor");

const C = [-30, 8, 8, 13, 16, 13];
console.log("\n3. yama oncesi ve sonrasi pencere");
yaz(C, "faz", "gun", "olay", "kirilabilen", "beklenen kalem", "acik kalem");
const FAZ = [["acik biliniyor, duyurulmamis", 40, "bilinmeyen", 8],
  ["duyuruldu, yama yok", 12, "duyuruldu-yama-yok", 8],
  ["yama var, uygulanmadi", 25, "yama-var-uygulanmadi", 8],
  ["yama uygulandi (yapisal)", 0, "yama-var-uygulanmadi", 1]];
let acikToplam = 0;
for (const [ad, gun, c, son] of FAZ) {
  const olay = gun / 10, e = beklenenKalem(CARPAN[c], son), acik = olay * e;
  if (gun > 0) acikToplam += acik;
  yaz(C, ad, gun, olay.toFixed(1), kirilabilen(CARPAN[c]), e.toFixed(2), acik.toFixed(2));
}
const gunToplam = FAZ.reduce((t, f) => t + f[1], 0);
console.log(`pencere ${gunToplam} gun, ${(gunToplam / 10).toFixed(1)} olay, ` +
  `acik kalem ${acikToplam.toFixed(2)}; ayni pencere yapisal kirma altinda ` +
  `${((gunToplam / 10) * beklenenKalem(CARPAN["yama-var-uygulanmadi"], 1)).toFixed(2)}`);

const D = [-26, 13, 16, 15, 11];
console.log("\n4. denetim turleri tek tek");
yaz(D, "acik olan denetim turu", "kirilabilen", "beklenen kalem", "bilinene gore", "kapsam %");
const yalniz = (t) => ({ imza: t === "imza" ? 1 : 0, davranis: t === "davranis" ? 1 : 0,
  yapilandirma: t === "yapilandirma" ? 1 : 0 });
const taban = beklenenKalem(CARPAN.bilinen);
for (const [ad, c] of [["hepsi (bilinen tehdit)", CARPAN.bilinen],
  ["hepsi (bilinmeyen tehdit)", CARPAN.bilinmeyen], ["yalniz imza", yalniz("imza")],
  ["yalniz davranis", yalniz("davranis")], ["yalniz yapilandirma", yalniz("yapilandirma")],
  ["hicbiri", yalniz("yok")]]) {
  const e = beklenenKalem(c);
  yaz(D, ad, kirilabilen(c), e.toFixed(2), (e - taban).toFixed(2),
    `${((1 - e / KALEM.at(-1)) * 100).toFixed(1)}`);
}
8 adim, 8 denetim (imza 3, davranis 3, yapilandirma 2); kirilabilen halka bilinende 7, bilinmeyende 5; beklenen kalem 6.42 -> 19.69

1. denetim kalemleri ve bilinmeyendeki yakalamalari
denetim               tur           adim                  bilinen   bilinmeyen
imza-eslesmesi        imza          ilk-erisim               0.35         0.00
dosya-imzasi          imza          yurutme                  0.40         0.00
surec-agaci-sapmasi   davranis      yurutme                  0.20         0.14
baslatma-envanteri    yapilandirma  kalicilik                0.30         0.30
yetki-degisikligi     yapilandirma  yetki-yukseltme          0.25         0.25
oturum-sicramasi      davranis      yanal-gecis              0.18         0.13
veri-deseni-imzasi    imza          toplama                  0.22         0.00
cikis-hacmi-sapmasi   davranis      sizdirma                 0.45         0.32

2. adim adim: hangi halka bilinmeyende de kirilabiliyor
adim                 bilinen  bilinmeyen   kalem  kalan yakalama                   durum
kesif                  0.000       0.000       0               -         hic denetim yok
ilk-erisim             0.350       0.000       1              %0  imza dusunce kapaniyor
yurutme                0.520       0.140       2             %27          aciksa kaliyor
kalicilik              0.300       0.300       3            %100          aciksa kaliyor
yetki-yukseltme        0.250       0.250       9            %100          aciksa kaliyor
yanal-gecis            0.180       0.126      26             %70          aciksa kaliyor
toplama                0.220       0.000      41              %0  imza dusunce kapaniyor
sizdirma               0.450       0.315      48             %70          aciksa kaliyor

3. yama oncesi ve sonrasi pencere
faz                                gun    olay  kirilabilen  beklenen kalem   acik kalem
acik biliniyor, duyurulmamis        40     4.0            5           19.69        78.76
duyuruldu, yama yok                 12     1.2            5           17.23        20.67
yama var, uygulanmadi               25     2.5            7            6.42        16.05
yama uygulandi (yapisal)             0     0.0            7            0.00         0.00
pencere 77 gun, 7.7 olay, acik kalem 115.49; ayni pencere yapisal kirma altinda 0.00

4. denetim turleri tek tek
acik olan denetim turu      kirilabilen  beklenen kalem  bilinene gore   kapsam %
hepsi (bilinen tehdit)                7            6.42           0.00       86.6
hepsi (bilinmeyen tehdit)             5           19.69          13.27       59.0
yalniz imza                           3           17.09          10.67       64.4
yalniz davranis                       3           30.92          24.50       35.6
yalniz yapilandirma                   2           26.32          19.90       45.2
hicbiri                               0           48.00          41.58        0.0

Sayılar ölçüm sınıfındadır; girdileri TM16–TM18’dir.

Yedi Halkadan Beşi

Sekiz denetim kalemi bilinen bir tehditte 7 halkayı kırılabilir kılar; sekiz adımın yalnız keşif adımı boştur. Aynı sekiz denetim bilinmeyen bir tehditte 5 halka bırakır. Kayıp iki halkadır ve bu iki halka rastgele seçilmemiştir: ilk erişim ve toplama, karşılarında yalnız imza tabanlı denetim bulunan iki adımdır.

İkinci tablonun kalan yakalama sütunu her adım için oranı verir. Kalıcılık ve yetki yükseltme adımlarında oran %100‘dür — bu iki adımın denetimi yapılandırma tabanlıdır ve bir açılış girişinin varlığı ya da bir yetkinin değişmesi, tehdidin bilinip bilinmemesinden bağımsız olarak görülür. Yanal geçiş ve sızdırmada oran %70’tir. Yürütmede oran %27‘ye düşer, çünkü o adımdaki 0,520’lik yakalamanın büyük bölümünü imza tabanlı denetim taşımaktadır; imza düştüğünde geriye yalnız davranış tabanlı denetimin 0,140’ı kalır.

Beklenen kalem 6,42’den 19,69’a çıkar — üç katından fazla. Kırılabilen halka sayısı 7’den 5’e inerken, yani %29 azalırken, beklenen kalem %207 artar. Halka sayısı ile kalem sayısı aynı oranda hareket etmez, çünkü kaybedilen iki halkadan biri (ilk erişim) zincirin en ucuz kırma noktasıdır ve öteki (toplama) 41 kalemin hemen öncesindedir.

Birinci tablo aynı ayrımı denetim tarafından yazar. Sekiz kalemin üçü imza, üçü davranış, ikisi yapılandırma tabanlıdır. Envanter sayısıyla bakıldığında üçe üçe iki gibi dengeli bir dağılım görünür; bilinmeyen sütununda ise üç kalem sıfıra iner ve envanterin %37,5’i bir anda işlevsiz kalır. Denetim envanterinin büyüklüğü ile sıfırıncı gün dayanıklılığı arasında bir bağ yoktur; bağ, kalemlerin hangi türde olduğu ve hangi adımlara düştüğüyle kurulur.

Hangi Denetim Türü Ayakta Kalıyor

Dördüncü tablo türleri tek tek yalıtır ve beklenmedik bir sıralama verir. Bilinen bir tehditte yalnız imza tabanlı üç denetim 17,09 kalem bırakır; yalnız davranış tabanlı üç denetim 30,92 bırakır. Aynı sayıda denetim kalemiyle imza tabanlı küme neredeyse iki kat iyidir, çünkü yakalama oranları daha yüksektir (0,35, 0,40, 0,22 karşısında 0,20, 0,18, 0,45) ve ikisi zincirin başına yerleşmiştir.

Bilinmeyen bir tehditte aynı üç imza kaleminin katkısı sıfırdır. Ayakta kalan yapı davranış ve yapılandırma tabanlı beş kalemdir ve bunlar birlikte 19,69 kalem bırakır. İki tür ayrı ayrı zayıf (30,92 ve 26,32), birlikte bilinen tehdit ölçüsünün üç katı kadar kalem bırakır — ama hiçbiri sıfır değildir. Hiçbir denetimin olmadığı satırda beklenen kalem 48,00’dır, yani zincirin tamamıdır.

Karar buradan çıkar. İmza tabanlı denetim bilinen tehditte en verimli araçtır ve bırakılması için bir neden yoktur; bilinmeyen tehditte ise hiçbir şey yapmaz. Yapılandırma tabanlı denetim her iki durumda aynı işi görür ve kapsamı en dar olandır (yalnız 2 halka). Bir denetim envanterinin sıfırıncı güne dayanıklılığı, imza dışı kalemlerin kaç halkada bulunduğuyla ölçülür — bu kümede 5 halka.

Yama Öncesi Pencere

Üçüncü tablo pencereyi üç faza böler ve her fazda kaç kalemin açık kaldığını sayar. Kurgu ağda her on günde bir bu sınıfa giren bir olay varsayılır.

İlk faz açığın bilindiği ama kamuya duyurulmadığı dönemdir: 40 gün, 4,0 olay, olay başına 19,69 kalem, toplam 78,76 kalem. İkinci faz duyuru ile düzeltmenin yayımlanması arasıdır: 12 gün. Burada imza hâlâ yoktur ama davranış tabanlı denetimlerin eşikleri artık o davranışa ayarlanmıştır ve beklenen kalem 19,69’dan 17,23’e iner. Kırılabilen halka sayısı ise 5’te kalır — eşik ayarlamak yeni bir halka açmaz, var olanı biraz keskinleştirir.

Üçüncü faz düzeltme yayımlanmış ama uygulanmamış dönemdir: 25 gün. İmza örüntüsü yayımlandığı için kırılabilen halka 7’ye döner ve beklenen kalem 6,42’ye iner. Yine de bu faz 16,05 kalem açık bırakır, çünkü düzeltme yalnız yayımlanmıştır.

Fazların kendi içinde bir sıralaması vardır ve bu sıralama beklenenin tersidir. Süre olarak en uzun faz ilk fazdır (40 gün) ve kalem olarak da en ağırıdır; ama ikinci faz yalnız 12 gün sürmesine rağmen olay başına 17,23 kalem taşır, üçüncü faz 25 gün sürdüğü halde olay başına 6,42 taşır. Pencere kısaldıkça kalem düşmez; kalem, o fazda kaç halkanın kırılabildiğine göre düşer.

Toplam pencere 77 gün, 7,7 olay ve 115,49 kalemdir. Aynı pencere düzeltme uygulanmış olsaydı 0,00 verirdi: uygulanan düzeltme bir denetim değil, üçüncü derste ölçülen yapısal kırmadır — önkoşulu ortadan kaldırır ve zincir ikinci adıma hiç geçemez. Bu kursun bütün ölçümlerinde tekrarlanan sonuç burada en keskin biçimini alır: 115,49 kalemin 78,76’sı ilk fazda, yani hiçbir duyurunun olmadığı 40 günde birikir ve o fazda yapılabilecek tek şey imza dışı denetimlerin kaç halkada bulunduğudur.

Özet

  • Sıfırıncı gün bir sıfat değil, bir kapsam kaybıdır: sekiz denetim bilinen tehditte 7 halkayı kırılabilir kılar, bilinmeyende 5’ini.
  • Kaybedilen iki halka, karşısında yalnız imza tabanlı denetim bulunan adımlardır; yapılandırma tabanlı denetimin yakalaması %100 korunur, davranış tabanlının %70’i kalır, imza tabanlının %0’ı.
  • Kırılabilen halka %29 azalırken beklenen kalem 6,42’den 19,69’a, yani %207 artar; halka sayısı ile kalem sayısı aynı oranda hareket etmez.
  • Bilinen tehditte yalnız imza tabanlı üç denetim 17,09, yalnız davranış tabanlı üç denetim 30,92 kalem bırakır; bilinmeyen tehditte imzanın katkısı sıfır, kalan beş kalemin bıraktığı 19,69’dur.
  • 77 günlük pencere 115,49 kalem açık bırakır; bunun 78,76’sı duyuru öncesi 40 günde birikir, 16,05’i düzeltme yayımlanmış ama uygulanmamışken.
  • Uygulanan düzeltme bir denetim değil yapısal kırmadır: aynı pencere 0,00 kalem verir.

Sonraki Adım

Bu konu zinciri model olarak kurdu ve hangi halkanın kırılabildiğini saydı. Aktörler yetenek ve motivasyonla ayrıldı ve her düzeyin kaç adım geçtiği yazıldı; süre ekseninde kaç günün hiçbir denetimin görmediği gün olduğu ölçüldü; önkoşullar yazıldı ve erken kırma kazancı hesaplandı; teknikler adımlara eşlendi ve hiç denetimi olmayan adım sayıldı; dört köşeli ilişki modeli bağlantı sayımına çevrildi; ve bilinmeyen tehditte kapsamın nereye düştüğü yazıldı.

Bütün bu ölçümlerin ortak bir yeri vardı. Her zincirin ilk halkası bir teknik adım olarak yazıldı: keşif, sonra ilk erişim. Oysa ilk erişim çoğu kez bir istismarla değil, bir kişinin verdiği kararla açılır — bir iletiye verilen yanıt, bir telefonda söylenen bir cümle, bir kapıdan birlikte geçmeye izin veren bir an. O halkanın önkoşulu bir yapılandırma zayıflığı değil, güven ya da aciliyet duygusudur ve karşısına konacak denetim bir kayıt örüntüsü değildir. Sonraki konu — İnsan Odaklı Saldırılar — zincirin bu ilk halkasını ölçer.

İlerlemeni kaydetmek ve not almak için Giriş yap

Notlarım

Not almak için giriş yapmalısın.

Aramak için yazmaya başlayın.

↑↓ Esc gezin · aç · kapat