---
title: 'İstismar ve Yük'
source: 'https://academia.sh/tr/kurslar/siber-guvenlige-giris/istismar-ve-yuk'
course: 'Siber Güvenliğe Giriş'
language: tr
updated: '2026-08-17T18:08:38+00:00'
license: 'CC BY-SA 4.0'
---

# İstismar ve Yük

Açıktan etkiye giden zincirin adımlanması: 5 istismar ile 4 yükün 12 geçerli zincir üretmesi, zincir uzunluğunun 2 ile 7 arasında değişip toplam 53 adım tutması, tek bir adımı kırmanın en çok 8 zinciri kesmesi, bir yükü engellemenin en çok 5 ve bir istismarı engellemenin en çok 4 zinciri kesmesi, aynı kırılmanın erişimde 0 ve etkide 41 tamamlanmış adım bırakması, altı orta adımın tamamı kırıldığında bile 12 zincirden birinin ayakta kalması ve o tek zincirin toplam olasılık kütlesinin %25,7'sini taşıması.

Önceki ders her kalemi tek bir olay gibi saydı: olasılık verildi, etki verildi, çarpıldı. Oysa
600 kurgu birimlik bir etki tek bir anda doğmaz. Önce bir yere erişilir, sonra bir zayıflık
tetiklenir, sonra bir şey çalıştırılır, yetki genişler ve etki ancak bunların hepsi tamamlandığında
yazılır. Olasılık dediğimiz sayı, aslında bu **zincirin baştan sona tamamlanma** olasılığıdır.

**İstismar (exploit)**, bir açığı fiilen kullanan adım dizisidir. **Yük (payload)**, istismar
tamamlandıktan sonra yazılan etkidir. İkisi ayrı şeylerdir ve bu ayrım bu dersin ölçtüğü şeyi
belirler: aynı istismar birden çok yük taşıyabilir, aynı yük birden çok istismarla gelebilir. Bu
ders zinciri model olarak kurar ve tek soruya bağlar — **hangi adımı kırmak kaç zinciri kesiyor**.

## Zincir Bir Adım Dizisidir

Aşağıdaki yapı bir **modeldir**: çalışan bir istismar, bir araç ya da bir yük yoktur; yalnızca adım
adlarından oluşan bir veri yapısı vardır. Açık adları önceki iki dersin listesinden gelir. Bu
adımların gerçek bir sistem üzerinde denenmesi **yazılı yetki ve tanımlı kapsam olmadan hem
yasadışı hem meslek dışıdır**.

**GK16:** zincir sekiz adımlık kanonik sırayı izler ve her zincir bu sıranın bir alt dizisidir.
**GK17:** istismar bir açığı kullanan adım dizisidir; yük, istismar tamamlandıktan sonra yazılan
etkidir ve kendi ek adımlarını getirir. **GK18:** bir yük ancak gerektirdiği adım istismarda varsa
o istismarla eşleşir. **GK19:** bir adım kırılırsa o adımı içeren her zincir kesilir; kesildiği
anda zincirin kendinden önceki adımları tamamlanmıştır.

