Bölüm 13: Güvenlik

İşletim Sistemleri
Güvenlik hedefleri ve tehditlerSaldırganlar ve derinlemesine savunmaŞifreleme, özet, imza, PKI, TLSKoruma etki alanları ve erişim matrisiACL ve yetenekler, en az ayrıcalıkBell-LaPadula, Biba, gizli kanallarKimlik doğrulama: parola, MFA, geçiş anahtarıYazılım açıkları ve savunmalarİçeriden saldırılarKötü amaçlı yazılımlarKum havuzu, konteyner, SELinuxGüvenli önyükleme ve yan kanallar
Sercan KÜLCÜ · Giresun Üniversitesi · Bilgisayar Mühendisliği

Giriş

Öğrenme Çıktıları

Hedefler ve tehditler

Gizlilik, bütünlük ve erişilebilirlik hedeflerini; saldırı türlerini ve saldırgan profillerini ayırt etmek.

Kriptografi

Simetrik ve asimetrik şifrelemeyi, özet fonksiyonlarını, dijital imzayı, sertifikaları ve TLS el sıkışmasını açıklamak.

Koruma

Erişim matrisini ACL ve yetenek biçiminde okumak; en az ayrıcalığı, setuid ve Linux yeteneklerini uygulamak.

Biçimsel modeller

Bell-LaPadula ve Biba kurallarını uygulamak; gizli kanalların neden kapatılamadığını açıklamak.

Kimlik doğrulama

Tuzlu yavaş parola özetlerini, MFA, TOTP ve FIDO2 geçiş anahtarlarını karşılaştırmak.

Saldırılar ve savunmalar

Bellek güvenliği hatalarını, TOCTOU’yu ve kötü amaçlı yazılımları; kanarya, NX, ASLR, CFI, kum havuzu ve güvenli önyüklemeyi tanımak.

Giriş

Güvenlik Hedefleri: CIA Üçlüsü

GizlilikconfidentialityBütünlükintegrityErişilebilirlikavailabilityVarlıkveri · hizmet · donanımyetkisiz okuma yokhizmet ayaktayetkisiz değişiklik yokİhlal:ifşa (casusluk, sızıntı)İhlal:hizmet reddi (DoS)İhlal: tahrifat, sahte kayıt, fidye ile şifreleme

Eski sunumdaki “privacy” ve “accessibility” terimleri hatalıydı: doğru karşılıklar confidentiality (gizlilik) ve availability (erişilebilirlik/kullanılabilirlik). Bunlara sık eklenenler: özgünlük (authenticity) ve hesap verebilirlik (inkâr edilemezlik, denetim kaydı).

Giriş

Tehditler ve İhlal Kategorileri

KategoriTanımÖrnek
Gizlilik ihlaliVerinin izinsiz okunmasıKredi kartı veritabanının sızdırılması
Bütünlük ihlaliVerinin izinsiz değiştirilmesiNot sisteminde kayıt tahrifatı
Erişilebilirlik ihlaliVerinin/hizmetin yok edilmesiFidye yazılımının diski şifrelemesi
Hizmet hırsızlığıKaynakların izinsiz kullanımıEle geçirilen sunucuda kripto para kazma
Hizmet reddi (DoS/DDoS)Meşru kullanımın engellenmesiBotnet ile SYN seli
Kimlik değiştirmeBaşkası gibi davranma (masquerading)Oltalama ile çalınan parola
Ayrıcalık yükseltmeHak edilenden fazla yetki kazanmasetuid programdaki hatadan root olma
Tehdit (threat) olası bir zarar, zafiyet (vulnerability) onu mümkün kılan zayıflık, saldırı (attack) zafiyeti kullanma girişimi, istismar (exploit) de bunu yapan kod ya da yöntemdir. Kötü amaçlı yazılım, arabellek taşması ve yarış koşulları bu bölümde ayrı ele alınıyor.

Giriş · Adım adım

Ağ Saldırıları: Dinleme, Tekrar, Ortadaki Adam

AliceistemciBobsunucuEve / Mallorysaldırganparola=… · “1000 TL öde”

Alice ile Bob arasında normal iletişim. Kanal şifresiz ve kimlik doğrulamasızsa aşağıdaki saldırıların hepsi mümkündür.

AliceistemciBobsunucuEve / Mallorysaldırganparola=… · “1000 TL öde”dinleme (pasif): içerik okunur

Dinleme (eavesdropping): pasif saldırgan trafiği kopyalar → gizlilik ihlali. Çözüm: şifreleme (TLS).

AliceistemciBobsunucuEve / Mallorysaldırgan“1000 TL öde” (imzalı, geçerli)aynı mesaj tekrargönderilir (replay)

Tekrar saldırısı (replay): şifreli ve imzalı mesaj bile yeniden gönderilebilir. Çözüm: tek kullanımlık sayı (nonce), zaman damgası, sıra numarası.

AliceistemciBobsunucuEve / MallorysaldırganAlice “Bob”la konuştuğunusanırBob “Alice” ilekonuştuğunu sanırortadaki adam: okur ve değiştirir

Ortadaki adam (MITM): saldırgan iki tarafa da karşı taraf gibi görünür. Çözüm: karşı tarafın kimliğini sertifika ile doğrulamak.

AliceistemciBobsunucuEve / MallorysaldırganCookie: oturum=7f3a…çalınan çerezleoturuma girer

Oturum kaçırma (session hijacking): kimlik doğrulama sonrası verilen oturum belirteci çalınır. Çözüm: yalnız HTTPS, Secure/HttpOnly çerez, kısa ömür.

Giriş

Saldırganlar ve Kazayla Veri Kaybı

Meraklı içeriden kişi

Teknik bilgisi az; başkasının e-postasına, dosyasına “bakmak”. Etik dışı, çoğu zaman yasa dışı.

Kötü niyetli çalışan

Yetkisini kötüye kullanır: veri sızdırma, sabotaj, mantık bombası. En zor fark edilen grup.

Siber suçlu

Kâr amaçlı: fidye yazılımı, kimlik ve kart hırsızlığı, kiralık botnet. Bugün en yaygın tehdit.

Devlet destekli gruplar (APT)

Askerî ve ticari casusluk, kritik altyapı sabotajı; sıfırıncı gün açıkları ve tedarik zinciri saldırıları.

Kazayla veri kaybıÖrnekÖnlem
Doğal olaylaryangın, sel, deprem (ve bantları kemiren fareler)coğrafi olarak ayrı yedek
Donanım/yazılım hatasıdisk arızası, CPU hatası, yazılım hatasıRAID, sağlama toplamı, sürüm
İnsan hatasıyanlış komut, yanlış diski biçimleme, kayıp cihaz3-2-1 yedekleme, şifreli disk

Kazayla kayıp, saldırılardan daha sık veri kaybettirir. 3-2-1: 3 kopya, 2 farklı ortam, 1 kopya başka yerde ve tercihen değiştirilemez (immutable) — fidye yazılımına karşı da işe yarar.

Giriş

Derinlemesine Savunma ve İyi Uygulamalar

Politika, eğitim, fiziksel güvenlikAğ: güvenlik duvarı, segmentasyonUç nokta: yama, EDR, disk şifrelemeİşletim sistemi: erişim denetimi, kum havuzuUygulama: girdi denetimi, bellek güvenli dilVeriGüvenlik duvarıİnternetPC 1PC 2PC 3yalnız izinli bağlantılar geçer
  • Yama: güvenlik güncellemelerini hızla uygula (çoğu saldırı bilinen açıkları kullanır).
  • Güçlü kimlik doğrulama ve en az ayrıcalıkla erişim denetimi; günlük kaydı ve izleme.
  • Düzenli sızma testi; kullanıcıların oltalamaya karşı eğitimi; sıfır güven (zero trust): ağın içi de güvenilir sayılmaz.

Giriş

Güvenilir Bilgi İşleme Tabanı (TCB)

Kullanıcı alanıSüreç ASüreç BSüreç CSaldırganGüvenilir bilgi işleme tabanı (TCB)Referans izleyiciher erişimi denetlerÇekirdek, sürücülerKimlik doğrulamaDonanım (MMU, TPM)reddedildi

Referans izleyici üç koşulu sağlamalı: her erişimde çağrılır (atlanamaz), kurcalanamaz, doğrulanabilecek kadar küçüktür. TCB ne kadar büyükse hata olasılığı o kadar yüksektir: mikroçekirdek ve seL4 gibi biçimsel doğrulanmış çekirdekler bu yüzden ilgi görür.

Kriptografi · Adım adım

Şifrelemenin Temelleri ve Gizli Anahtarlı Şifreleme

Düz metin PŞifrele EŞifreli metin CÇöz DPanahtar Kanahtar K (aynı)saldırgan C’yi görürC = E(P, K) · P = D(C, K)

