CEN429 Güvenli Programlama · Hafta 6

Çalışma Zamanı Uygulama Öz Koruması (RASP)

CEN429 Güvenli Programlama — Hafta 6

Dr. Öğr. Üyesi Uğur CORUH · 23.10.2026

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Bugün

Saat Bölüm Konu
1 1–3 RASP nedir, RASP mimarisi · Bütünlük denetimi (self-hashing) Demo 1
2 4–6 Hata ayıklayıcı algılama Demo 2 · Ortam/emülatör algılama Demo 3 · Kanca/enstrümantasyon algılama Demo 4
3 7–10 Bellek koruması · Kök/imza doğrulama Demo 6-7 · Kontrol akışı bütünlüğü Demo 5 · Tepki politikası Demo 8 · Proje

Öğrenme çıktısı (ÖÇ.3): RASP denetimlerini (bütünlük, anti-debug, ortam, kanca) tanımak · tepki politikası ve cihaz bağlama tasarlamak · RASP'in sınırlarını ve etik çerçevesini açıklamak

RASP = Runtime Application Self-Protection: uygulamanın çalışırken kendini izlemesi ve tehdide tepki vermesi. Algıla → savun → caydır. Ama tek denetim değil, katman.

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Önceki haftalardan gelenler

  • Beyaz kutu saldırgan modeli — cihazın sahibi olan kullanıcının aynı zamanda saldırgan olabildiği; belleği okuyup hata ayıklayıcı bağlayabildiği model (Hafta 1)
  • Özet, MAC ve HMAC — özet bir veriden hesaplanan tek yönlü parmak izi; HMAC paylaşılan bir gizli anahtarla mesajın değişmediğini kanıtlar (Hafta 3)
  • Ana sırdan anahtar türetme (HKDF) — bir ana sırdan Extract ve Expand adımlarıyla yeni anahtarlar türetme (Hafta 3)
  • Cihaz bağlama — bir sırrın yalnızca belirli bir cihazda anlamlı olması, güvenlik kabuğunun en iç katmanı (Hafta 3)

Bu hafta: beyaz kutu modeli → MATE saldırgan modeli (Bölüm 1); HMAC → uygulamanın kendi kodunu doğrulamak (Bölüm 3); HKDF → cihaz parmak izinden anahtar türetmek (Bölüm 10); cihaz bağlama → bir RASP tepki politikasının parçası (Bölüm 10).

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Bu haftanın kavramları

Her terim, gövdede ilk geçtiği yerde tanımlanır; burada yalnız nerede olduğunu işaretliyoruz.

Kavram Nerede
RASP (algıla/savun/caydır) Bölüm 1
MATE saldırgan modeli Bölüm 1
RASP mimarisi (ne zaman/nerede/nasıl) Bölüm 2
Bütünlük / self-hashing Bölüm 3
Hata ayıklayıcı (debugger) algılama Bölüm 4
Emülatör/VM algılama Bölüm 5
Kanca (hook) / LD_PRELOAD algılama Bölüm 6
Dinamik bellek koruması Bölüm 7
Kök (root) göstergesi Bölüm 8
Bileşen imza doğrulaması Bölüm 8
Kontrol akışı sayacı Bölüm 9
Tepki politikası ve cihaz bağlama Bölüm 10
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

1. RASP nedir?

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Kısa tarihçe — uygulama kendini korur

  • 1980'ler — crack/anti-crack kültürü: anti-debug ve self-check kökeni
  • 2000'ler — DRM ve mobil bankacılık korumayı uygulamanın içine taşır
  • 2012 — Gartner RASP terimini ortaya atar
  • bugün — OWASP MASVS-RESILIENCE bunu denetlenebilir gereksinime çevirir

RASP yeni bir fikir değil: MATE saldırganına verilen kurumsal cevabın adı.

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

WAF ↔ RASP — şema

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

WAF ↔ RASP karşılaştırması

Koruma Nerede durur Neyi görür
Ağ güvenlik duvarı Ağ kenarında Paketler
WAF (Web App Firewall) Uygulamanın önünde HTTP istekleri
RASP Uygulamanın içinde Kendi kodu, belleği, ortamı

WAF "dışarıdan gelen istek zararlı mı?" sorar; RASP "ben kurcalandım mı?" sorar.

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Saldırgan modeli: MATE

  • MATE (Man-At-The-End): uygulamanın çalıştığı uç noktanın sahibi olan saldırgan. Belleği okur, kodu değiştirir, hata ayıklayıcıyla izler. 11. haftadaki beyaz kutu modeliyle aynıdır.
  • Acı gerçek: cihazın sahibi saldırgansa, hiçbir istemci tarafı koruma nihai olarak kırılmaz değildir.
  • O hâlde RASP neden var? Amaç kırılmazlık değil; saldırıyı ölçeklenemez ve pahalı kılmak.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Üç iş: algıla, savun, caydır

  • Algıla: anormal ortamı/davranışı sez (debugger, emülatör, kurcalama).
  • Savun: tehdit varsa işlevi kısıtla/durdur.
  • Caydır: saldırıyı zahmetli kıl → saldırgan vazgeçsin.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

RASP döngüsü — algıla → savun → caydır

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

RASP neyi tamamlar?

  • Statik korumalar (4–5. hafta) çalışmadan geçerli.
  • Gizleme (9/11/14) anlamayı zorlaştırır.
  • RASP, program çalışırken aktif savunma ekler.

Gizleme RASP'ı gizler; RASP gizlemeyi çalışırken korur.

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

RASP neden gerekli?

  • Beyaz kutu saldırgan programı çalıştırıp izler (debugger, Frida).
  • Statik gizleme bunu tek başına durdurmaz.
  • RASP "beni izliyorlar mı?" diye bakıp tepki verir.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Ana kural (baştan)

RASP tek başına aşılmaz değildir; katmanlı ve çeşitli denetimlerle güç kazanır.

Tek bir "root mu?" denetimi kolayca atlanır; onlarca farklı denetim birlikte zorlaşır.

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

2. RASP mimarisi

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Denetim ne zaman çalışır?

  • Başlangıçta: açılışta ortam denetimi.
  • Kritik işlem öncesi: ödeme/anahtar kullanımından hemen önce.
  • Periyodik: arka planda düzenli.
  • Rastgele: öngörülemez anlarda (saldırgan zamanlayamasın).
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Denetim nerede çalışır?

  • Native tarafta (C/C++): tersine mühendisliği zor, tercih edilir.
  • Yönetilen tarafta (Java): daha kolay okunur, ama gerekli.
  • Çapraz denetim: iki taraf birbirini denetler.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Çapraz denetim fikri

  • Java tarafı, native kütüphanenin özetini denetler.
  • Native taraf, Java tarafının bütünlüğünü denetler.
  • Saldırgan ikisini birden atlamak zorunda.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Çok noktalılık ve sahte parametreler

  • Çok noktalılık: aynı denetim kodun birçok yerinde, her seferinde biraz farklı biçimde yapılır; bir nokta yamalanınca diğerleri hâlâ çalışır.
  • Korunan fonksiyonun içinde: değerli bir fonksiyon (ör. anahtar türetme) kendi giriş noktasında birkaç denetimi kendisi yapar — sahada on beşe yakın denetime kadar çıkabilir.
  • Sahte parametreler: giriş noktasında, okunabilirlik için gizlenen ve bir bütünlük denetimini tetikleyen ek parametreler bulunabilir (4. hafta).
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Denetim nasıl çalışır? (gizli)

  • Denetim kodu gizlenir (9. hafta): saldırgan denetimi kolayca bulamasın.
  • Sonuç opak (düz true/false değil).
  • Tepki gecikmeli olabilir (birazdan).
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Zayıf tasarım — tek karar noktası