```js
// guvenlik/zincir.mjs — actan etkiye giden zincirin adim modeli (model): burada calisan bir
// istismar yoktur, yalnizca adim adlarindan olusan bir veri yapisi vardir. Rastgelelik yok.

// GK16: zincir sekiz adimlik kanonik sirayi izler; her zincir bu siranin bir alt dizisidir.
export const ADIM = ["erisim", "kesif", "tetikleme", "yurutme",
  "yetki-yukseltme", "yanal-gecis", "kalicilik", "etki"];
export const HARF = { erisim: "E", kesif: "K", tetikleme: "T", yurutme: "Y",
  "yetki-yukseltme": "P", "yanal-gecis": "G", kalicilik: "L", etki: "I" };

// GK17: istismar, bir acigi kullanan adim dizisidir; yuk, istismar tamamlandiktan sonra
// yazilan etkidir ve kendi ek adimlarini getirir.
export const ISTISMAR = [
  { ad: "kimlik-yeniden-kullanimi", acik: "varsayilan-parola", adim: ["erisim", "kesif"] },
  { ad: "girdi-tetikleme", acik: "dogrulanmayan-girdi",
    adim: ["erisim", "tetikleme", "yurutme"] },
  { ad: "imzasiz-paket", acik: "imzasiz-guncelleme",
    adim: ["erisim", "kesif", "tetikleme", "yurutme"] },
  { ad: "hesap-paylasimi", acik: "paylasilan-hesap", adim: ["erisim", "kesif"] },
  { ad: "aktarim-dinleme", acik: "sifresiz-aktarim", adim: ["erisim"] },
];

// GK18: bir yuk ancak gerektirdigi adim istismarda varsa o istismarla eslesir.
export const YUK = [
  { ad: "veri-cikarma", gerek: [], ek: ["etki"] },
  { ad: "kayit-degistirme", gerek: ["kesif"], ek: ["yetki-yukseltme", "etki"] },
  { ad: "hizmet-durdurma", gerek: ["yurutme"], ek: ["etki"] },
  { ad: "kalici-erisim", gerek: ["yurutme"], ek: ["yanal-gecis", "kalicilik", "etki"] },
];

export const ZINCIR = ISTISMAR.flatMap((i) => YUK
  .filter((y) => y.gerek.every((g) => i.adim.includes(g)))
  .map((y) => ({ istismar: i.ad, acik: i.acik, yuk: y.ad,
    adim: ADIM.filter((a) => i.adim.includes(a) || y.ek.includes(a)) })));

export const maske = (z) => ADIM.map((a) => (z.adim.includes(a) ? HARF[a] : ".")).join("");
export const gecen = (a) => ZINCIR.filter((z) => z.adim.includes(a));
// GK19: bir adim kirilirsa o adimi iceren her zincir kesilir; kesilene dek o zincirin
// kendinden onceki adimlari tamamlanmistir.
export const oncekiToplam = (a) => gecen(a).reduce((n, z) => n + z.adim.indexOf(a), 0);
export const kapanan = (kume) =>
  ZINCIR.filter((z) => z.adim.some((a) => kume.includes(a))).length;

// GK20: her adimin tamamlanma olasiligi vardir ve adimlar bagimsiz sayilir (model);
// zincirin tamamlanma olasiligi adim olasiliklarinin carpimidir.
export const ADIM_P = { erisim: 0.5, kesif: 0.7, tetikleme: 0.4, yurutme: 0.6,
  "yetki-yukseltme": 0.35, "yanal-gecis": 0.5, kalicilik: 0.6, etki: 0.9 };
export const olasilik = (z) => z.adim.reduce((p, a) => p * ADIM_P[a], 1);
export const KUTLE = ZINCIR.reduce((s, z) => s + olasilik(z), 0);
export const kapananKutle = (kume) => ZINCIR
  .filter((z) => z.adim.some((a) => kume.includes(a)))
  .reduce((s, z) => s + olasilik(z), 0);
```