Simetrik (gizli anahtarlı) şifreleme: aynı K ile şifrele ve çöz. Kerckhoffs ilkesi: algoritma açık olabilir, güvenlik yalnızca anahtarın gizliliğine dayanmalı.

AQBWCEDRETFYGUHIIOJPKALSMDNFOGPHQJRKSLTZUXVCWVXBYNZMDüz metinŞifreli metinMERHABA

Tek alfabeli yerine koyma: her harf sabit bir harfe eşlenir; anahtar bu 26 harflik permütasyondur (26! ≈ 4×1026 olası anahtar).

AQBWCEDRETFYGUHIIOJPKALSMDNFOGPHQJRKSLTZUXVCWVXBYNZMDüz metinŞifreli metinMDERHABA

M → D: tabloda M’nin altındaki harf D.

AQBWCEDRETFYGUHIIOJPKALSMDNFOGPHQJRKSLTZUXVCWVXBYNZMDüz metinŞifreli metinMDETRHABA

E → T

AQBWCEDRETFYGUHIIOJPKALSMDNFOGPHQJRKSLTZUXVCWVXBYNZMDüz metinŞifreli metinMDETRKHABA

R → K

AQBWCEDRETFYGUHIIOJPKALSMDNFOGPHQJRKSLTZUXVCWVXBYNZMDüz metinŞifreli metinMDETRKHIABA

H → I

AQBWCEDRETFYGUHIIOJPKALSMDNFOGPHQJRKSLTZUXVCWVXBYNZMDüz metinŞifreli metinMDETRKHIAQBWAQ

Sonuç: MERHABA → DTKIQWQ. Üç A da Q oldu: harf sıklıkları korunur.

AQBWCEDRETFYGUHIIOJPKALSMDNFOGPHQJRKSLTZUXVCWVXBYNZMDüz metinŞifreli metinMDETRKHIAQBWAQ

Anahtar uzayı büyük olsa da sıklık analizi (Türkçede A, E, İ en sık) birkaç satırlık metinle şifreyi kırar. Bugün: AES-256-GCM, ChaCha20-Poly1305 (şifreleme + bütünlük birlikte).

Kriptografi

Açık Anahtarlı Şifreleme

AlicegöndericiBobalıcıaçıkPub_BözelPriv_Baçık anahtar herkese dağıtılabilirE(P, Pub_B)D(C, Priv_B)CPub_B ile şifrelenen yalnız Priv_B ile çözülür.
SimetrikAsimetrik (açık anahtarlı)
AnahtarTek, paylaşılanAçık + özel çift
HızÇok hızlı (AES-NI)100–1000 kat yavaş
KullanımToplu veriAnahtar değişimi, imza
ÖrnekAES, ChaCha20RSA, ECDH/X25519, Ed25519, ML-KEM

Eski sunumdaki “11×11 kolay, √121 zor” benzetmesi yanlıştı (karekök de kolaydır). Doğru fikir tek yönlü tuzak kapılı fonksiyon: iki büyük asalı çarpmak kolay, çarpımı çarpanlarına ayırmak (RSA) ya da ayrık logaritma (ECC) zor. Kuantuma dayanıklı ML-KEM 2024’te standartlaştı (FIPS 203).

Kriptografi · Adım adım

Özet Fonksiyonları ve Dijital İmza

GöndericiAlıcıBelge D

Gönderici D belgesini değiştirilmeden ve kendisinden geldiği kanıtlanarak iletmek istiyor (gizlilik şart değil).

GöndericiAlıcıBelge DSHA-256H(D)

Özet fonksiyonu (SHA-256, SHA-3) her boydaki girdiden sabit 256 bitlik özet üretir: tek yönlü, çakışmaya dayanıklı; tek bit değişince özetin yarısı değişir. MD5 ve SHA-1 kırıktır.

GöndericiAlıcıBelge DSHA-256H(D)İmzala (Priv_A)imza S

Özet gönderenin özel anahtarıyla imzalanır (RSA-PSS, ECDSA, Ed25519). Bu adımı yalnız Priv_A sahibi yapabilir.

GöndericiAlıcıBelge DSHA-256H(D)İmzala (Priv_A)imza SDS+ sertifika(Pub_A)

Belge, imza ve göndericinin açık anahtarını taşıyan sertifika birlikte gönderilir.

GöndericiAlıcıBelge DSHA-256H(D)İmzala (Priv_A)imza SDS+ sertifika(Pub_A)SHA-256H(D) yenidenDoğrula (Pub_A)eşleşti

Alıcı özeti kendisi hesaplar ve imzayı Pub_A ile doğrular: eşleşirse belge bozulmamış ve Alice’ten gelmiştir (inkâr edilemez).

GöndericiAlıcıBelge DSHA-256H(D)İmzala (Priv_A)imza SD'S+ sertifika(Pub_A)SHA-256H(D) yenidenDoğrula (Pub_A)EŞLEŞMEDİ

Yolda tek bayt değişirse (D′) özet tutmaz ve doğrulama başarısız olur. Saldırgan yeni geçerli imza üretemez, çünkü Priv_A onda yok.

Eski sunum “belge sıkıştırılarak hash hesaplanır, hash belgeyle gönderilir” diyordu: özet sıkıştırma değildir ve imzasız özet hiçbir şey kanıtlamaz (saldırgan belgeyle birlikte özeti de değiştirir).

Kriptografi

Sertifikalar ve Açık Anahtar Altyapısı (PKI)

Kök CAöz imzalı; işletim sistemi/tarayıcıgüven deposundaAra CAkök tarafından imzalıwww.ornek.edu.trara CA tarafından imzalıaçık anahtar + alan adıimzalarimzalarTarayıcının doğrulaması1. Sunucu sertifikası + ara CA gelir2. İmzalar zincir boyunca doğrulanır3. Kök, güven deposunda mı?4. Alan adı eşleşiyor mu? Süresi?5. İptal (OCSP/CRL) ve CT kaydı6. Hepsi tamam → bağlantı güvenilirSahte sertifika (MITM)güvenilir bir CA imzalamadığı içinzincir kurulamaz → uyarı

Sertifika (X.509) = açık anahtar + kimlik (alan adı) + geçerlilik süresi + CA imzası. Açık anahtarın gerçekten o kişiye ait olduğu sorununu çözer. Let’s Encrypt (ACME) sayesinde sertifikalar ücretsiz ve 90 günlük; ömürlerin kademeli olarak 47 güne inmesi kararlaştırıldı.

Kriptografi · Adım adım

TLS 1.3 El Sıkışması (Basitleştirilmiş)

İstemciSunucuClientHello: şifre takımları, key_share (X25519 açık değeri), rastgele{ } = şifreli gönderilir (yeşil)

İstemci desteklediği algoritmaları ve geçici (ephemeral) Diffie-Hellman açık değerini ilk mesajda gönderir.

İstemciSunucuClientHello: şifre takımları, key_share (X25519 açık değeri), rastgeleServerHello: seçilen takım, key_share{ } = şifreli gönderilir (yeşil)

Sunucu birini seçer ve kendi DH açık değerini gönderir. Şimdiye kadarki her şey açıktır.

İstemciSunucuClientHello: şifre takımları, key_share (X25519 açık değeri), rastgeleServerHello: seçilen takım, key_shareİki taraf ECDHE ile aynı gizli değeri hesaplar → oturum anahtarları{ } = şifreli gönderilir (yeşil)

Her iki taraf da karşı tarafın açık değeri ile kendi gizli değerinden aynı ortak sırrı hesaplar; sır ağda hiç dolaşmaz.

İstemciSunucuClientHello: şifre takımları, key_share (X25519 açık değeri), rastgeleServerHello: seçilen takım, key_shareİki taraf ECDHE ile aynı gizli değeri hesaplar → oturum anahtarları{Certificate, CertificateVerify, Finished}{ } = şifreli gönderilir (yeşil)

Sunucu sertifikasını gönderir ve el sıkışmanın özetini özel anahtarıyla imzalar (CertificateVerify): MITM bu imzayı üretemez.

İstemciSunucuClientHello: şifre takımları, key_share (X25519 açık değeri), rastgeleServerHello: seçilen takım, key_shareİki taraf ECDHE ile aynı gizli değeri hesaplar → oturum anahtarları{Certificate, CertificateVerify, Finished}{Finished} — istemci zinciri ve imzayı doğruladı{ } = şifreli gönderilir (yeşil)

İstemci zinciri ve imzayı doğrular, Finished ile el sıkışmanın değiştirilmediğini onaylar. Yalnız 1 gidiş-dönüş (1-RTT).