if (debugger_present() || is_rooted() || integrity_broken())
    return ERROR;         /* patching this one line
                             bypasses everything */
decrypt_key();

Tek bir karşılaştırmayı ters çeviren saldırgan bütün korumayı geçer.

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Güçlü tasarım — veri bağımlılığı

Denetim sonucu bir if'e değil, sonraki hesabın verisine karışır:

  • Denetim sonuçları anahtar türetmeye katılır (temizse doğru anahtar, değilse farklı ama geçerli görünen anahtar).
  • Denetim sonuçları opak değerlerle taşınır (4. hafta).
  • Tepki, tetikleyiciden zaman ve kod olarak uzak bir yerde verilir.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Katmanlı denetim ağı

  • Tek denetim değil, onlarca farklı denetim.
  • Birbirini denetleyen ağ (checker network).
  • Birini atlamak diğerini tetikler.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Katmanlar birbirini korur — şema

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Mimari · özet şema

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Bu bölümün kuralı (1–2)

Denetimi tek yerde, tek anda, tek if ile yapmayın.

Çok noktalı, çapraz, gizli ve veri bağımlı denetimler birlikte bir RASP mimarisi kurar.

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Bölüm 1–2 — kısa sınama

  1. RASP'in üç işi?
  2. Çapraz denetim neden güçlü?
  3. Neden tek denetim değil, ağ?
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Bölüm 1–2 — cevaplar

  1. Algıla (kurcalama/debug/emülatör), Savun (anahtar/veri koruma, işlevi kısıtla), Caydır (tepki: kapan/boz/bildir).
  2. Denetimler birbirini kontrol eder; saldırgan birini kapatınca diğeri fark eder → tek noktayı susturmak yetmez.
  3. Tek denetim tek yamayla atlanır; örtüşen ağ her düğümü ayrı kırmayı gerektirir → saldırı potansiyelini yükseltir.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

3. Bütünlük denetimi (self-hashing)

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Fikir

  • Program, kendi kod bölümlerinin özetini hesaplar.
  • Beklenen özetle karşılaştırır.
  • Kurcalanmışsa özet tutmaz → tepki.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Nasıl çalışır? · adım adım

  1. Derleme sonrası, kritik kod bloklarının özeti kaydedilir.
  2. Çalışırken program aynı blokların özetini yeniden hesaplar.
  3. Kayıtlı özetle karşılaştırır.
  4. Fark varsa → kurcalama → tepki.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Adım 1 · özeti kaydet

  • Derleme bittikten sonra, kritik kod/veri bölgesi belirlenir.
  • Bu bölgenin özeti hesaplanır ve altın (golden) değer olarak saklanır.
  • Bu değer, "kurcalanmamış hâlin" imzasıdır.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Adım 2 · çalışırken yeniden hesapla

  • Program çalışırken, kayıtlı olan aynı kod/veri bölgesinin özetini yeniden hesaplar.
  • Bu hesaplama derleme anında değil, çalışma anında olur.
  • Hesaplama bir kez değil, periyodik de yapılabilir.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Adım 3 · karşılaştır

  • Yeni hesaplanan özet, kayıtlı altın değerle karşılaştırılır.
  • Karşılaştırma sabit zamanlı yapılmalı (memcmp değil): düz karşılaştırma ilk farklı baytta durup zamanlama sızdırır (3. hafta).
  • Eşitse: bütünlük tamam.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Adım 4 · tepki ver

  • Özet tutmuyorsa → kurcalama (yama) algılanmıştır.
  • Sonuç doğrudan bir if'e değil, bir tepkiye bağlanır (10. bölüm).
  • "Hemen çök" yerine daha akıllı bir tepki tercih edilir.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Self-hashing — şema

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Neyi yakalar?

  • Binary dosyaya yapılan yama (patch).
  • Bir denetimi atlamak için değiştirilen baytlar.
  • Enjekte edilmiş kod.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Demo 1 · çalışma zamanı bütünlük denetimi

code/week-06/01-integrity-hmac — self-hashing, HMAC-SHA-256.

  • Ders kitabı (Viega & Messier, Tarif 12.2) bunu CRC32 ile yapar; CRC32 kriptografik değildir, saldırgan CRC'yi eşleyecek şekilde kolayca ayarlar. Biz HMAC-SHA-256 kullanıyoruz (gizli anahtar gerekir).
  • Program kendi binary dosyasının özetini hesaplayıp altın değer olarak kaydeder.
  • Binary dosyanın bir kopyası alınır, bir baytı değiştirilir (yama simülasyonu); yamalı kopyanın özeti altın değerle karşılaştırılır.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Demo 1 · özün kodu

/* Find own path, read the file, compute HMAC */
self_path(path, sizeof(path));
read_file(path, &data, &size);
crypto_hmac_sha256(RASP_KEY, 32, data, size, digest);

/* constant-time comparison */
unsigned char diff = 0;
for (int i = 0; i < 32; i++)
    diff |= expected[i] ^ digest[i];
if (diff == 0) { /* TAMAM */ } else { /* YAMA */ }
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Bütünlük denetimi (animasyon)

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Bütünlük denetimi — uç durum: ilk bayt yamalı

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Demo 1 · gerçek çıktı

STEP 2 - Normal run: integrity verifies OK (no patch)
Expected   : 5aeaf45226dbb29af7...b55115de4
Computed   : 5aeaf45226dbb29af7...b55115de4
RESULT: INTEGRITY OK - target unchanged.

STEP 3 - Attack: 1 byte of the copy is changed
STEP 4 - The patched copy's HMAC is compared
Expected   : 5aeaf45226dbb29af7...b55115de4
Computed   : c47c35687dc205b93a...aca0ec8a
RESULT: PATCH DETECTED - target was modified!

Tek bir baytı değiştirmek özeti tamamen değiştirdi (çığ etkisi).

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

⚠️ Self-hashing tek başına yeterli değil

  • Saldırgan, özet fonksiyonunu bulup her zaman "tutuyor" dedirtebilir.
  • Ya da donanım kesme noktalarıyla denetimi atlar (van Oorschot vd.).
  • Bu yüzden: gizle, çeşitlendir, çapraz denetle.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Güçlendirme

  • Özet denetimi kodu gizli (9. hafta).
  • Birden çok blok, örtüşen bölgeler.
  • Sonuç düz karşılaştırma değil, hesaba karışır (denetim sonucu programın davranışını etkiler).
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Örtüşen denetim

  • Bir denetim başka bir denetimin kodunu da kapsar.
  • Saldırgan birini kapatınca diğeri bozulur.
  • Tek noktadan atlamak zorlaşır.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Bu bölümün kuralı (3)