```js
// guvenlik/kir.mjs — hangi adimi kirmak kac zinciri kesiyor, kesildiginde ne kadari olmustu.
import { ADIM, HARF, ISTISMAR, YUK, ZINCIR, KUTLE, maske, gecen, oncekiToplam, kapanan,
  olasilik, kapananKutle }
  from "./zincir.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 uzunluk = ZINCIR.map((z) => z.adim.length);

console.log(`${ISTISMAR.length} istismar x ${YUK.length} yuk -> ${ZINCIR.length} gecerli zincir; ` +
  `adim sirasi ${ADIM.map((a) => HARF[a]).join("")} = ${ADIM.join(", ")}; ` +
  `zincir uzunlugu ${Math.min(...uzunluk)}..${Math.max(...uzunluk)}, ` +
  `toplam adim ${uzunluk.reduce((a, x) => a + x, 0)}`);

const A = [-26, 18, 10, 7];
console.log("\n1. gecerli zincirler");
yaz(A, "istismar", "yuk", "maske", "adim");
for (const z of ZINCIR) yaz(A, z.istismar, z.yuk, maske(z), z.adim.length);

const B = [-18, 10, 10, 8, 12];
console.log("\n2. bir adim kirilirsa");
yaz(B, "adim", "zincirde", "kapanan", "kalan", "olmus adim");
for (const a of ADIM)
  yaz(B, a, gecen(a).length, kapanan([a]), ZINCIR.length - kapanan([a]), oncekiToplam(a));

const C = [-20, 10, 10, 8];
console.log("\n3. yuk engellenirse (istismar yerinde kalir)");
yaz(C, "yuk", "zincirde", "kapanan", "kalan");
for (const y of YUK) {
  const n = ZINCIR.filter((z) => z.yuk === y.ad).length;
  yaz(C, y.ad, n, n, ZINCIR.length - n);
}
for (const i of ISTISMAR) {
  const n = ZINCIR.filter((z) => z.istismar === i.ad).length;
  yaz(C, "istismar " + i.ad.slice(0, 11), n, n, ZINCIR.length - n);
}

const ORTA = ADIM.slice(1, -1); // erisim ve etki mesru isin uclaridir, tumden kaldirilamaz
const D = [-24, 10, 8];
console.log("\n4. orta adimlardan en iyi tekli ve ikili (erisim ve etki disarida)");
yaz(D, "kirilan adim kumesi", "kapanan", "kalan");
const tekli = ORTA.map((a) => [a]).sort((x, y) => kapanan(y) - kapanan(x))[0];
const ikili = ORTA.flatMap((a, i) => ORTA.slice(i + 1).map((b) => [a, b]))
  .sort((x, y) => kapanan(y) - kapanan(x))[0];
for (const k of [tekli, ikili, ORTA])
  yaz(D, k.map((a) => HARF[a]).join("+"), kapanan(k), ZINCIR.length - kapanan(k));
const acik = ZINCIR.filter((z) => !z.adim.some((a) => ORTA.includes(a)));
console.log(`butun orta adimlar kirildiginda ayakta kalan zincir: ` +
  acik.map((z) => `${z.istismar} + ${z.yuk} (${maske(z)})`).join(", "));

const E = [-18, 11, 11, 12, 15];
console.log("\n5. kapanan zincir sayisi ile kapanan olasilik kutlesi");
yaz(E, "adim", "kapanan", "zincir %", "kutle %", "kutle/zincir");
for (const a of ADIM) {
  const z = (kapanan([a]) / ZINCIR.length) * 100, k = (kapananKutle([a]) / KUTLE) * 100;
  yaz(E, a, kapanan([a]), z.toFixed(1), k.toFixed(1), (k / z).toFixed(2));
}
const enOlasi = [...ZINCIR].sort((x, y) => olasilik(y) - olasilik(x));
console.log(`toplam kutle ${KUTLE.toFixed(4)}; en olasi zincir ${enOlasi[0].istismar} + ` +
  `${enOlasi[0].yuk} (${olasilik(enOlasi[0]).toFixed(4)}, kutlenin ` +
  `%${((olasilik(enOlasi[0]) / KUTLE) * 100).toFixed(1)}'i), en olasi olmayan ` +
  `${enOlasi.at(-1).istismar} + ${enOlasi.at(-1).yuk} (${olasilik(enOlasi.at(-1)).toFixed(4)})`);
```

```
5 istismar x 4 yuk -> 12 gecerli zincir; adim sirasi EKTYPGLI = erisim, kesif, tetikleme, yurutme, yetki-yukseltme, yanal-gecis, kalicilik, etki; zincir uzunlugu 2..7, toplam adim 53

1. gecerli zincirler
istismar                                 yuk     maske   adim
kimlik-yeniden-kullanimi        veri-cikarma  EK.....I      3
kimlik-yeniden-kullanimi    kayit-degistirme  EK..P..I      4
girdi-tetikleme                 veri-cikarma  E.TY...I      4
girdi-tetikleme              hizmet-durdurma  E.TY...I      4
girdi-tetikleme                kalici-erisim  E.TY.GLI      6
imzasiz-paket                   veri-cikarma  EKTY...I      5
imzasiz-paket               kayit-degistirme  EKTYP..I      6
imzasiz-paket                hizmet-durdurma  EKTY...I      5
imzasiz-paket                  kalici-erisim  EKTY.GLI      7
hesap-paylasimi                 veri-cikarma  EK.....I      3
hesap-paylasimi             kayit-degistirme  EK..P..I      4
aktarim-dinleme                 veri-cikarma  E......I      2