İstemciSunucuClientHello: şifre takımları, key_share (X25519 açık değeri), rastgeleServerHello: seçilen takım, key_shareİki taraf ECDHE ile aynı gizli değeri hesaplar → oturum anahtarları{Certificate, CertificateVerify, Finished}{Finished} — istemci zinciri ve imzayı doğruladı{Uygulama verisi} ⇄ AES-GCM / ChaCha20-Poly1305{ } = şifreli gönderilir (yeşil)

Uygulama verisi simetrik, kimlik doğrulamalı şifreleme ile akar. Geçici anahtarlar sayesinde ileriye dönük gizlilik: özel anahtar sonradan çalınsa bile eski trafik çözülemez.

Koruma

Koruma Etki Alanları

Etki alanı 1Dosya1[R]Dosya2[RW]Etki alanı 2Dosya3[R]Dosya4[RWX]Dosya5[RW]Etki alanı 3Dosya6[RWX]Çizici2[W]Yazıcı1[W]Yazıcı1 hem D2 hem D3’te: nesneler etki alanları arasında paylaşılabilir
  • Etki alanı (domain): (nesne, haklar) çiftlerinden oluşan küme. Süreç her an bir etki alanında çalışır.
  • UNIX/Linux: etki alanı = (UID, GID kümesi); ayrıca çekirdek ve kullanıcı kipi iki ayrı etki alanıdır.
  • Etki alanı değiştirme: setuid program çalıştırma, sistem çağrısıyla çekirdeğe geçiş.

Koruma

Koruma Matrisi

Dosya1Dosya2Dosya3Dosya4Dosya5Yazıcı1D1D2D3
D1RRWGir
D2RRWXRWW
D3W
  • Satır = etki alanı, sütun = nesne, hücre = haklar. Etki alanları da nesne olabilir: D1 → D2 hücresindeki Gir (enter), D1’deki sürecin D2’ye geçebileceğini söyler.
  • Matris çok seyrek: binlerce kullanıcı × milyonlarca dosya. Tümü saklanmaz; ya sütunlar (ACL) ya satırlar (yetenekler) saklanır.
  • Yetkili ve yetkisiz durum: matrisin her durumu güvenlik politikasıyla karşılaştırılır. Örneğin politikaya göre Eve’in bir dosyayı okuyamaması gerekirken bir komut dizisinden sonra hücrede R belirirse sistem yetkisiz duruma geçmiştir.
  • Harrison-Ruzzo-Ullman (HRU, 1976): genel durumda “bir hak sızabilir mi?” sorusu karar verilemez; bu yüzden kısıtlı modeller (BLP, Biba) kullanılır.

Koruma · Adım adım

Aynı Matris İki Biçimde: ACL ve Yetenekler

Dosya1Dosya2Dosya3Dosya4Dosya5Yazıcı1Dosya6Çizici2D1RRWD2RRWXRWWD3WRWXW24 hücreden 15’i boş: matris seyrek

“Koruma Etki Alanları” slaytındaki üç etki alanı ve sekiz nesne: aynı koruma matrisi.

Dosya1Dosya2Dosya3Dosya4Dosya5Yazıcı1Dosya6Çizici2D1RRWD2RRWXRWWD3WRWXWACL = sütun (nesneyle saklanır)Yazıcı1D2:W → D3:W

Erişim kontrol listesi (ACL): matrisin bir sütunu; nesnenin yanında saklanır. Yazıcı1’in ACL’si: D2 yazabilir, D3 yazabilir.

Dosya1Dosya2Dosya3Dosya4Dosya5Yazıcı1Dosya6Çizici2D1RRWD2RRWXRWWD3WRWXWACL = sütun (nesneyle saklanır)Dosya1D1:RDosya2D1:RWDosya4D2:RWXYazıcı1D2:W → D3:WDosya6D3:RWX

Her nesnenin boş olmayan girdileri birer ACL olur. Erişimde çekirdek, nesnenin ACL’sinde sürecin kimliğini arar.

Dosya1Dosya2Dosya3Dosya4Dosya5Yazıcı1Dosya6Çizici2D1RRWD2RRWXRWWD3WRWXWYetenek listesi = satır (süreçle/çekirdekte saklanır)Süreç (D2)Dosya3 : RDosya4 : RWXDosya5 : RWYazıcı1 : W

Yetenek listesi (capability, C-list): matrisin bir satırı; etki alanına (sürece) aittir. D2’nin yetenekleri: Dosya3:R, Dosya4:RWX, Dosya5:RW, Yazıcı1:W.

Dosya1Dosya2Dosya3Dosya4Dosya5Yazıcı1Dosya6Çizici2D1RRWD2RRWXRWWD3WRWXWYetenek listesi = satır (süreçle/çekirdekte saklanır)Süreç (D2)Dosya3 : RDosya4 : RWXDosya5 : RWYazıcı1 : WSüreç nesneye erişirken listedeki yeteneği gösterir; isim çözümleme ve ACL taraması gerekmez

Karşılaştırma: ACL’de “bu nesneye kim erişebilir?” ve geri alma kolaydır; yetenekte devretme ve hızlı denetim kolaydır ama tüm kopyaları geri almak zordur.

Koruma

Erişim Kontrol Listeleri Uygulamada

$ ls -l rapor.txt
-rw-r----- 1 ali muhasebe 4096 rapor.txt
 rw-  sahip   r--  grup   ---  diğer

$ setfacl -m u:ayse:rw rapor.txt
$ getfacl rapor.txt
user::rw-
user:ayse:rw-
group::r--
mask::rw-
other::---
GrupABCD
Grup 1RRWX——
Grup 2W———
Grup 3——XR
Grup 4————
YöneticiRWXRWXRWXRWX
  • Artı: anlaşılır, nesne başına geri alma kolay.
  • Eksi: büyük sistemlerde yönetim zor; her erişimde liste taraması (önbellekle hafifletilir).
  • POSIX ACL, NFSv4 ACL ve NTFS ACL (izin/ret girdileri, kalıtım) birbirine tam eşlenmez.
Etkileşimli deneme: İzinler ve Koruma Laboratuvarı sayfasında rwx bitlerini, setuid’i ve erişim kararlarını kendi örneklerinizle deneyebilirsiniz.

Koruma

Yetenek Listeleri

Süreçkullanıcı kipiyalnız indeks görür:read(cap 2, …)Çekirdekteki C-listesi0Dosya3 R1Dosya4 RWX2Dosya5 RW3Yazıcı1 WŞifreli korumalı yetenekSunucuNesneHaklarf(Nesne, Haklar, Gizli)Kullanıcıda dursa bile sahte üretilemez:f tek yönlü (ör. HMAC); gizli değeriyalnız sunucu bilir (Amoeba).
Yeteneği kopyala

Aynı nesne için yeni yetenek (devretme).

Nesneyi kopyala

Yeni nesne ve ona ait yeni yetenek.

Yeteneği kaldır

Listeden girdi silinir; nesne yerinde kalır.

Nesneyi yok et

Nesne ve yetenek kalıcı olarak silinir.

Yetenekler sahte üretilemez olmalı: ya çekirdekte tutulur (indeksle erişilir), ya etiketli donanımla korunur (CHERI), ya da şifreli imzalanır. Gündelik örnekler: UNIX dosya tanımlayıcıları (açıldıktan sonra yeniden izin denetimi yok), FreeBSD Capsicum, seL4, Fuchsia.

Koruma · Kodu adım adım çalıştır

En Az Ayrıcalık ve setuid

/* /usr/bin/passwd  -rwsr-xr-x root */
int main(void) {
    uid_t me = getuid();
    int fd = open("/etc/shadow", O_RDWR);
    update_own_entry(fd, me);
    close(fd);
    setresuid(me, me, me);
    /* ... kalan iş ... */
    open("/etc/shadow", O_RDWR);
}
passwd süreciruid = 1000 (ali)euid = 1000/etc/shadow-rw-r-----root shadowkabuk: ali, ayrıcalıksız

Ali (uid 1000) passwd çalıştırır. Dosyanın sahibi root ve setuid biti (s) açık.

passwd süreciruid = 1000 (ali)euid = 0/etc/shadow-rw-r-----root shadowexecve: euid ← dosya sahibi

execve sırasında etkin kimlik dosya sahibine döner: euid = 0. Gerçek kimlik (ruid) hâlâ Ali.

passwd süreciruid = 1000 (ali)euid = 0/etc/shadow-rw-r-----root shadowgetuid() → 1000

getuid() gerçek kimliği döndürür: program kimin adına çalıştığını bilir ve yalnız onun satırını değiştirir.

passwd süreciruid = 1000 (ali)euid = 0/etc/shadow-rw-r-----root shadowizin verildi (euid 0)

Çekirdek erişimi etkin kimliğe göre denetler: euid 0, dosya açılır.