Kritik kod/veri bölgelerinin bütünlüğünü çalışma zamanında kriptografik bir özetle (HMAC/imza) doğrulayın, CRC ile değil.

Denetimi tek noktada ve yalnız başlangıçta yapmayın; periyodik, çoklu ve örtüşen yapın.

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

4. Hata ayıklayıcı algılama

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Anti-debug yolları — şema

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Neden debugger tehlikeli?

  • Hata ayıklayıcı (debugger): programı adım adım çalıştırıp durduran, belleği okuyan araç (gdb, lldb, x64dbg, WinDbg).
  • Saldırgan programı durdurup belleği okur, değer değiştirir.
  • Denetimleri tek tek atlayabilir.
  • RASP "bana debugger bağlı mı?" diye bakar.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Debugger algılama yolları (kavram)

  • İşletim sisteminin "izleniyorum mu?" bilgisini sorma.
  • Belirli hata ayıklama arayüzlerinin durumu.
  • Zamanlama: bir işlem beklenenden çok uzun sürdüyse, biri adım adım çalıştırıyor olabilir.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Platforma göre gösterge · neler eskidi

Ortam Gösterge
Linux / WSL /proc/self/status → TracerPid (>0 ise izleniyoruz); ana sürecin adı gdb/strace mı
Windows IsDebuggerPresent (PEB BeingDebugged); CheckRemoteDebuggerPresent; PEB NtGlobalFlag

2003'ten bugüne: SoftICE öldü, yerine x64dbg/WinDbg/gdb/lldb/Frida geçti; ptrace+TracerPid hâlâ geçerli.

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Zamanlama tabanlı sezme

Debugger adımlaması işi yavaşlatır.

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Demo 2 · hata ayıklayıcı algılama

code/week-06/02-debugger-detection — anti-debug, yalnız okuma.

  • Program birden çok bağımsız sinyale bakar, hiçbir şeyi değiştirmez.
  • Kendini ptrace ile de izlemez; yalnız /proc ve PEB alanlarını okur.
  • demo.sh programı önce normal, sonra gdb altında çalıştırır.
/* Read TracerPid from /proc/self/status */
long tp = tracer_pid();
if (tp > 0) suspicious++;   /* a process is watching us */
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Hata ayıklayıcı algılama (animasyon)

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Hata ayıklayıcı algılama — uç durum: gdb bağlı

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Demo 2 · gerçek çıktı (WSL)

STEP 1 - Normal run (NO debugger)
1) /proc/self/status TracerPid : 0 (no tracer)
2) Parent process name         : sh
RESULT: clean - no tracing tool visible.

STEP 2 - Run under gdb
1) /proc/self/status TracerPid : 41885 (TRACED)
RESULT: a debugger/tracing TOOL was detected (2 signal(s)).

Hata ayıklayıcı yokken TracerPid 0; gdb altında 41885 (>0) çıktı.

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

⚠️ Tespit–karşı-tespit yarışı

Anti-debug klasik bir silah yarışıdır: saldırgan ptrace'i LD_PRELOAD ile no-op yapabilir, IsDebuggerPresent'in dönüşünü yamalayabilir, PEB bayrağını temizleyebilir.

  • Her tek yöntem bilinir ve atlanabilir.
  • Güç: birçok farklı yöntem + gizleme + çeşitlendirme.
  • Amaç yine caydırma ve gecikme.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Tepki nasıl?

  • Hemen çökme her zaman iyi değil (saldırgana "burada denetim var" der).
  • Daha iyi: gecikmeli, dolaylı tepki (birazdan bölüm 10).
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Bu bölümün kuralı (4)

Anti-debug'ı tek bir if (IsDebuggerPresent()) exit(); olarak yazmayın.

Birden çok bağımsız sinyal toplayın, sonucu bir davranışa bağlayın, tepkiyi geciktirin.

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Bölüm 3–4 — kısa sınama

  1. Self-hashing neyi yakalar?
  2. Neden tek başına yetmez?
  3. Zamanlama nasıl debugger'ı ele verir?
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Bölüm 3–4 — cevaplar

  1. Kod/binary baytlarının değişmesini (yama, breakpoint/kod enjeksiyonu) — çalışırken kendi özetini hesaplayıp beklenenle karşılaştırır.
  2. Saldırgan hash rutinini/beklenen değeri bulup atlar veya karşılaştırmayı NOP'lar; ayrıca yalnız statik değişikliği yakalar. Örtüşen denetim gerek.
  3. Debugger/kesme noktası kodu yavaşlatır; iki nokta arası süre eşiği aşarsa hata ayıklama sezilir.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

5. Ortam algılama: emülatör/VM

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Emülatör yanlış pozitif — şema

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Neden emülatör?

  • Emülatör/VM: bir cihazı taklit eden yazılım ortamı (Android emülatör, QEMU).
  • Saldırgan analizini gerçek cihaz yerine emülatörde yapar.
  • Emülatörde durdurmak, izlemek, sıfırlamak kolaydır.
  • RASP "gerçek cihazda mıyım?" diye bakar.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Algılama ipuçları (kavram)

  • Emülatöre özgü donanım/sensör eksiklikleri.
  • Tipik sahte tanımlayıcılar.
  • Gerçek cihazda beklenen özelliklerin yokluğu.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Algılama teknikleri (somut)

Teknik Nasıl Not
CPUID hipervizör biti CPUID.1:ECX[31] — "hypervisor present" Bare-metal'de 0
Hipervizör satıcı imzası CPUID yaprak 0x40000000 → 12 karakter Bazı hipervizörler gizler
Zamanlama Bir işlemi ölç; ağır emülasyon çok yavaşlatır Eşik makineye göre değişir
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Demo 3 · VM/emülatör ve zamanlama

code/week-06/03-environment-timing — yalnız CPU komutu ve saat okur.

(A) CPUID.1:ECX[31] hypervisor bit    : PRESENT
    Hypervisor vendor signature        : "Microsoft Hv"
(B) time for 2,000,000 iterations      : 0.662 ms
RESULT: a hypervisor was SEEN.

Bu çıktı gerçek bir Windows dizüstünde (Hyper-V) alındı.

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

VM/emülatör algılama (animasyon)

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

VM/emülatör algılama — uç durum: imza tamamen boş

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

⚠️ En önemli ders: yanlış pozitif

  • Yukarıdaki çıktı hipervizör "PRESENT" dedi VE satıcı imzası görünür ("Microsoft Hv").
  • Ama bu bir analiz ortamı değil — sıradan bir geliştirici makinesi!
  • Modern Windows'ta Hyper-V, WSL2, VBS yüzünden çoğu makine hipervizör bildirir.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Yanlış pozitifin bedeli

  • Bu bit tek başına "saldırgan analiz ediyor" anlamına gelmez.
  • Bir uygulama sırf hipervizör gördüğü için çalışmayı reddetseydi, milyonlarca meşru kullanıcıyı engellerdi.
  • Meşru kullanıcı: geliştirici, kurumsal VM kullanıcısı, WSL2/Hyper-V/VBS'li sıradan Windows kullanıcısı.
  • RASP daima birden çok göstergeyi tartar ve her birinin atlatılabileceğini kabul eder.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Kural: risk skoru, ikili karar değil

  • Ortam algılamayı bir risk skoru olarak kullanın.
  • Birden çok göstergeyi birleştirin.
  • Nihai kararı sunucu tarafı risk motoruyla birlikte verin.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Sahada nasıl uygulanır?

  • Mobil dünyada karşılığı emülatör algılamadır: ro.kernel.qemu, sahte sensörler, tipik IMEI/seri değerleri.
  • Aynı ilke geçerlidir: sinyal, kanıt değil.
  • Kombinasyon + sunucu tarafı denetim.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Bu bölümün kuralı (5)