2. bir adim kirilirsa
adim                zincirde   kapanan   kalan  olmus adim
erisim                    12        12       0           0
kesif                      8         8       4           8
tetikleme                  7         7       5          11
yurutme                    7         7       5          18
yetki-yukseltme            3         3       9           8
yanal-gecis                2         2      10           7
kalicilik                  2         2      10           9
etki                      12        12       0          41

3. yuk engellenirse (istismar yerinde kalir)
yuk                   zincirde   kapanan   kalan
veri-cikarma                 5         5       7
kayit-degistirme             3         3       9
hizmet-durdurma              2         2      10
kalici-erisim                2         2      10
istismar kimlik-yeni         2         2      10
istismar girdi-tetik         3         3       9
istismar imzasiz-pak         4         4       8
istismar hesap-payla         2         2      10
istismar aktarim-din         1         1      11

4. orta adimlardan en iyi tekli ve ikili (erisim ve etki disarida)
kirilan adim kumesi        kapanan   kalan
K                                8       4
K+T                             11       1
K+T+Y+P+G+L                     11       1
butun orta adimlar kirildiginda ayakta kalan zincir: aktarim-dinleme + veri-cikarma (E......I)

5. kapanan zincir sayisi ile kapanan olasilik kutlesi
adim                  kapanan   zincir %     kutle %   kutle/zincir
erisim                     12      100.0       100.0           1.00
kesif                       8       66.7        60.1           0.90
tetikleme                   7       58.3        25.7           0.44
yurutme                     7       58.3        25.7           0.44
yetki-yukseltme             3       25.0        14.1           0.56
yanal-gecis                 2       16.7         3.1           0.19
kalicilik                   2       16.7         3.1           0.19
etki                       12      100.0       100.0           1.00
toplam kutle 1.7492; en olasi zincir aktarim-dinleme + veri-cikarma (0.4500, kutlenin %25.7'i), en olasi olmayan imzasiz-paket + kalici-erisim (0.0227)
```

Sayılar **ölçüm** sınıfındadır; girdileri GK16–GK19'dur.

## Beş İstismar, On İki Zincir

Birinci tablo çarpımın nasıl daraldığını yeniden gösterir. Beş istismar ve dört yük yirmi
kombinasyon eder; geçerli olan **on ikisidir**, çünkü her yük her istismarla eşleşmez.
`hizmet-durdurma` ve `kalici-erisim` yürütme adımı gerektirir; `aktarim-dinleme` yalnız erişim
adımından oluştuğu için tek yük taşır ve iki adımlık en kısa zinciri üretir.

Zincir uzunlukları 2 ile 7 arasında değişir ve toplam 53 adım tutar. Uzunluk yükten gelir:
`imzasiz-paket` istismarı dört adımdır, üstüne `kalici-erisim` yükü üç adım ekler ve zincir yediye
çıkar. Aynı istismar `veri-cikarma` yüküyle beş adımda biter. **İstismar sabittir, zincirin boyunu
yük belirler.**

Bu, ayrımın neden önemli olduğunu yazar. `girdi-tetikleme` maskesi üç zincirde `E.TY...I`,
`E.TY...I` ve `E.TY.GLI` biçimindedir — ilk ikisi **tamamen aynı adım dizisidir** ve yalnız yük
adında ayrılır. Savunma tarafından bakıldığında bu iki zincir aynı yerlerden geçer, aynı kayıtları
üretir ve aynı denetimle kesilir; farkları yalnız gerçekleşince yazılan etkidedir.

## Hangi Adımı Kırmak Kaç Zinciri Kesiyor

İkinci tablo bu dersin ana ölçümüdür. Sekiz adımın her biri için iki sayı vardır: kaç zinciri
keser ve kesildiğinde kaç adım tamamlanmış olur.

Kesme gücü sırası `erisim` ve `etki` (12), `kesif` (8), `tetikleme` ve `yurutme` (7),
`yetki-yukseltme` (3), `yanal-gecis` ve `kalicilik` (2) biçimindedir. Sıra zincirin başından
sonuna doğru azalır, çünkü zincirler önce ortaktır sonra dallanır. **Erken adım daha çok yol
kapatır.**

Son sütun aynı sıralamayı tersine çevirir. `erisim` kırıldığında **hiçbir adım tamamlanmamıştır**;
`etki` kırıldığında 12 zincir boyunca **41 adım** çoktan tamamlanmıştır. `yurutme` 7 zincir keser
ve arkasında 18 tamamlanmış adım bırakır; `kesif` 8 zincir keser ve arkasında yalnız 8 adım. Aynı
kesme gücüne yakın iki adım, çok farklı miktarda gerçekleşmiş iş bırakır.

İki uç adımın tablodaki 12 sayısı yanıltıcıdır. `erisim` her zincirdedir, ama onu tümden kırmak
servisin kendisini kapatmaktır — meşru istekler de aynı adımdan geçer. `etki` de her zincirdedir,
ama orada kırmak olay olduktan sonra zararı sınırlamaktır, yolu kapatmak değil. Sayılabilir
kaldıraç **ortadaki altı adımdadır**.

## Yükü Engellemek Zinciri Kesmez

Üçüncü tablo üç kaldıracı yan yana koyar. Bir yükü engellemek en çok **5 zincir** kapatır
(`veri-cikarma`); bir istismarı engellemek en çok **4** (`imzasiz-paket`); bir adımı kırmak
**8**. Üç sütun aynı on iki zincir üzerinde koşar ve aradaki fark yalnız kaldıracın nereye
konduğundan gelir.

Yük en zayıf kaldıraçtır ve bunun nedeni tabloda görülür: yük, zincirin **sonunda** oturur ve
değiştirilebilir. `imzasiz-paket` istismarı dört yük taşır; bunlardan birini engellemek kalan üç
zinciri yerinde bırakır. Aynı istismarı kesmek dördünü birden kapatır. Adım kırmak daha da
geniştir, çünkü bir adım birden çok istismarda ortaktır: `kesif` adımı üç ayrı istismarda geçer
ve sekiz zinciri birden keser.

Bu sıralamanın pratik karşılığı, savunmanın nereye yazılacağıdır. Belirli bir etkiyi tanıyıp
durduran bir denetim tek bir sütunu kapatır; aynı emeği zincirin ortak adımına koymak dört kat
fazlasını kapatır. **Zincirin sonuna konan savunma, zincirin kaç kolu olduğu kadar kere
tekrarlanmak zorundadır.**

## Orta Adımların Yetmediği Zincir

Dördüncü tablo kaldıracın sınırını gösterir. Ortadaki en iyi tek adım `kesif`tir ve 8 zincir
kapatır, 4 zincir kalır. En iyi ikili `kesif` ile `tetikleme`dir: **11 zincir kapanır, 1 kalır.**
Altı orta adımın **tamamı** kırıldığında da sonuç değişmez — yine 11 kapanır, 1 kalır.

Ayakta kalan zincir `aktarim-dinleme` istismarı ile `veri-cikarma` yüküdür ve maskesi
`E......I`dır. Bu zincirin ortasında hiçbir adım yoktur: erişimden doğrudan etkiye gider. Ortadaki
altı adıma yazılan bütün savunmalar ona hiç dokunmaz, çünkü o adımların hiçbirinden geçmez.

Bu satır zincir modelinin kendi sınırını yazar. Zinciri adımlamak, savunmanın nereye
konulacağını seçmeyi sağlar; ama adım kümesi boş olan bir zincir bu seçimin dışında kalır. Onu
kapatmanın tek yolu ilk adıma, yani **erişime** dokunmaktır — ve erişim tam da tabloda "tümden
kaldırılamaz" diye dışarıda bırakılan adımdır. Bir sonraki soru bu yüzden kaçınılmazdır: erişim
tek bir adım gibi yazıldı, oysa bir varlığa erişmenin kaç ayrı biçimi var.

## Zincir Sayısı ile Olasılık Kütlesi Aynı Şey Değil

Beşinci tablo her zincire bir tamamlanma olasılığı verir — adım olasılıklarının çarpımı — ve
kırılan adımın kaç zinciri değil, **ne kadar olasılık kütlesini** kapattığını sayar. On iki
zincirin toplam kütlesi 1,7492'dir.

İki sütun aynı yöne gitmez. `kesif` zincirlerin %66,7'sini ve kütlenin %60,1'ini kapatır; oran
0,90 ile dengelidir. `tetikleme` ve `yurutme` zincirlerin %58,3'ünü kapatır ama kütlenin yalnız
**%25,7'sini** — oran 0,44. Sayı olarak neredeyse aynı işi yapan iki denetim, gerçekleşme
olasılığı cinsinden iki buçuk kat farklıdır. Nedeni uzunluktur: yürütme geçen zincirler uzundur,
her ek adım olasılığı bir kez daha çarparak düşürür. `yanal-gecis` ve `kalicilik` en uçtaki
örnektir — zincirlerin %16,7'sini kapatır, kütlenin %3,1'ini.

Son satır önceki dersin sayısına bağlanır. En olası zincir `aktarim-dinleme` ile `veri-cikarma`
çiftidir: iki adımlık, 0,4500 olasılıklı ve tek başına toplam kütlenin **%25,7'sini** taşır. En
olası olmayanı yedi adımlık `imzasiz-paket` ile `kalici-erisim`tir: 0,0227. Üçüncü derste
`imzasiz-guncelleme` kaleminin olasılığı 0,03, `sifresiz-aktarim` kaleminin 0,25 yazılmıştı; o iki
sayının nereden geldiği burada görünür — **zincir uzadıkça olasılık düşer, etki büyür**.

Bu, dördüncü tablonun bulgusunu daha da keskinleştirir. Bütün orta adımlar kırıldığında ayakta
kalan tek zincir, aynı zamanda **kütlenin dörtte birini taşıyan** zincirdir. Sayarak bakıldığında
12'de 1'lik bir artıktır; olasılıkla tartıldığında savunmanın dışarıda bıraktığı en büyük tek
paydır.

## Özet

- İstismar bir açığı kullanan adım dizisi, yük ise istismar tamamlandıktan sonra yazılan etkidir;
  beş istismar ile dört yük 12 geçerli zincir üretir, uzunlukları 2 ile 7 arası, toplam 53 adım.
- Bir adımı kırmak zincirin başına yaklaştıkça daha çok yol kapatır: 12, 8, 7, 7, 3, 2, 2. Aynı
  istismarın iki zinciri aynı adım dizisini izleyip yalnız yük adında ayrılabilir.
- Aynı kırılma zincirin neresinde olduğuna göre farklı miktarda tamamlanmış iş bırakır: erişimde 0,
  keşifte 8, yürütmede 18, etkide 41 adım.
- Üç kaldıraç eşit değildir: bir yükü engellemek en çok 5, bir istismarı engellemek en çok 4, bir
  adımı kırmak 8 zincir kapatır; yük en zayıf kaldıraçtır, çünkü zincirin sonunda oturur.
- Altı orta adımın tamamı kırıldığında 12 zincirden biri ayakta kalır — ortasında hiç adım
  olmayan, erişimden doğrudan etkiye giden zincir.
- Zincir sayısı ile olasılık kütlesi ayrı ölçülerdir: tetikleme zincirlerin %58,3'ünü ama kütlenin
  %25,7'sini kapatır; ayakta kalan tek zincir kütlenin %25,7'sini taşır.

## Sonraki Adım

Bu dersin bütün ölçümleri tek bir varsayımın üstünde durdu: `erisim` bir adımdır. On iki zincirin
on ikisi de o adımdan başladı ve o adım hiç açılmadı. Oysa bir varlığa erişmek tek bir kapıdan
geçmek değildir — şube ucundan, saha uygulamasından, ortak arayüzünden ya da yönetim ucundan
başlayan ayrı ayrı yollar vardır ve her biri farklı sayıda durak üzerinden geçer. Konunun son
dersi bu yolları bir grafta modeller, **yol sayımını gerçekten koşturur** ve saldırı yüzeyini
azaltmanın kaç yol kapatıp kaç meşru işi durdurduğunu sayar.