passwd süreciruid = 1000 (ali)euid = 1000/etc/shadow-rw-r-----root shadowayrıcalık kalıcı bırakıldı

İş biter bitmez setresuid ile gerçek, etkin ve saklı kimliğin üçü de 1000 yapılır: en az ayrıcalık, geri dönüş yok.

passwd süreciruid = 1000 (ali)euid = 1000/etc/shadow-rw-r-----root shadowEACCES: izin reddedildi

Programın geri kalanında bir hata istismar edilse bile saldırgan artık root değildir. setuid root programlar, ayrıcalık yükseltme saldırılarının klasik hedefidir.

Koruma

Linux Yetenekleri ve Tasarım İlkeleri

root (uid 0)her şeye izinCAP_NET_BIND_SERVICE1024 altı kapıCAP_NET_ADMINağ yapılandırmaCAP_SYS_TIMEsaati ayarlamaCAP_DAC_OVERRIDEdosya izinlerini aşmaCAP_KILLbaşkasına sinyalCAP_SYS_ADMIN“yeni root”: çok geniş≈ 41 yetenek; her iş parçacığının izinli, etkin, kalıtılabilir ve sınırlayıcı kümeleri var
$ sudo setcap cap_net_bind_service=+ep /usr/local/bin/websrv
$ getcap /usr/local/bin/websrv
/usr/local/bin/websrv cap_net_bind_service=ep     # 80. kapıyı açabilir, başka hiçbir root hakkı yok
  • En az ayrıcalık (Saltzer & Schroeder, 1975): her bileşen işini yapmaya yetecek en küçük hak kümesiyle çalışmalı; ele geçirilirse zarar sınırlı kalır.
  • Diğer ilkeler: güvenli varsayılan (açıkça izin verilmeyen yasak), tam aracılık (her erişim denetlenir), açık tasarım, ayrıcalıkların ayrılması, psikolojik kabul edilebilirlik.
  • Uygulama: ayrıcalık ayrımı (OpenSSH: küçük root süreç + ayrıcalıksız çocuk), systemd CapabilityBoundingSet=, NoNewPrivileges=.

Biçimsel Modeller · Adım adım

Bell-LaPadula: Yukarı Okuma Yok, Aşağı Yazma Yok

Çok Gizli (4)nesneGizli (3)nesneSüreçHizmete Özel (2)nesneTasnif Dışı (1)nesneSüreç “Gizli” yetkisiyle çalışıyor

Askerî gizlilik düzeyleri; her süreç ve nesne bir düzeye sahip. Amaç: bilginin aşağı sızmaması (gizlilik).

Çok Gizli (4)nesneGizli (3)nesneSüreçHizmete Özel (2)nesneTasnif Dışı (1)nesneoku ✓

Basit güvenlik özelliği: k düzeyindeki süreç yalnız ≤ k düzeyindeki nesneleri okuyabilir. Aşağı okuma serbest.

Çok Gizli (4)nesneGizli (3)nesneSüreçHizmete Özel (2)nesneTasnif Dışı (1)nesneoku ✗

Yukarı okuma yok (no read up): Gizli yetkili süreç Çok Gizli belgeyi okuyamaz.

Çok Gizli (4)nesneGizli (3)nesneSüreçHizmete Özel (2)nesneTasnif Dışı (1)nesneyaz ✓

* özelliği: k düzeyindeki süreç yalnız ≥ k düzeyine yazabilir. Yukarı yazmak gizliliği bozmaz (genelde “kör” ekleme).

Çok Gizli (4)nesneGizli (3)nesneSüreçHizmete Özel (2)nesneTasnif Dışı (1)nesneyaz ✗

Aşağı yazma yok (no write down): aksi hâlde Gizli bilgi Hizmete Özel bir dosyaya kopyalanarak sızardı.

Çok Gizli (4)nesneGizli (3)nesneSüreçHizmete Özel (2)nesneTasnif Dışı (1)nesneyaz ✗Truva atı Gizli süreç içinde çalışsa bile bilgiyi aşağı yazamaz

Kazanç: kullanıcının çalıştırdığı bir Truva atı bile bilgiyi aşağı aktaramaz, çünkü kural kullanıcının iyi niyetine değil sisteme bağlıdır (zorunlu erişim denetimi, MAC).

Biçimsel Modeller · Adım adım

Biba: Aşağı Okuma Yok, Yukarı Yazma Yok

Yüksek (sistem) (3)nesneOrta (kullanıcı) (2)nesneSüreçDüşük (İnternet) (1)nesneSüreç orta bütünlük düzeyinde

Biba (1977) BLP’nin bütünlük için aynasıdır: düzeyler güvenilirliği gösterir. Amaç: güvenilmeyen verinin yukarı bulaşmaması.

Yüksek (sistem) (3)nesneOrta (kullanıcı) (2)nesneSüreçDüşük (İnternet) (1)nesneyaz ✓

Basit bütünlük özelliği: k düzeyindeki süreç yalnız ≤ k düzeyine yazabilir.

Yüksek (sistem) (3)nesneOrta (kullanıcı) (2)nesneSüreçDüşük (İnternet) (1)nesneyaz ✗

Yukarı yazma yok: kullanıcı süreci sistem dosyalarını değiştiremez.

Yüksek (sistem) (3)nesneOrta (kullanıcı) (2)nesneSüreçDüşük (İnternet) (1)nesneoku ✓

Bütünlük * özelliği: süreç yalnız ≥ k düzeyinden okuyabilir; güvenilir veriyi okumak serbest.

Yüksek (sistem) (3)nesneOrta (kullanıcı) (2)nesneSüreçDüşük (İnternet) (1)nesneoku ✗

Aşağı okuma yok: İnternetten gelen güvenilmeyen veriyi okuyup ona göre davranan süreç “kirlenirdi”.

Yüksek (sistem) (3)nesneOrta (kullanıcı) (2)nesneDüşük (İnternet) (1)nesneSüreçyaz ✗Düşük bütünlüklü tarayıcı süreci kullanıcı dosyalarına yazamaz

Gerçek örnek: Windows zorunlu bütünlük denetimi (MIC). Tarayıcı ve korumalı kip süreçleri Düşük düzeyde çalışır, Orta düzeydeki belgelere yazamaz (yukarı yazma yok).

Biçimsel Modeller

Bell-LaPadula ve Biba Karşılaştırması

Bell-LaPadula (1973)Biba (1977)
KorurGizlilikBütünlük
OkumaAşağı serbest, yukarı yokYukarı serbest, aşağı yok
YazmaYukarı serbest, aşağı yokAşağı serbest, yukarı yok
EngellenenBilginin aşağı sızmasıKirli verinin yukarı bulaşması
BugünSELinux MLS, askerî sistemlerWindows MIC, FreeBSD/Linux bütünlük politikaları
  • İki model birlikte kullanılırsa süreç neredeyse yalnızca kendi düzeyiyle konuşabilir: biri gizliliği, öteki bütünlüğü korur ve çatışırlar.
  • Eski sunum her iki model için de “okuma yok ve yazma yok ilkesi” diyordu; doğrusu BLP için yukarı okuma yok, aşağı yazma yok, Biba için aşağı okuma yok, yukarı yazma yok.
  • Her iki model de gizli kanalları engellemez: kurallar yalnız açık okuma/yazma işlemlerini denetler.

Biçimsel Modeller

Gizli Kanallar ve Steganografi

İstemcihapsedilmişSunucugizli veri işlerİşbirlikçigizli veriaçık kanal ✗gizli kanal ✓Steganografi181…1114…073…1209…190…037…1son bit = gizli mesaj
Depolama kanalı

Paylaşılan bir durumun değişmesi: dosya var/yok, kilitli/açık, disk doluluğu.

Zamanlama kanalı

Olayların zamanlaması: CPU’yu yoğun kullanma = 1, boşta kalma = 0; önbellek gecikmesi.

Kaynak kanalı

Paylaşılan kaynağın kullanımı: sayfa hatası oranı, ağ trafiği hacmi.

Gizli kanal: tasarımcının iletişim için öngörmediği, güvenlik politikasını atlayan bilgi yolu. Lampson’ın hapsetme problemi (1973): hepsini kapatmak pratikte imkânsızdır, ancak bant genişliği düşürülebilir. Steganografi: üç zebralı fotoğrafın piksellerinin son bitlerine bir metin (ör. Shakespeare oyunları) gizlenebilir; görüntü gözle değişmez.

Biçimsel Modeller · Adım adım

Dosya Kilidi ile Gizli Kanal

SunucuDosya Fİşbirlikçit1t2t3t4t5t6t7t8Alınan bitler: —

Sunucu ve işbirlikçi önceden anlaşır: her saat aralığında F dosyası kilitliyse 1, serbestse 0. Ortada ne okuma ne yazma var; F’nin içeriği hiç değişmez.