Emülatör/VM algılamada tek bir bit asla "saldırı" anlamına gelmez.

Sert tepki yerine risk skoru; sonuç sunucu tarafı doğrulamayla birlikte değerlendirilir.

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

6. Kanca ve enstrümantasyon algılama

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Kısa tarihçe — statikten dinamiğe

  • 1990'lar — IAT/PLT-GOT kancaları: elle yazılmış, hedefe özel araçlar.
  • 2000'ler — LD_PRELOAD / DLL enjeksiyonu: genel amaçlı ama statik.
  • 2013–2014 — Frida ortaya çıktı: kanca kodu JavaScript ile çalışma zamanında yazılır, derleme gerekmez.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Kanca algılama — şema

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Kanca (hook) tehdidi

  • Saldırgan kritik bir fonksiyonu kancalar: çağrıyı araya girip değiştirir.
  • Örnek: "imza geçerli mi?" fonksiyonunu her zaman "evet" döndürtmek.
  • Araç: Frida, Xposed.
  • Enstrümantasyon: çalışan programa kod enjekte edip davranışını izleme/değiştirme; Frida bunun en yaygın aracıdır.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

LD_PRELOAD kancası

  • Linux'ta bir kütüphaneyi programdan önce yükletip fonksiyonları değiştirme.
  • Kritik fonksiyon saldırganın sürümüyle değişir.
  • RASP yüklenen kütüphaneleri denetler.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Kanca teknikleri — tablo

Teknik Nasıl Platform
LD_PRELOAD .so'yu önyükleyip fonksiyon değiştirme Linux
PLT/GOT kancası Çağrı tablosu girişini yönlendirme Linux/ELF
Satır içi (inline) kanca İlk baytları jmp ile ezme Her yer
Frida / Xposed Dinamik binary enstrümantasyon Mobil/masaüstü
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Kanca algılama yolları (kavram)

  • Beklenmeyen yüklenmiş kütüphaneler/modüller.
  • Bilinen enstrümantasyon araçlarının izleri (bellekte, portlarda).
  • Fonksiyon adreslerinin beklenenden sapması.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

⚠️ Zayıf yol: getenv

if (getenv("LD_PRELOAD") == NULL) printf("temiz\n");

getenv'in kendisi de kancalanıp NULL döndürebilir. Bu yüzden kaynağı doğrulamak gerekir:

  1. Kritik fonksiyonu çöz (dlsym) → 2. geldiği modülü bul (dladdr) → 3. meşru mu denetle → 4. karar ver.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Adım 1 · fonksiyonu çöz

void *p = dlsym(RTLD_DEFAULT, "time");
  • dlsym, çalışma anında hangi fonksiyonun çağrılacağını bulur.
  • Önyüklü bir kanca varsa, dlsym onu döndürür (manipüle edilmiş sonuç).
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Adım 2 · kaynağı bul

Dl_info info;
dladdr(p, &info);   /* the .so that provides the function */
  • dladdr, bir adresin hangi paylaşımlı nesneden (.so) geldiğini söyler.
  • getenv sahteciliğine dayanmaz — doğrudan bellek adresine bakar.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Adım 3 · meşru mu denetle

int hook = !is_legitimate(info.dli_fname);
  • Beklenen kaynak libc, vDSO ya da dinamik yükleyicidir.
  • Yabancı bir .so'dan geliyorsa → kanca var.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Adım 4 · karar ver

  • Meşru kaynak listesinde yoksa → kanca bayrağı kaldırılır.
  • Sonuç tek başına bırakılmaz; tepki politikasına bağlanır (10. bölüm).
  • Birden çok fonksiyon için tekrarlanır (tek fonksiyon yetmez).
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Fonksiyon bütünlüğü

  • Kritik fonksiyonun ilk baytları beklenen mi?
  • Kanca genelde başa bir atlama yerleştirir → baytlar değişir.
  • Değişmişse → kanca var.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

LD_PRELOAD sembol çözümleme sırası (animasyon)

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

LD_PRELOAD sırası — uç durum: kanca vDSO'dan hemen sonra

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Demo 4 · LD_PRELOAD kancası — gerçek çıktı

STEP 1 - Normal run (no LD_PRELOAD)
   time     -> linux-vdso.so.1
   getenv   -> /lib/x86_64-linux-gnu/libc.so.6
RESULT: clean - no preload/hook visible.

STEP 2 - Attack: the fake hook is loaded ONLY into this process
   time     -> bin/linux/libfake_hook.so (HOOK!)
   time(NULL) returned : 1234567890 (fixed fake value)
RESULT: function hook / preload DETECTED (2 signal(s)).

Temiz koşuda time, çekirdeğin vDSO'sundan çözüldü — bu meşrudur, kanca değil.

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

⚠️ Kanca algılama da atlanabilir

  • Gelişmiş araçlar izlerini gizler.
  • Güç: çoklu yöntem + gizleme + sunucu tarafı denetim.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Bu bölümün kuralı (6)

Kanca algılamada getenv(LD_PRELOAD) gibi manipüle edilebilir kaynaklara güvenmeyin.

Kritik fonksiyonların kaynağını (dlsym+dladdr) doğrulayın; birden çok fonksiyonu kontrol edin.

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

7. Dinamik bellek koruması

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Kısa tarihçe — "yalnız RAM'de" yetmez

  • 2008 — Halderman ve ortak yazarları, "Cold Boot Attacks" makalesinde DRAM'in güç kesilince bile
    saniyeler-dakikalar boyunca içeriğini koruduğunu gösterdi; bir dizüstünü soğutup yeniden başlatarak
    bellekteki tam disk şifreleme anahtarlarını kurtardılar.
  • Bu, "kısa ömür" ve "asla açık tutma" önlemlerinin doğrudan motivasyonudur.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Bellek koruma katmanları — şema

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Sorun

  • Hassas değerler (anahtar, sayaç) bellekte durur.
  • Saldırgan belleği okuyup/değiştirip denetimi atlayabilir.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Saldırgan bellekle ne yapar?

Saldırı Örnek Hedef
Okuma Süreç belleğinin dökümünü almak, bilinen değeri aramak Anahtar, PIN, çözülmüş veri
Değiştirme Bir sayacı/bayrağı bellekte değiştirmek Mantık ve denetimler
İzleme Bir değer değiştiğinde haber veren araçlar Değişkenlerin yerini keşfetmek

Hepsi için saldırganın süreç belleğine erişmesi gerekir (debugger, OS arayüzü, enjekte kütüphane).

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Korunan sayaç fikri

  • Kritik bir sayacı düz tutmak yerine:
    • bir gölge kopya + özet ile birlikte tut.
    • her okuma/yazmada tutarlılığı denetle.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Korunan değer · kavram