SunucuDosya Fİşbirlikçit1kilitlekilitli1t2t3t4t5t6t7t8Alınan bitler: 1

Sunucu t1’de F’yi kilitler; işbirlikçi kilitlemeyi dener, başarısız olur → 1.

SunucuDosya Fİşbirlikçit1kilitlekilitli1t2açserbest0t3kilitlekilitli1t4kilitlekilitli1t5t6t7t8Alınan bitler: 1011

Aynı yöntemle ilk dört bit: 1 0 1 1.

SunucuDosya Fİşbirlikçit1kilitlekilitli1t2açserbest0t3kilitlekilitli1t4kilitlekilitli1t5açserbest0t6açserbest0t7kilitlekilitli1t8açserbest0Alınan bitler: 10110010

Sekiz aralıkta bir bayt: 10110010 (0xB2). Saniyede 100 aralıkla ≈ 100 bit/s; bir parola ya da anahtar birkaç saniyede sızar.

SunucuDosya Fİşbirlikçit1kilitlekilitli1t2açserbest0t3kilitlekilitli1t4kilitlekilitli1t5açserbest0t6açserbest0t7kilitlekilitli1t8açserbest0Alınan bitler: 10110010

Önlemler: kilit durumunu başkasına göstermemek, gürültü ve gecikme eklemek, kaynakları düzeylere ayırmak. Bant genişliği azalır ama sıfırlanmaz.

Kimlik Doğrulama

Kimlik Doğrulama Etkenleri

Bildiğin bir şey

Parola, PIN, güvenlik sorusu. Ucuz ama çalınabilir, tahmin edilebilir, yeniden kullanılır.

Sahip olduğun bir şey

Telefon, akıllı kart, FIDO2 anahtarı, TOTP üreteci. Çalınabilir ama uzaktan kopyalanamaz.

Olduğun bir şey

Parmak izi, yüz, iris. Kolay ama değiştirilemez; sızarsa kalıcı olarak yanar.

Bulunduğun yer / davranış

Konum, IP, yazım ritmi, cihaz parmak izi. Genelde ek risk sinyali olarak kullanılır.

Çok etkenli kimlik doğrulama (MFA): farklı kategorilerden en az iki etken. “Parola + güvenlik sorusu” MFA değildir (ikisi de bilgidir). MFA, çalınan parolaya karşı en etkili tek önlemdir.

Soru-yanıt (challenge-response) doğrulamada kullanıcıya önceden kayıtlı sorular sorulur; ama “annenizin kızlık soyadı”, “ilk evcil hayvanınız” gibi yanıtlar sosyal medyadan bulunabildiği için bugün zayıf kabul edilir.

Kimlik Doğrulama · Kodu adım adım çalıştır

Parola Saklama: Tuz ve Yavaş Özet

# Kayıt / parola değiştirme
salt = os.urandom(16)
h = argon2(password, salt)
store(user, salt, h)

# Giriş denemesi
salt, h = lookup(user)
g = argon2(attempt, salt)
if constant_eq(g, h): ok()
ParolaTuz (salt)Yavaş özet Hali7Gx!veli7Gx!cankQ4z

Parolalar asla açık saklanmaz. Üç kullanıcıdan ikisi aynı parolayı seçmiş (insanlar bunu sık yapar).

ParolaTuz (salt)Yavaş özet Hali7Gx!veli7Gx!cankQ4zAynı parola → aynıözet olurdu: saldırgantekrarı görür, öncedenhesaplanmış tabloyla kırar

Düz (tuzsuz) özet yeterli değil: aynı parola aynı özeti verir; saldırgan tekrarları görür ve gökkuşağı tablosu ile hepsini birden kırar.

ParolaTuz (salt)Yavaş özet Hali7Gx!a3f1+veli7Gx!9b2e+cankQ4z5d7c+Her kullanıcıya rastgeletuz: aynı parola bilefarklı girdi olur

Tuz (salt): her kullanıcı için rastgele, gizli olmayan bir değer parolaya eklenir. Aynı parola artık farklı girdi; önceden hesaplama işe yaramaz.

ParolaTuz (salt)Yavaş özet Hali7Gx!a3f1+b91c4e…veli7Gx!9b2e+2f87aa…cankQ4z5d7c+d013f5…Depolanan: tuz + H.Argon2 kasten yavaşve bellek-yoğun: GPU/ASICile kaba kuvvet pahalı

Yavaş, bellek-yoğun özet: Argon2id (ya da scrypt, bcrypt). Tek doğrulama milisaniyeler; milyarlarca denemeyse yıllar sürer. Doğrulamada sabit zamanlı karşılaştırma zamanlama sızıntısını önler.

Asla düz SHA-256/MD5 kullanmayın: bunlar hızlıdır, tam da parola için istenmeyen şey. 1970’lerin UNIX’i 2 karakterlik tuz + yavaşlatılmış DES (crypt) kullanırdı; fikir aynı, parametreler bugün çok daha güçlü. Sızıntı olursa yine de parolalar sıfırlanmalı.

Kimlik Doğrulama

MFA ve Zaman Tabanlı Tek Kullanımlık Parola (TOTP)

Sunucupaylaşılan gizli KUygulamaaynı gizli KTOTP = HMAC(K, zaman / 30sn)KsaatHMAC739 412her 30 sn’de yenilenirKod ağda gizli K’yi taşımaz; yeniden kullanılamaz (yalnız o 30 sn geçerli)
SMS kodu

Yaygın ama zayıf: SIM takası ve SS7 saldırılarıyla ele geçirilebilir. Hiç yoktan iyidir.

TOTP (üreteç uygulaması)

RFC 6238; çevrimdışı çalışır. Oltalamaya açıktır: kullanıcı sahte siteye kodu girebilir.

Anlık bildirim onayı

Kolay; ama “onay yorgunluğu” saldırısına açık. Numara eşleştirme ekler.

Kimlik Doğrulama

FIDO2, WebAuthn ve Geçiş Anahtarları

TarayıcıGüvenlik anahtarıözel anahtar burada kalırSunucurastgele meydan okuma (challenge)origin’e bağlı imzaimzalı yanıt (özel anahtarla)açık anahtarlaimzayı doğrularİmza sitenin origin’ini içerir: sahte siteye verilen yanıt gerçek sitede geçersiz → oltalanamaz
  • FIDO2/WebAuthn ve geçiş anahtarları (passkeys): her site için bir açık/özel anahtar çifti. Özel anahtar cihazdan (TPM, Secure Enclave, güvenlik anahtarı) hiç çıkmaz.
  • Sunucu yalnız açık anahtarı saklar: sızsa bile işe yaramaz. Paylaşılan sır yok, yeniden kullanılacak parola yok.
  • İmza sayfanın origin’ine bağlıdır → oltalamaya dayanıklı. Geçiş anahtarları platformlar arası senkronlanabilir; parolanın yerini almak üzere tasarlandı.

Kimlik Doğrulama

Biyometrik Kimlik Doğrulama

ÖlçütAçıklama
Yanlış kabul (FAR)Yabancıyı kabul etme oranı — güvenlik riski
Yanlış ret (FRR)Gerçek kullanıcıyı reddetme oranı — kullanılabilirlik sorunu
Canlılık testiFotoğraf, maske, parmak kalıbına karşı (liveness)
İptal edilemezlikParmak izi sızarsa değiştirilemez; parola değiştirilebilir
  • Biyometri bir kimlik (identity) için iyidir, sır (secret) için kötüdür: yüzünüz ve parmak iziniz gizli değildir.
  • Doğru kullanım: cihazda yerel olarak, güvenli donanıma erişimi açan etken (Face ID → Secure Enclave). Ham şablon cihazdan çıkmamalı.
  • Tek başına uzaktan kimlik doğrulama için uygun değildir; genelde “sahip olduğun şey” ile birleştirilir.

Eski sunumdaki “parmak uzunluğu ölçen cihaz” tarihsel bir örnektir; bugünkü sistemler parmak izi çizgilerinin ayrıntı noktalarını (minutiae), 3B yüz ve iris deseni kullanır ve donanım destekli canlılık testi şarttır.

Kimlik Doğrulama

Saldırganlar Sisteme Nasıl Girer?

YolAçıklamaÖnlem
Oltalama (phishing)Sahte giriş sayfasıyla parola toplamaFIDO2, kullanıcı eğitimi
Kimlik bilgisi doldurmaSızan parolaları başka sitede denemeBenzersiz parola, MFA
Kaba kuvvet / sözlükZayıf parolayı tahminYavaş özet, hız sınırı, kilitleme
Yama yapılmamış açıkBilinen zafiyeti kullanmaHızlı yama yönetimi
Sosyal mühendislikYardım masasını kandırmaSüreç ve doğrulama
Varsayılan/zayıf kimlikadmin/admin, açık portSağlamlaştırma (hardening)
Saldırı genelde zincirdir: oltalama ile ilk erişim → yerel bir açıkla ayrıcalık yükseltme → yanal hareket → kalıcılık (arka kapı). Savunma da katmanlı olmalı; tek bir halkanın kopması sistemi ele geçirmemeli.

Yazılım Açıkları · Kodu adım adım çalıştır

Yığın Tampon Taşması: Çerçeve Adım Adım

/* küçük, kasıtlı olarak hatalı örnek */
void A(char *in) {
    char buffer[8];
    strcpy(buffer, in);   // sınır denetimi YOK
    return;
}
A(argv[1]);               // in: kullanıcı girdisi
YÜKSEK adresDÜŞÜK adres (yığın aşağı büyür)argv[1] işaretçisidönüş adresidöner ✓çerçeve işaretçisibuffer[4..7]buffer[0..3]yazma yönü

Her fonksiyon çağrısı yığında bir çerçeve açar: yerel değişkenler, kayıtlı çerçeve işaretçisi ve dönüş adresi (fonksiyon bitince CPU’nun gideceği yer).

YÜKSEK adresDÜŞÜK adres (yığın aşağı büyür)argv[1] işaretçisidönüş adresidoğru ✓çerçeve işaretçisibuffer[4..7]buffer[0..3]yazma yönü

Girdi tampona sığdığı sürece sorun yok: strcpy sonlandırıcı \0 dahil en çok sekiz baytı buffer’a yazar.

YÜKSEK adresDÜŞÜK adres (yığın aşağı büyür)argv[1] işaretçisidönüş adresiBOZULDU ✗çerçeve işaretçisibuffer[4..7]buffer[0..3]yazma yönü

Taşma: strcpy uzunluğu denetlemediği için fazla baytlar komşu hücrelere, en tehlikelisi dönüş adresinin üzerine taşar.

YÜKSEK adresDÜŞÜK adres (yığın aşağı büyür)argv[1] işaretçisidönüş adresisaldırgan ✗çerçeve işaretçisibuffer[4..7]buffer[0..3]yazma yönü

Fonksiyon return ettiğinde CPU bozulmuş adrese atlar. Saldırgan bunu seçebilirse yürütme akışını ele geçirir. Bu yüzden asla güvenilmeyen girdi sınır denetimi olmadan kopyalanmaz.

Yazılım Açıkları

Tampon Taşmasına Karşı Savunmalar

Yığın kanaryası

Dönüş adresinden önce rastgele bir değer; dönüşten önce bozulduysa program durdurulur (SSP).

DEP / NX

Veri sayfaları yürütülemez işaretlenir; yığına enjekte edilen kod çalışamaz.

ASLR

Yığın, öbek ve kütüphaneler rastgele adreslere; saldırgan hedef adresi bilemez. PIE ile birlikte.

CFI

Denetim akışı bütünlüğü: dolaylı atlamalar yalnız geçerli hedeflere izin verir.

Gölge yığın / CET

Donanım destekli: dönüş adresinin ikinci, korumalı bir kopyası tutulur (Intel CET, ARM PAC/BTI).

Bellek-güvenli dil

Rust, Go, Java, C#: sınır ve ömür denetimi derleyici/çalışma zamanında. En köklü çözüm.

ROP ve return-to-libc: NX kodu enjekte etmeyi engelleyince saldırganlar var olan kod parçalarını (libc’deki system() ya da küçük “gadget” dizileri) dönüş adreslerini zincirleyerek çalıştırır. CFI, gölge yığın ve ASLR bu saldırıları zorlaştırmak için birlikte kullanılır — tek bir savunma yeterli değildir.

Yazılım Açıkları

Diğer Bellek ve Enjeksiyon Hataları

AçıkNeden tehlikeliÖnlem
Biçim dizgisiprintf(user) — %n/%x ile belleği okur/yazarprintf("%s", user)
Tamsayı taşmasılen = a + b sarması küçük ayırmaya yol açarDenetimli aritmetik, boyut tipleri
Serbest sonrası kullanımSerbest bırakılan belleğe erişim (UAF)Sahiplik (Rust), smart pointer, karantina
Çifte serbest bırakmaAynı blok iki kez free; öbek bozulurfree sonrası NULL; güçlendirilmiş ayırıcı
Sınır dışı okumaHeartbleed gibi bellek sızıntısıSınır denetimi, fuzzing
Komut/SQL enjeksiyonuGirdi koda/sorguya karışırParametreli sorgu, kaçış, allowlist

Ortak kök neden: veri ile kodun/denetimin karışması ve güvenilmeyen girdinin denetimsiz kullanımı. Savunma: girdiyi doğrula, veriyi koddan ayır, bellek-güvenli diller ve fuzzing ile hataları erken yakala.

Yazılım Açıkları · Kodu adım adım çalıştır

TOCTOU Yarış Koşulu

/* TOCTOU: setuid root yardımcı */
if (access(path, W_OK) == 0) {   // KONTROL
    fd = open(path, O_WRONLY);     // KULLANIM
    write(fd, data, n);
}
Kurban (root)Saldırganaccess("/tmp/f") → izin var

Program önce access() ile “ali bu dosyaya yazabilir mi?” diye kontrol eder: /tmp/f sıradan, izinli bir dosya. Sonuç olumlu.

Kurban (root)Saldırganaccess("/tmp/f") → izin var(CPU bırakıldı)ln -sf /etc/passwd /tmp/fpencere

Kontrol ile kullanım arasında küçük bir zaman penceresi var. Program tam burada CPU’yu bırakırsa...

Kurban (root)Saldırganaccess("/tmp/f") → izin var(CPU bırakıldı)ln -sf /etc/passwd /tmp/fopen("/tmp/f")→ artık /etc/passwd!pencere

Saldırgan /tmp/f’yi silip yerine /etc/passwd’e sembolik bağ koyar. Dosya adı aynı, hedef değişti.

Kurban (root)Saldırganaccess("/tmp/f") → izin var(CPU bırakıldı)ln -sf /etc/passwd /tmp/fopen("/tmp/f")→ artık /etc/passwd!write(): passwd bozuldupencere

open() artık adı değil yeni hedefi açar: root yetkisiyle /etc/passwd. Kontrol zamanı ≠ kullanım zamanı (TOCTOU).

Kurban (root)Saldırganaccess("/tmp/f") → izin var(CPU bırakıldı)ln -sf /etc/passwd /tmp/fopen("/tmp/f")→ artık /etc/passwd!write(): passwd bozuldupencere

Çözüm: adı iki kez çözme. Bir kez aç (open + O_NOFOLLOW), sonra aynı tanımlayıcı üzerinde fstat/faccessat ile denetle; ya da openat ve ayrıcalık düşürme kullan.

İçeriden Saldırılar

İçeriden Saldırılar: Mantık Bombası, Arka Kapı

(a) Normal kodif (user_ok(name, pw)) grant_access();else deny();(b) Arka kapılı kodif (user_ok(name, pw) || eq(name, "zzz")) grant_access();else deny();“zzz” her zaman girer
Mantık bombası

Belirli koşulda (tarih, işten çıkarma) tetiklenen zararlı kod. Çoğu kez hoşnutsuz çalışan koyar.

Arka kapı (back door)

Kimlik doğrulamayı atlayan gizli giriş. Tedarik zincirine de sokulabilir.

Giriş sahtekârlığı

Sahte oturum açma ekranı kullanıcı adı/parolayı toplar, sonra gerçek ekrana devreder.

Giriş sahtekârlığına (login spoofing) karşı güvenli dikkat dizisi (secure attention key): Windows’ta Ctrl+Alt+Del yalnız gerçek çekirdek giriş ekranını çağırır; hiçbir kullanıcı programı onu taklit edemez. Arka kapılara karşı: kod incelemesi, en az iki kişi onayı, yeniden üretilebilir derleme (reproducible builds).

Kötü Amaçlı Yazılım

Kötü Amaçlı Yazılım Türleri

TürYayılmaAmaç / Davranış
VirüsBaşka programa kendini ekler; kullanıcı çalıştırınca bulaşırDosyaları bozar, yayılır
Solucan (worm)Ağ üzerinden kendi kendine; kullanıcı gerekmezHızlı yayılır, kaynak tüketir
Truva atıYararlı görünen programın içindeArka kapı açar, veri çalar
Fidye yazılımıOltalama, açık, RDPDosyaları şifreler, fidye ister
RootkitAyrıcalık kazandıktan sonra kurulurVarlığını ve diğer zararlıları gizler
Casus yazılımTruva atı, paket yazılım, sahte eklentiVeri toplar, uzağa gönderir
Bot / botnetSolucan + arka kapıUzaktan komutla DDoS, spam, kazım