typedef struct { uint32_t value; uint32_t shadow; uint32_t mac; } Protected;
/* read: is value == ~shadow, and is mac correct? */

Saldırgan yalnız value'yi değiştirirse tutarsızlık yakalanır.

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Bellek izleme tespiti

  • Hassas bölgelere beklenmedik erişim izleniyor mu?
  • Bellek dökümü/tarama izleri.
  • Amaç: canlı bellek analizi maliyetini artırmak.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

⚠️ Bellek koruması sınırlı

  • Kararlı saldırgan yine erişebilir.
  • Amaç: geciktirmek, anahtarı kısa ömürlü kılmak (10. hafta).
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Bu bölümün kuralı (7)

Bellekte az, kısa ve dağınık tutun; kritik değeri gölge kopya + özetle koruyun.

Tutarsızlık bir tepkiye bağlanmalı — sessizce yok saymak korumayı boşa çıkarır.

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Bölüm 5–7 — kısa sınama

  1. Emülatör algılamada neden yanlış pozitif riski var?
  2. Kanca (hook) fonksiyon baytlarını neden değiştirir?
  3. Korunan sayaç neyi yakalar?
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Bölüm 5–7 — cevaplar

  1. Meşru kullanıcı da VM/emülatör/CI kullanabilir; zayıf sinyaller gerçek cihazda da görülür → suçsuzu engelleme riski. Sertliği derecelendir.
  2. Hook, hedefin ilk baytlarını bir atlama (jmp/trampoline) ile değiştirir ki çağrı saldırgan koduna sapsın → prolog baytları beklenenden farklı olur.
  3. Kontrol akışının atlanmasını: kritik denetimler çalıştıkça sayaç artar; beklenen değere ulaşmazsa bir denetim baypas edilmiştir.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

8. Kök ortam ve imza doğrulama

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Kısa tarihçe — paket imzalama

  • Android 1.0 (2008) — orijinal APK imzalama (v1): değiştirilmiş APK orijinal imzayı taşıyamaz.
  • Android 7.0 Nougat (2016) — APK Signature Scheme v2: dosya dosya değil, APK'nin tamamı imzalanır.
  • Android 9 Pie (2018) — v3, aynı ilkeye anahtar döndürme desteği ekledi.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Kök göstergesinden karara — şema

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Köklü cihaz neden risk?

  • Kök (root) = tam yetki.
  • Korumalar zayıflar; saldırgan belleğe, dosyaya, sürece erişir.
  • RASP "cihaz köklü mü?" diye bakar.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Kök algılama (kavram)

  • Bilinen kök araçlarının/dosyalarının varlığı.
  • Normalde kısıtlı olan işlemlerin yapılabilmesi.
  • Sistem bütünlüğü göstergeleri.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

⚠️ Kök algılama atlanabilir

  • Kök gizleyiciler (root hiding) vardır.
  • Tek gösterge yetmez; birçok gösterge + sunucu denetimi.
  • Tepki: kritik işlevi kısıtla, tümden engelleme (kullanıcı mağdur olmasın).
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Bileşen imza doğrulaması

  • Çağıran/yüklenen bileşenin dijital imzası beklenen mi?
  • Sahte/değiştirilmiş bir uygulama kütüphaneyi çağırıyorsa yakala.
  • Örnek: yalnız beklenen imzalı ana uygulama SDK'yı kullanabilsin.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

İmza + özet birlikte

  • İmza: bileşen kim tarafından yayımlandı?
  • Özet: bileşen değişti mi?
  • İkisi birlikte sahtekârlığı zorlaştırır.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Kök/ayrıcalık gösterge taraması (animasyon)

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Kök göstergesi — uç durum: birden çok işaret + yükseltilmiş

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Bileşen imzası doğrulama (animasyon)

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Bileşen imzası — uç durum: modül kısaltıldı

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Demo 6 ve 7 · gerçek çıktılar

# Demo 7 (root/privilege indicator)
Privilege level : normal user
[FOUND] output\fake_su (extra indicator)
RESULT: an elevated/risky environment INDICATOR is present.

# Demo 6 (component signature)
Module signature DID NOT HOLD -> REPACKAGED.
Loading REJECTED.

Her iki demo da yalnız okuyarak/doğrulayarak çalışır; sistem değiştirmez.

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Bu bölümün kuralı (8)

Kök/ayrıcalık göstergeleri kanıt değil, sinyaldir — kolayca sahtelenir.

Dinamik yüklenen her bileşeni yüklemeden önce kriptografik olarak doğrulayın; mümkünse karşılıklı doğrulama kurun.

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

9. Kontrol akışı bütünlüğü

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Kısa tarihçe — kurcalamaya dayanıklılıktan CFI'ye

  • 1996 — Aucsmith: birbirini çapraz doğrulayan dağıtık bütünlük kontrolleri fikri.
  • 2001 — Collberg/Thomborson taksonomisi; Chang/Atallah "guard" (bekçi) fikri — birden çok denetleyici.
  • 2005 — Abadi, Budiu, Erlingsson, Ligatti: Control-Flow Integrity (CFI)'yi akademik olarak tanımladı.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Tek if neden yetmez?

if (signature_valid()) proceed();   /* single point */
  • Saldırgan bu tek dalı yamalar → denetim atlanır.
    1. haftadaki opak boolean + rastgele çıkış burada kritik.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Kontrol akışı sayacı

  • Kritik denetimler doğru sırayla geçilmeli.
  • Her denetim bir sayacı günceller.
  • Sonda sayaç beklenen değilse → biri atlandı.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Kontrol akışı sayacı — şema

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Çift sayaç

  • count (kaç kontrol noktası çalıştı) + visited_mask (hangi kontrol noktaları çalıştı, bit kümesi).
  • İkisi de HMAC zincirinden ayrı, okunabilir bir teşhis verir — ama kararı tek başına vermez.
  • Saldırgan bunları yamalasa bile gerçek anahtar hâlâ HMAC zincirinden türer (Demo 5).
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Sonucu davranışa bağla

  • Denetim sonucu düz bir if değil.
  • Sonuç, bir sonraki adımın hesabına girer (ör. bir anahtar türetmesine).
  • Atlanırsa program yanlış çalışır (sessizce bozulur).
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Kontrol akışı sayacı (animasyon)

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Kontrol akışı sayacı — uç durum: yanlış sırada

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Demo 5 · skip saldırısı — gerçek çıktı

SCENARIO 1 - normal: every checkpoint runs in order
RESULT: PAYMENT APPROVED -> "PAYMENT-APPROVAL-TOKEN-4242"

SCENARIO 2 - skip: the checks are SKIPPED entirely
   (warning: count=0 visited_mask=0x0 expected=3/0x7)
RESULT: PAYMENT DENIED (wrong chain key). a decoy is returned

SCENARIO 4 - reorder: the checks run in the WRONG ORDER
RESULT: PAYMENT DENIED (wrong chain key). a decoy is returned

Kontroller atlanınca ya da sırası bozulunca zincir farklı çıktı; gerçek sonuç üretilemedi.

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Bu bölümün kuralı (9)