Sınırlar bulanıktır: modern zararlı genelde birkaç türü birleştirir (ör. solucan gibi yayılan, rootkit ile gizlenen, fidye yazılımı taşıyan bir bot). Casus yazılım tarayıcı ana sayfasını/arama motorunu değiştirebilir, araç çubuğu ekleyebilir ve durdurulamayan reklam akışı üretebilir.

Kötü Amaçlı Yazılım · Adım adım

Parazitik Virüsler

(a) temiz programProgramGiriş noktası virüse yönlendirilir; virüs çalışır, sonra asıl programa atlar

Temiz çalıştırılabilir dosya: baştan sona asıl program kodu.

(b) başta yerleşikVirüsProgramGiriş noktası virüse yönlendirilir; virüs çalışır, sonra asıl programa atlar

Başta yerleşik virüs: virüs kodu başa eklenir, giriş noktası virüse çevrilir.

(c) sonda yerleşikProgramVirüsGiriş noktası virüse yönlendirilir; virüs çalışır, sonra asıl programa atlar

Sonda yerleşik virüs: virüs sona eklenir, başa ona atlayan bir komut konur (en yaygın).

(d) boşluklara yayılmışPrgVPrgVPrgVPrgGiriş noktası virüse yönlendirilir; virüs çalışır, sonra asıl programa atlar

Boşluklara yayılmış (cavity) virüs: programdaki kullanılmayan boşluklara dağılır; dosya boyutu değişmez, tespiti zorlaşır.

Diğer türler: eşlik eden virüs (aynı adlı .exe’den önce çalışan bir .com dosyası), bellekte yerleşik, önyükleme sektörü, aygıt sürücüsü, makro (belge içi) ve kaynak kodu virüsleri. Çoğu bugün tarihseldir; modern zararlı betik, bellek-içi (fileless) ve tedarik zinciri yollarını kullanır.

Kötü Amaçlı Yazılım · Adım adım

Fidye Yazılımı

Oltalama eki / açıkÇalışır, yayılırYedekleri silerDosyaları şifrelerFidye notu

İlk erişim genelde oltalama eki, açık bir hizmet ya da çalınan RDP kimliğiyle olur.

Oltalama eki / açıkÇalışır, yayılırYedekleri silerDosyaları şifrelerFidye notu

Zararlı çalışır ve ağda yanal hareket ederek olabildiğince çok makineye ulaşır.

Oltalama eki / açıkÇalışır, yayılırYedekleri silerDosyaları şifrelerFidye notu

Kurtarmayı engellemek için gölge kopyaları ve yedekleri siler (bu yüzden çevrimdışı/değiştirilemez yedek şart).

Oltalama eki / açıkÇalışır, yayılırYedekleri silerDosyaları şifrelerFidye notuDosyalar AES ile şifreli

Dosyalar güçlü simetrik şifreyle kilitlenir; anahtar saldırganın sunucusuna gönderilir.

Oltalama eki / açıkÇalışır, yayılırYedekleri silerDosyaları şifrelerFidye notuDosyalar AES ile şifreliÖdeme = anahtar garantisi değil; yedek + yama tek güvenilir savunma

Fidye notu görüntülenir. Ödeme anahtarı garanti etmez ve yeni saldırıları teşvik eder. Savunma: 3-2-1 yedek, yama, MFA, segmentasyon, EDR.

Kötü Amaçlı Yazılım

Rootkit ve Gizlenme

Uygulamals, ps çıktısını değiştirirKütüphanelibc fonksiyonlarını saptırırÇekirdeksistem çağrı tablosunu değiştirirHipervizörişletim sistemini sanal makineye alırBellenim (firmware)UEFI/çevre birimi; yeniden kurulumla silinmezdaha derin = daha gizli, kaldırması daha zor

Rootkit varlığını gizler: dosyaları, süreçleri, ağ bağlantılarını işletim sisteminden saklar. Ne kadar derin yerleşirse o kadar güçlü ama kurması da zordur. Çekirdek ve altı için savunma: imzalı sürücüler, güvenli önyükleme, ölçülü önyükleme (TPM) ve dışarıdan (çevrimdışı) tarama.

Kötü Amaçlı Yazılım · Adım adım

Antivirüs ve Kaçırma Teknikleri

(a) temizProgramİmza: bilinen bayt dizisi aranır

Temiz program referans alınır.

(b) virüslüVirüsProgramİmza virüsü yakalar

İmza tarama: bilinen virüslerin bayt dizileri (imza) aranır. Hızlı ama yalnız bilineni yakalar.

(c) sıkıştırılmışVSıkıştırılmış programSıkıştırma imzayı gizler; tarayıcı açıp bakmalı

Virüs kendini sıkıştırırsa imza görünmez; tarayıcı dosyayı açıp içini taramak zorundadır.

(d) şifreli virüsÇözücüŞifreli virüsProgramGövde şifreli: yalnız çözücü sabit kalır, onun imzası aranır

Şifreli virüs: gövde şifreli, yalnız küçük çözücü açıkta; tarayıcı çözücünün imzasını arar.

(e) çok şekilliDeğişen çözücüŞifreli virüsProgramÇok şekilli (polymorphic): çözücü her kopyada farklı → imza işe yaramaz, davranış analizi gerekir

Çok şekilli virüs: çözücü de her kopyada değişir. İmza yetmez → sezgisel/davranışsal analiz, kum havuzunda çalıştırıp gözlemleme gerekir.

İmza tarama

Bilinen desenler; hızlı, düşük yanlış alarm, yeniyi kaçırır.

Bütünlük denetimi

Dosya özetlerini saklar, değişimi fark eder.

Davranışsal / sezgisel

Şüpheli eylemleri (şifreleme, enjeksiyon) izler.

Kum havuzu + bulut

Şüpheliyi yalıtılmış ortamda çalıştırıp gözler.

Savunma ve Yalıtım · Adım adım

Kod İmzalama

Yayıncıİşletim sistemi

Yayıncı programın özetini hesaplar (dijital imzanın aynısı, bu kez koda uygulanır).

Yayıncıİşletim sistemiProgramözet

Özet yayıncının özel anahtarıyla imzalanır; imza programla birlikte dağıtılır.

Yayıncıİşletim sistemiProgramözetözel anahtarlaimzalaimza

Kullanıcı programı ve imzayı alır; yayıncının sertifikası açık anahtarını taşır.

Yayıncıİşletim sistemiProgramözetözel anahtarlaimzalaimzaProgramimza

İşletim sistemi özeti yeniden hesaplar ve imzayı açık anahtarla doğrular; eşleşirse program değiştirilmemiş ve o yayıncıdandır.

Yayıncıİşletim sistemiProgramözetözel anahtarlaimzalaimzaProgramimzaaçık anahtarladoğrulagüvenilir ✓

App Store’lar, sürücü imzalama, apt/dnf paket imzaları ve platform “yalnız imzalı kod” ilkeleri bu temele dayanır.

Savunma ve Yalıtım

Kum Havuzu ve Hapsetme

Hapis (jail)Mahkûm programGardiyanHer sistem çağrısıgardiyan tarafındandenetlenir, izinsizlerengellenirModern kum havuzu• seccomp-bpf: izinli sistem çağrıları• namespaces: ayrı PID/ağ/dosya görünümü• cgroups: CPU/bellek sınırı• yetenekler düşürülür• SELinux/AppArmor profili

Kum havuzu (sandboxing): güvenilmeyen kodu kısıtlı bir ortamda çalıştırıp verebileceği zararı sınırlar. Tarayıcı sekmeleri, mobil uygulamalar ve sunucu servisleri bugün kum havuzunda koşar. Linux’ta temel taşlar: seccomp, ad alanları (namespaces), cgroups ve zorunlu erişim denetimi.

Savunma ve Yalıtım

Konteynerler ve Yalıtım

DonanımTek paylaşılan çekirdek (namespaces + cgroups + seccomp)Konteyner 1UygulamaKütüphanelerKonteyner 2UygulamaKütüphanelerKonteyner 3UygulamaKütüphanelerKonteyner 4UygulamaKütüphaneler
KonteynerSanal makine
YalıtımÇekirdek özellikleriDonanım + hipervizör
Ek yükDüşük, saniyede başlarYüksek, ayrı çekirdek
Saldırı yüzeyiÇekirdek açığı = kaçış riskiDaha güçlü sınır

Savunma ve Yalıtım

Zorunlu Erişim Denetimi: SELinux ve AppArmor

DAC (isteğe bağlı)

Sahibin verdiği izinler (rwx, ACL). Kullanıcı kendi dosyasının iznini değiştirebilir; zararlı da değiştirebilir.

MAC (zorunlu)