Kritik kararları tek bir boolean'a bağlamayın (yamalanır).

Güvenlik kontrollerini bir kontrol akışı sayacına ve mümkünse bir veri bağımlılığına bağlayın.

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

10. Tepki politikası ve caydırma

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

"Hemen çök" neden kötü?

  • Tepki politikası: RASP bir tehdit görünce ne yapacağına karar vermesidir.
  • Saldırgana "işte tam burada denetim var" der.
  • Denetimi bulup atlamayı kolaylaştırır.
  • Daha akıllı tepkiler gerekir.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

İyi tepki örnekleri

  • Gecikmeli: tehdidi sonra, başka yerde tetikle (kaynağı gizle).
  • Dolaylı: işlevi sessizce bozar (yanlış sonuç üret).
  • Sunucuya bildir: risk skoru artır, işlemi sunucuda reddet.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Tepki stratejileri — tablo

Strateji Ne yapar
Fail-closed Şüphede işlemi reddet, güven deposuna düşme
Sırrı sil Tamper anında değerli veriyi güvenle sil
Decoy (sahte) çıktı Çökmek yerine rastgele/sahte sonuç döndür
Gecikmeli/örtük tepki Tepkiyi zaman/mesafe olarak tetikleyiciden ayır
Cihaz/sürüm bağlama Sırrı cihaza/sürüme bağla
Telemetri/attestation Olayı sunucuya bildir; sunucu risk motoru karar versin
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Tepki tasarımı

  • Kullanıcı deneyimini bozma (yanlış pozitif riski).
  • Sert tepki yalnız yüksek güvenli göstergede.
  • Çoğu durumda: kısıtla + sunucu denetimi.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Algıla → karar → tepki döngüsü

Demo 8 (code/week-06/08-tamper-response) bu döngüyü tek bir öz koruma motorunda birleştirir:

  1. Bir dizi kontrol çalışır (bütünlük, anti-debug, ortam…).
  2. Sır, cihaz-bağlı bir anahtarla (HKDF + AES-GCM) sarılıdır.
  3. Başarısız kontrol sayısı (ve cihaz uyuşup uyuşmadığı) dört durumlu bir tepki politikasına
    (NORMAL/WARN/DEGRADE/LOCK) çevrilir — ikili bir "temiz/tamper" kararı değil.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

RASP hattı: algıla → karar ver → tepki ver (animasyon)

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

RASP hattı — uç durum: cihaz uyuşmuyor ama kontroller geçti

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Adım A · algıla (senaryo 1 — normal)

SCENARIO 1 - normal: 0 failed checks, device matches -> NORMAL
RESULT: NORMAL. The secret opened and is in use
        -> "PAYMENT-KEY-7C4A"
(the secret was safely wiped from memory after use)

Kontroller geçti, cihaz doğruydu → sır açıldı, kullanıldı, hemen silindi.

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Adım B · karar (senaryo: warn/degrade)

SCENARIO 2 - warn: 1 failed check -> WARN
RESULT: WARN. One weak signal is not worth degrading
        service over. The secret still opened.

SCENARIO 3 - degrade: 2 failed checks -> DEGRADE
RESULT: DEGRADE. Multiple signals -> full trust withdrawn.
RESULT-VALUE: PAYM**** (redacted)

Bir kontrol başarısız → motor hâlâ sırrı açtı, yalnız kaydetti (WARN). İki kontrol başarısız → sır silindi, sansürlü sonuç döndü (DEGRADE).

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Adım C · tepki (senaryo: lock / başka cihaz)

SCENARIO 4 - lock: 3 failed checks -> LOCK
RESULT: LOCK -> detection checks failed (tamper)

SCENARIO 5 - other-device: checks pass, device key
             does not hold -> LOCK
RESULT: LOCK -> device/version binding failed (cloned?)

Kontroller geçse bile cihaz-bağlı anahtar tutmadı → sır açılamadı; üç kontrol başarısız olunca da aynı LOCK durumuna gidilir. Bu, Hafta 3'teki güvenlik kabuğunun en iç katmanıdır.

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Tepki politikası durum makinesi (animasyon)

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Durum makinesi — uç durum: her zaman LOCK

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Cihaz bağlama — şema

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Cihaz bağlama

  • Anahtar/veri yalnız belirli cihazda anlamlı.
  • Kopyalanırsa (başka cihaz) işe yaramaz.
  • Kod sökmeye (9/11. hafta) karşı.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Cihaz bağlama akışı · adım adım

Adım 1 — parmak izini oku: cihazın donanım/OS parmak izi okunur (5. hafta).

Adım 2 — anahtar türet: parmak izi + sürüm dizesinden HKDF ile bir anahtar türetilir; sır bu anahtarla AES-GCM ile sarılır.

Adım 3 — taşınırsa aç: dosya başka bir cihaza kopyalansa bile, o cihazın parmak izi farklı olduğundan türetilen anahtar tutmaz → sır açılamaz.

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Caydırma · nihai amaç

RASP saldırıyı imkânsız kılmaz; zahmetli ve riskli kılar.

Yeterince katman + sunucu denetimi → saldırgan vazgeçer ya da yakalanır.

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Tepki: nasıl karar verilir?

  1. Gösterge ne kadar güvenilir? Çok güvenilir → reddet + sunucuya bildir. Belirsiz → devam et, risk skorunu artır.
  2. Kullanıcı deneyimi etkilenir mi? Yanlış pozitif riski yüksekse sert tepki verme; sessiz kısıtlama + sunucu denetimi tercih et.
  3. Tepki denetimi ele verir mi? Hemen çökme kaynağı gösterir; gecikmeli/dolaylı tepki kaynağı gizler.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Tepki akışı · tek bakış

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Bu bölümün kuralı (10)

Tepkiyi tetikleyiciden ayırın: hemen exit() saldırgana yol gösterir.

Tamper anında sırrı silin, çökmek yerine decoy döndürün, olayı sunucuya bildirin, sırrı cihaza bağlayın.

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Bölüm 8–10 — kısa sınama

  1. Köklü cihaz neden risk?
  2. Tek if'i sayaç neden güçlendirir?
  3. Neden "hemen çök" kötü bir tepki olabilir?
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Bölüm 8–10 — cevaplar

  1. Root/jailbreak bellek okuma/yazma, hook, sertifika enjeksiyonu engellerini kaldırır → RASP varsayımları ve izolasyon çöker.
  2. Tek if bir NOP/yama ile atlanır; sayaç denetimin gerçekten çalıştığını sonradan doğrular (dağıtık kanıt) → tek yama yetmez.
  3. "Hemen çök" saldırgana denetimin tam yerini gösterir ve yanlış pozitifte meşru kullanıcıyı vurur. Gecikmeli/sessiz/aldatıcı tepki daha iyi.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

11. Sınırlar ve etik

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

RASP'in sınırları

  • Her tek denetim atlanabilir.
  • Köklü cihazda güç azalır.
  • Yanlış pozitif → gerçek kullanıcı mağdur olabilir.
  • Bakım maliyeti yüksek (araçlar gelişir).
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

RASP'in sınırları — şema

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