Politikayı sistem/yönetici belirler; süreç kendi kısıtını gevşetemez. BLP/Biba, SELinux, AppArmor.

SELinux

Her özne ve nesneye etiket; tip zorlaması (type enforcement) ile ayrıntılı kurallar. Güçlü ama karmaşık.

AppArmor

Yol tabanlı profiller; uygulama başına izin listesi. Yazması ve anlaması daha kolay.

Zorunlu erişim denetimi (MAC), ele geçirilen bir süreci bile profilinin izin verdiği işlemlerle sınırlar: web sunucusu açığı kullanılsa bile saldırgan yalnız o profilin tanımladığı dosyalara erişebilir. Android bütünüyle SELinux zorunlu kipte çalışır.

Donanım ve Özet

Güvenli Önyükleme ve TPM

Donanım kök güvenideğişmezUEFI bellenimimza ✓Önyükleyiciimza ✓Çekirdekimza ✓İşletim sistemiimza ✓Her aşama bir sonrakinin imzasını doğrulamadan çalıştırmaz (güven zinciri)İmzasız/değiştirilmişçalıştırılmazTPMölçümleri saklar, mühür

Güvenli önyükleme: her katman bir sonrakinin imzasını doğrular; donanımdaki kök güvenine dayanır. TPM (Güvenilir Platform Modülü) önyükleme bileşenlerinin özetlerini (PCR) saklar; ölçülü önyükleme ile disk şifreleme anahtarı yalnız sistem beklenen durumdaysa açılır (uzaktan kanıtlama, attestation). Rootkit ve önyükleme kiti (bootkit) bu zinciri kırmayı dener.

Donanım ve Özet

Spectre, Meltdown ve Yan Kanallar

Saldırgan süreciKurban / çekirdekgizli veriPaylaşılan önbellekCPU donanımıspekülatif erişimZamanlama ölçümübit bit sızdırırMimari sonuç geri alınır ama önbellek izi kalır → gizli veri çıkarılır

Yan kanal (side channel): veriyi doğrudan değil, dolaylı fiziksel etkiden (zaman, güç, önbellek, ses) sızdırır. Meltdown ve Spectre (2018) CPU’ların spekülatif yürütmesini kötüye kullanır: iptal edilen işlemin önbellekte bıraktığı iz zamanlama ile okunur ve yalıtım aşılır. Önlemler: çekirdek sayfa tablosu yalıtımı (KPTI), mikrokod, derleyici bariyerleri — çoğu performans bedeliyle gelir.

Özet

Özet

KonuAna fikirBugün
HedeflerGizlilik, bütünlük, erişilebilirlikSıfır güven, +özgünlük/hesap verebilirlik
KriptografiSimetrik + asimetrik + özet + imzaAES-GCM, X25519, Ed25519, TLS 1.3, ML-KEM
Erişim denetimiMatris → ACL veya yetenekEn az ayrıcalık, Linux yetenekleri, MAC
Biçimsel modellerBLP gizlilik, Biba bütünlükSELinux MLS, Windows MIC
Kimlik doğrulamaTuzlu yavaş özet + MFAArgon2, FIDO2/geçiş anahtarı
Bellek güvenliğiTaşma dönüş adresini bozarKanarya+NX+ASLR+CFI, Rust
YalıtımKum havuzu zararı sınırlarseccomp, namespaces, konteyner
DonanımGüven zinciri ve ölçümGüvenli önyükleme, TPM; yan kanallar

Özet

Kontrol Soruları

  1. CIA üçlüsünün üç bileşenini, her birine birer ihlal örneğiyle açıklayın.
  2. Aynı erişim matrisinin ACL ve yetenek gösterimlerini karşılaştırın: geri alma ve devretme hangisinde kolaydır, neden?
  3. Bell-LaPadula ve Biba kurallarını (okuma/yazma yönleri) yazın. Hangisi gizliliği, hangisi bütünlüğü korur?
  4. Parolalar neden düz SHA-256 ile değil, tuzlu Argon2/bcrypt ile saklanmalı? Tuz ve yavaşlığın ayrı ayrı rolleri nedir?
  5. FIDO2/geçiş anahtarları parola + TOTP’ye göre oltalamaya neden dayanıklıdır?
  6. Yığın tampon taşmasında dönüş adresi nasıl ele geçirilir? ASLR, NX ve yığın kanaryası bunu hangi aşamada zorlaştırır?
  7. TOCTOU yarış koşulunu access()/open() örneğiyle anlatın ve bir çözüm verin.
  8. Gizli depolama kanalı ile zamanlama kanalını örnekle ayırın. Neden tümüyle kapatılamazlar?
  9. Güvenli önyükleme güven zincirini ve TPM’in rolünü açıklayın. Rootkit’i nerede durdurur?
  10. Konteyner ile sanal makine yalıtımı arasındaki temel fark nedir? Hangisinde çekirdek açığı daha tehlikelidir?
Cevaplar
  1. Gizlilik: yetkisiz okuma (veri sızıntısı); bütünlük: yetkisiz değişiklik (kayıt tahrifatı); erişilebilirlik: hizmetin engellenmesi (DoS, fidye).
  2. ACL sütundur, nesneyle durur: “kim erişebilir?” ve geri alma kolay. Yetenek satırdır, özneyle durur: devretme ve hızlı denetim kolay ama tüm kopyaları geri almak zor.
  3. BLP: yukarı okuma yok, aşağı yazma yok → gizlilik. Biba: aşağı okuma yok, yukarı yazma yok → bütünlük.
  4. Düz SHA-256 hızlıdır; saldırgan saniyede milyarlarca dener. Tuz, önceden hesaplama ve aynı özet tekrarını önler; yavaşlık (ve bellek-yoğunluk) her denemeyi pahalılaştırır.
  5. İmza sitenin origin’ine bağlıdır ve özel anahtar cihazdan çıkmaz; sahte siteye verilen yanıt gerçek sitede geçersizdir, paylaşılan sır yoktur.
  6. Taşan girdi dönüş adresinin üzerine yazar; fonksiyon dönünce CPU oraya atlar. Kanarya dönüşte bozulmayı yakalar; NX enjekte kodu çalıştırmaz; ASLR hedef adresi gizler.
  7. access() ile kontrol, open() ile kullanım arasında saldırgan dosyayı sembolik bağla değiştirir. Çözüm: bir kez açıp aynı tanımlayıcı üzerinde denetlemek (O_NOFOLLOW, fstat, openat).
  8. Depolama: dosya kilidi var/yok. Zamanlama: CPU’yu meşgul etme süresi. Paylaşılan her kaynak kanal olabildiği için tümünü kapatmak imkânsız; yalnız bant genişliği düşürülür.
  9. Her katman sonrakinin imzasını doğrular; TPM önyükleme ölçümlerini saklar ve anahtarları bunlara mühürler. İmzasız/değişmiş bir önyükleyici ya da çekirdek (bootkit) çalıştırılmaz.
  10. Konteyner çekirdeği paylaşır (hafif, zayıf sınır); VM ayrı çekirdek ve hipervizör kullanır (ağır, güçlü sınır). Çekirdek açığı konteynerde kaçışa yol açabilir, VM’de genelde açmaz.

Özet

Kaynaklar

  • A. S. Tanenbaum, H. Bos, Modern Operating Systems, 4. baskı (2014) / 5. baskı (2022), Pearson — Bölüm 9: Security.
  • A. Silberschatz, P. B. Galvin, G. Gagne, Operating System Concepts, 10. baskı, Wiley, 2018 — Bölüm 16: Security; Bölüm 17: Protection.
  • R. H. Arpaci-Dusseau, A. C. Arpaci-Dusseau, Operating Systems: Three Easy Pieces (OSTEP), ostep.org — güvenlik bölümleri.
  • R. Anderson, Security Engineering, 3. baskı, Wiley, 2020.
  • J. H. Saltzer, M. D. Schroeder, “The Protection of Information in Computer Systems”, 1975 (en az ayrıcalık ve tasarım ilkeleri).
  • D. E. Bell, L. J. LaPadula (1973); K. J. Biba (1977) — biçimsel güvenlik modelleri. B. W. Lampson, “A Note on the Confinement Problem”, 1973.
  • RFC 8446 (TLS 1.3), RFC 6238 (TOTP), RFC 9106 (Argon2); FIDO2/WebAuthn (W3C); NIST FIPS 203 (ML-KEM).
  • Aleph One, “Smashing the Stack for Fun and Profit”, Phrack 49, 1996; Kocher vd., “Spectre”; Lipp vd., “Meltdown”, 2018.

Son

Bölüm 13: Güvenlik
Sonraki bölüm: Çoklu Ortam Sistemleri
1 / 1 Sercan KÜLCÜ, Tüm hakları saklıdır.