O yüzden RASP...

  • Katmanlı (çok denetim), çeşitlendirilmiş, gizli.
  • Sunucu tarafı denetimle birlikte (asıl güvence).
  • Tek başına "aşılmaz" iddiası yanlıştır.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Etik ve kullanıcı

  • RASP kullanıcının cihazında çalışır; aşırı veri toplama etik değil.
  • Yanlış pozitif kullanıcıyı hizmetten edebilir → dikkatli tepki.
  • Şeffaflık ve gizlilik dengesi.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

⚠️ Güvenli örnek kuralı

  • Ders demoları öğrenci cihazına zarar vermez.
  • Gerçek kök/sistem değişikliği yok; sentetik göstergeler.
  • Amaç kavramı öğretmek, saldırı aracı yapmak değil.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Uçtan uca: bir RASP katmanı kurmak

Sentetik bir "lisans denetimi"ni RASP ile koruyalım:

  • bütünlük denetimi
  • hata ayıklayıcı denetimi
  • akıllı tepki
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Adım 1 · korunacak nokta

int license_is_valid(void) {
    /* ... check ... */
    return result;   /* the attacker's target */
}

Bu fonksiyon ve onu çağıran akış kritik.

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Adım 2 · bütünlük denetimi ekle

  • Derleme sonrası bu bölgenin özetini kaydet.
  • Çalışırken yeniden hesapla, karşılaştır.
  • Fark → kurcalama bayrağı.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Adım 3 · anti-debug ekle

  • Zamanlama + OS göstergesiyle "izleniyor muyum?".
  • Sonucu tek başına bırakma; başka denetimle birleştir.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Adım 4 · sonucu davranışa bağla

  • license_is_valid sonucu düz true/false değil.
  • Bütünlük + anti-debug göstergeleri, sonucun hesabına girer.
  • Kurcalama varsa fonksiyon yanlış çalışır.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Adım 5 · tepki

  • Hemen çökme yerine: bayrağı sunucuya bildir, işlevi kısıtla.
  • Gecikmeli tetik: kaynağı gizle.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Adım 6 · gizle ve çeşitlendir

  • Denetim kodunu gizle (9. hafta).
  • Her sürümde farklı yerleştirme (çeşitlendirme).
  • Çapraz denetim ekle.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Adım 7 · ölç ve belgele

  • Kaç denetim, nerede, hangi tepki?
  • Başarım maliyeti (denetimler yavaşlatır).
  • S10'a yaz.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Saldırgan ile savunmacı: bir diyalog

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Neden bu diyalog?

Güvenlik bir hamle-karşı hamle oyunudur.

Her savunmaya bir saldırı, her saldırıya yeni savunma.

Katmanlı savunma bu yüzden gereklidir.

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Bütünlük · diyalog

  • Savunma: self-hashing ekle.
  • Saldırgan: özet fonksiyonunu bul, hep "tutuyor" dedirt.
  • Savunma: özeti gizle, örtüştür, sonucu davranışa bağla.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Anti-debug · diyalog

  • Savunma: debugger denetimi ekle.
  • Saldırgan: denetimi bul, atla.
  • Savunma: çok yöntem + zamanlama + gizleme; tepkiyi gecikmeli yap.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Hook · diyalog

  • Savunma: fonksiyon baytlarını denetle.
  • Saldırgan: kancayı gizle, baytları geri düzelt.
  • Savunma: çapraz denetim + sunucu tarafı doğrulama.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Kök · diyalog

  • Savunma: kök göstergelerini denetle.
  • Saldırgan: kök gizleyici kullan.
  • Savunma: çok gösterge + sunucu risk skoru; sert tepki değil kısıtlama.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Diyalogdan ders

  • Tek savunma her zaman aşılır.
  • Güç: çokluk + gizlilik + çeşitlilik + sunucu.
  • Amaç: saldırıyı ekonomik olmaktan çıkarmak.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

RASP denetim kataloğu (1)

Denetim Ne yakalar Sınır
Bütünlük (self-hash) Binary yama Özet fn. atlanabilir
Anti-debug Debugger bağlı Bilinen yöntemler atlanır
Emülatör Sahte ortam Yanlış pozitif
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

RASP denetim kataloğu (2)

Denetim Ne yakalar Sınır
Hook/Frida Fonksiyon kancası Gizli araçlar
Kök Yetki yükseltme Kök gizleyiciler
İmza Sahte bileşen Anahtar sızarsa
CFI sayacı Denetim atlama Karmaşık yama
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Katalogdan ders

  • Her denetimin bir kör noktası var.
  • Tek başına hiçbiri yeterli değil.
  • Katalogdan birçoğunu seç, birleştir, çeşitlendir.
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Denetim seçimi

  • Varlığın değerine göre kaç katman?
  • Platforma göre hangi denetimler anlamlı?
  • Başarım bütçesi ne kadar?

Kararı ve gerekçesini S10'a yaz.

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Sık yapılan hatalar

  • Tek denetime güvenmek.
  • Denetimi gizlememek (kolay bulunur).
  • "Hemen çök" tepkisi (kaynağı ele verir).
  • Sert tepki + yüksek yanlış pozitif (kullanıcı mağdur).
  • Sunucu denetimini atlamak (asıl güvence orada).
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

12. Proje: bu hafta (S10)

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Proje · S10 (RASP + tepki)

  • [ ] En az iki farklı RASP denetimi (ör. bütünlük + anti-debug).
  • [ ] Denetimler gizli ve çeşitlendirilmiş.
  • [ ] Çapraz denetim (Java ↔ native) varsa belgele.
  • [ ] Denetimlerin ne zaman/nerede çalıştığını belgele.
  • [ ] Tepki politikası akıllı (gecikmeli/dolaylı — "hemen çök" değil).
  • [ ] Cihaz bağlama kararı ve gerekçesi.
  • [ ] Sunucu tarafı doğrulama var mı?
  • [ ] Yanlış pozitif planı.
  • [ ] Sınır ve kalan risk (neyi korumaz).
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Değerlendirici gözüyle

  • "RASP var" yetmez; kaç katman, nasıl gizli, nasıl tepki?
  • Sunucu denetimiyle nasıl birleşiyor?
  • Yanlış pozitif riski nasıl yönetiliyor?
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Çözümlü kendini sınama

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Soru 1

RASP'in üç işi nedir?

Cevap: Algıla (anormal ortam/kurcalama), savun (işlevi kısıtla/durdur), caydır (maliyeti yükselt).

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Soru 2

Self-hashing neyi yakalar, neden tek başına yetmez?

Cevap: Binary'ye yapılan yamayı/kurcalamayı yakalar. Saldırgan özet fonksiyonunu bulup atlatabildiği için tek başına yetmez; gizleme + çapraz + örtüşen denetim gerekir.

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Soru 3

Çapraz denetim neden güçlüdür?

Cevap: Java native'i, native Java'yı denetler; saldırgan ikisini birden atlamak zorunda kalır.

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Soru 4

Zamanlama tabanlı anti-debug nasıl çalışır?

Cevap: Küçük bir iş beklenenden çok uzun sürdüyse, biri programı adım adım çalıştırıyor (debugger) olabilir.

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Soru 5

Tek if denetimini kontrol akışı sayacı neden güçlendirir?

Cevap: Denetimlerin doğru sırayla geçtiğini sayar; tek bir dalı yamalamak sayacı bozar, atlanma yakalanır.

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Soru 6

"Hemen çök" neden her zaman iyi bir tepki değildir?

Cevap: Saldırgana denetimin tam yerini gösterir. Gecikmeli/dolaylı tepki + sunucu bildirimi daha iyidir.

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Soru 7

Emülatör algılamada yanlış pozitif riski neden önemli?

Cevap: Gerçek cihaz/geliştirici ortamı emülatör gibi görünebilir; sert tepki gerçek kullanıcıyı mağdur eder.

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Soru 8

RASP'in temel sınırı nedir?

Cevap: Her tek denetim atlanabilir; köklü cihazda zayıflar. Güç katmandan, çeşitlilikten ve sunucu denetiminden gelir.

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Quiz-1 tarzı örnek sorular

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Örnek · çoktan seçmeli

RASP çapraz denetiminde amaç nedir?

A) Kodu küçültmek
B) İki tarafı da atlamayı zorunlu kılmak ✓
C) Şifreleme hızını artırmak
D) Günlüğü kapatmak

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Örnek · kısa cevap

Bir bütünlük denetimini güçlendiren üç yöntem yazın.

Gizleme · çoklu/örtüşen blok · çapraz denetim · sonucu davranışa bağlama.

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Sözlük

Terim Anlam
RASP Çalışma anı öz-koruma
MATE Uçtaki saldırgan (cihazın sahibi)
Self-hashing Kendi kodunun özetini denetleme
Hook/Frida Fonksiyon çağrısını araya girip değiştirme
CFI sayacı Denetim sırasını sayarak doğrulama
Cihaz bağlama Veriyi belirli cihaza (HKDF ile) bağlama
Decoy Çökmek yerine dönen sahte sonuç
Fail-closed Şüphede işlemi reddetme
Attestation Bütünlüğün sunucu tarafı kanıtı
RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz
CEN429 Güvenli Programlama · Hafta 6

Bir sonraki hafta

7. hafta — Ara proje gösterimleri (RAP1) ve 8. hafta — Quiz-1

Hafta 7'de bu haftaki RASP kontrollerinizi (bütünlük denetimi, hata ayıklayıcı/ortam/kanca algılama, kontrol akışı sayacı, tepki politikası) projenizde canlı göstereceksiniz. Hafta 8, 1–6. haftaları kapsayan Quiz-1'dir.

Ardından Hafta 9 — Gelişmiş gizleme ve çeşitlendirme, bu haftanın hata ayıklayıcı/ortam algılama ve "gizleme/caydırma kırılmazlık değildir" fikirlerini kod gizleme tarafında derinleştirerek sürer.

Bu haftanın özeti: RASP program çalışırken kendini izler ve tehdide tepki verir; tek denetim değil, katmanlı, çeşitlendirilmiş, gizli denetimler ve sunucu tarafı doğrulama ile güç kazanır. Gerçek güvence: katmanlı RASP + gizleme + kısa ömürlü anahtarlar + sunucu tarafı doğrulama — saldırganla oynanan bir zaman oyunudur.

RTEÜ Bilgisayar Mühendisliği · 2026-2027 Güz

Konuşma notu: Bu hafta odak "programı sağlamlaştırma"dan "program çalışırken kendini koruma"ya kayıyor. Ana varsayım: cihazın sahibi saldırgan (MATE). Ana fikir: tek kontrole güvenme; algılama + tepki + cihaz bağlama.

Konuşma notu: Bu hafta çalışma anı korumalarını (RASP) işliyoruz. Sıfır ön bilgi; her terimi tanımlayacağız. Ana çerçeve: RASP algılar, savunur, caydırır; ama tek başına değil, katmanlı.

Konuşma notu: Sonra bütünlük denetimi.

Konuşma notu: baytların tek tek nasıl bir özete katlandığını, sonra "altın" değerin yeniden okunan baytlarla nasıl karşılaştırıldığını gösterin.

Konuşma notu: yamanın dosyanın NERESİNDE olduğunun önemi yok — çığ etkisi baştan sona tüm özeti değiştiriyor.

Konuşma notu: /proc/self/status'un satır satır taranışını, TracerPid bulununca taramanın nasıl durduğunu gösterin.

Konuşma notu: hem TracerPid hem ana süreç adı aynı anda tetiklenince "algılandı (2 sinyal)" çıkıyor.

Konuşma notu: Sonra emülatör ve kanca algılama.

Konuşma notu: hipervizör bitinin nasıl okunduğunu, sonra 12 baytlık satıcı imzasının bayt bayt nasıl birleştiğini gösterin.

Konuşma notu: hipervizör biti VAR olsa bile satıcı imzası bazen tamamen boş dönebilir — bu da tek başına bir kanıt değildir.

Konuşma notu: yüklü nesnelerin arama sırasını ve dinamik yükleyicinin `time`'ı bulmak için hangi sırayla denediğini gösterin.

Konuşma notu: kancanın listede NEREDE olduğu önemli değil — libc'den önce gelen HERHANGİ bir kanca kazanır.

Konuşma notu: Sonra kök/imza, kontrol akışı bütünlüğü, tepki.

Konuşma notu: 14 bilinen göstergenin taranışını ve ayrıcalık seviyesinin skora nasıl eklendiğini gösterin.

Konuşma notu: göstergeler birikince sinyal sayısı artar — hâlâ tek başına "kanıt" değil, ama risk skoruna daha çok katkı.

Konuşma notu: üretim-zamanı imzalamayı ve yükleme-öncesi doğrulamayı yan yana gösterin.

Konuşma notu: yalnız bayt EKLEMEK değil, bayt SİLMEK de imzayı bozar — uzunluk da hesaba dahildir.

Konuşma notu: aşamaların altın zinciri nasıl oluşturduğunu, sonra gerçek çalışan sırayla karşılaştırıldığını gösterin.

Konuşma notu: bütün aşamalar çalışsa bile SIRA yanlışsa zincir farklı çıkıyor — çift sayaç bunu tek başına yakalayamaz, HMAC zinciri yakalar.

Konuşma notu: kontrollerin nasıl bir "başarısız sayısına" indirgendiğini, sonra bu sayının nasıl bir duruma ve somut bir tepkiye çevrildiğini gösterin.

Konuşma notu: cihaz uyuşmazlığı kaç kontrolün geçtiğinden BAĞIMSIZ olarak doğrudan LOCK'a sıçrar.

Konuşma notu: bir izleme zaman çizelgesindeki her çağrının dört durumdan birine nasıl sınıflandırıldığını gösterin.

Konuşma notu: kontrol sayısı sıfır başarısız olsa bile cihaz uyuşmazlığı HER ZAMAN LOCK'a gider.

Konuşma notu: Sonra sınırlar, etik, proje.

Konuşma notu: Sentetik bir örnekte bütünlük + anti-debug + tepki adım adım kuruyoruz.

Konuşma notu: Her denetim için "saldırgan ne yapar → savunma ne ekler" döngüsünü gösteriyoruz. Bu, katmanlı savunmanın neden gerekli olduğunu somutlaştırır.