Bölüm 13: Güvenlik

İşletim Sistemleri · Çalışma Soruları
Temel KavramlarErişim DenetimiBiçimsel ModellerKimlik DoğrulamaYazılım AçıklarıKötü Amaçlı Yazılım ve Yalıtım
Sercan KÜLCÜ · Giresun Üniversitesi

Giriş

Nasıl Çalışalım?

1 · Önce çözünHer slaytta bir soru var. Cevabı açmadan önce kâğıda kendi cevabınızı ve gerekçenizi yazın.
2 · Sonra açın“Cevabı göster” kutusu doğru seçeneği ve kısa bir açıklamayı verir. Yanlış seçeneklerin neden yanlış olduğunu da düşünün.
3 · Adım adım izleyinHesap ve kod sorularından sonra gelen “Adım Adım Çözüm” slaytında ‹ › düğmeleriyle çözümü ilerletin.

Kurallar (aksi belirtilmedikçe): izinler UNIX/Linux kurallarıyla yorumlanır; “root” etkin kullanıcı kimliği (euid) 0 olan süreçtir. Saldırı soruları yalnızca kavram ve savunma düzeyindedir.

Soru 1 · Temel Kavramlar

Hangi Hedef Çiğnendi?

Çoktan seçmeli

Bir hastanenin dosya sunucusundaki hasta kayıtları zararlı bir yazılım tarafından şifrelendi. Kayıtlar dışarı sızdırılmadı ve içerikleri değiştirilmedi, ama doktorlar dosyalara saatlerce ulaşamadı. CIA üçlüsünün hangi bileşeni doğrudan ihlal edilmiştir?

  1. Gizlilik (confidentiality)
  2. Bütünlük (integrity)
  3. Erişilebilirlik (availability)
  4. İnkâr edilemezlik (non-repudiation)
Cevabı göster

Doğru cevap: C) Erişilebilirlik (availability)

Veri okunmadı (gizlilik korundu) ve değiştirilmedi; ama meşru kullanıcılar ona ulaşamadı. Hizmetin ya da verinin kullanılamaz hâle gelmesi erişilebilirlik ihlalidir; DoS saldırıları da bu sınıftadır.

Soru 2 · Temel Kavramlar

Tehdit, Zafiyet, Saldırı

Açık uçlu

Tehdit, zafiyet, saldırı ve istismar kavramlarını ayırt edin. Hepsini tek bir senaryo (ör. yama yapılmamış bir web sunucusu) üzerinde gösterin.

Cevabı göster
  • Tehdit: olası zarar; ör. müşteri verilerinin çalınabilmesi.
  • Zafiyet: bunu mümkün kılan zayıflık; ör. sunucudaki sınır denetimi eksik, yamalanmamış bir fonksiyon.
  • Saldırı: zafiyeti kullanma girişimi; ör. saldırganın o fonksiyona özel hazırlanmış istek göndermesi.
  • İstismar (exploit): saldırıyı gerçekleştiren kod ya da yöntem.

Yama zafiyeti kapatır; tehdit (verinin değerli olması) ortadan kalkmaz.

Soru 3 · Temel Kavramlar

Kimlik mi, Yetki mi?

Çoktan seçmeli

Ayşe parolasını ve telefonuna gelen kodu girerek sisteme giriyor. Sistem ardından onun maaş tablosunu yalnızca okuyabileceğine, değiştiremeyeceğine karar veriyor. Bu ikinci adımın adı nedir?

  1. Kimlik doğrulama (authentication): kullanıcının iddia ettiği kişi olduğunu kanıtlaması
  2. Yetkilendirme (authorization): kimliği doğrulanmış öznenin hangi kaynağa hangi işlemle erişebileceğine karar verilmesi
  3. Şifreleme: verinin anahtarsız okunamaz biçime getirilmesi
  4. Denetim kaydı (auditing): yapılan erişimlerin sonradan incelenmek üzere günlüğe yazılması
Cevabı göster

Doğru cevap: B) Yetkilendirme (authorization): kimliği doğrulanmış öznenin hangi kaynağa hangi işlemle erişebileceğine karar verilmesi

İlk adım (parola + kod) “sen kimsin?” sorusunu yanıtlar: kimlik doğrulama. İkinci adım “ne yapabilirsin?” sorusudur: yetkilendirme. Erişim denetimi bu kararı her erişimde uygulayan mekanizma ve politikaların bütünüdür.

Soru 4 · Temel Kavramlar

Büyük TCB Daha mı Güvenli?

Doğru / Yanlış

Aşağıdaki ifade doğru mu, yanlış mı? Gerekçenizi yazın.

“Güvenilir bilgi işleme tabanı (TCB) ne kadar çok bileşen içerirse sistem o kadar güvenilir olur.”

Cevabı göster

Yanlış. TCB, güvenliğin dayandığı ve hatasız olması gereken parçadır (çekirdek, referans izleyici, önyükleme zinciri). Büyüdükçe hata olasılığı artar ve doğrulanması zorlaşır. Bu yüzden referans izleyicinin küçük, atlanamaz ve kurcalanamaz olması istenir; mikroçekirdek ve biçimsel doğrulanmış çekirdekler bu fikre dayanır.

Soru 5 · Erişim Denetimi

En Az Ayrıcalık Uygulamada

Çoktan seçmeli

Bir web sunucusu programının yalnızca 80. kapıyı (1024’ün altındaki bir portu) dinleyebilmesi gerekiyor. En az ayrıcalık ilkesine en uygun çözüm hangisidir?

  1. Programı her zaman root olarak çalıştırmak
  2. Programı setuid root yapmak ve hiç ayrıcalık bırakmamak
  3. Programa yalnızca CAP_NET_BIND_SERVICE yeteneğini vermek ve sıradan bir kullanıcı olarak çalıştırmak
  4. Program dosyasının iznini 777 yapmak
  5. Güvenlik duvarını kapatıp portu herkese açmak
Cevabı göster

Doğru cevap: C) Programa yalnızca CAP_NET_BIND_SERVICE yeteneğini vermek ve sıradan bir kullanıcı olarak çalıştırmak

En az ayrıcalık: bileşen işini yapmaya yetecek en küçük hak kümesiyle çalışır. Linux yetenekleri root’un gücünü parçalara böler; bu süreç ele geçirilse bile saldırgan dosya izinlerini aşamaz, modül yükleyemez. Root olarak ya da setuid root çalışmak tüm hakları verir.

Soru 6 · Erişim Denetimi

Sekizli İzinden Sembolik İzne

Hesaplama

(a) chmod 754 yedekle.sh komutundan sonra ls -l izin sütununu nasıl gösterir? Grup üyesi ve “diğerleri” bu betikle ne yapabilir?

(b) rw-r-x--x izninin sekizli karşılığı nedir?

Cevabı göster
  • (a) 7 = 111 = rwx, 5 = 101 = r-x, 4 = 100 = r-- → -rwxr-xr--. Grup okuyup çalıştırabilir; diğerleri yalnızca okuyabilir (betiği kopyalayıp kendi adına çalıştırabileceğini de unutmayın).
  • (b) rw- = 110 = 6, r-x = 101 = 5, --x = 001 = 1 → 651.

Soru 6 · Çözüm

Adım Adım Çözüm

Her sekizli rakam üç bittir: r = 4, w = 2, x = 1. Bit 1 ise harf, 0 ise “-” yazılır.

r1w1x1r1-0x1r1-0-0sahip (u)grup (g)diğer (o)

(a) Sahip rakamı 7 = 4 + 2 + 1 = 111 → rwx.

r1w1x1r1-0x1r1-0-0sahip (u)grup (g)diğer (o)

Grup rakamı 5 = 4 + 1 = 101 → r-x: okur ve çalıştırır, yazamaz.

r1w1x1r1-0x1r1-0-0sahip (u)grup (g)diğer (o)

Diğer rakamı 4 = 100 → r--. Sonuç: -rwxr-xr-- (baştaki “-” sıradan dosya demektir).

r1w1-0r1-0x1-0-0x1sahip (u)grup (g)diğer (o)

(b) Tersi: rw- = 110 = 6, r-x = 101 = 5, --x = 001 = 1 → 651.

Soru 7 · Erişim Denetimi

Dizinde x Biti

Çoktan seçmeli

/home/ali dizininin izni drwx--x--x, içindeki plan.txt dosyasının izni -rw-r--r--. Ali dışındaki sıradan bir kullanıcı için hangisi doğrudur?

  1. ls /home/ali ile dizini listeleyebilir ve cat /home/ali/plan.txt ile dosyayı okuyabilir.
  2. Dizini listeleyemez, ama dosyanın adını biliyorsa cat /home/ali/plan.txt ile okuyabilir.
  3. Dizinde x biti olduğu için dizine yeni dosya da oluşturabilir.
  4. Dosyada r biti olsa bile dizine hiçbir biçimde erişemez.
  5. Dosyayı okuyamaz ama silebilir.
Cevabı göster

Doğru cevap: B) Dizini listeleyemez, ama dosyanın adını biliyorsa cat /home/ali/plan.txt ile okuyabilir.

Dizinde r girdileri listelemeyi, w girdi eklemeyi/silmeyi, x içine girip ad aramayı sağlar. Diğerlerinde yalnız x var: ad bilinirse yol çözülür, dosyanın kendi r biti okumaya izin verir; ama ls başarısız olur, oluşturma ve silme için dizinde w gerekirdi.

Soru 8 · Erişim Denetimi

Matristen ACL ve Yeteneğe

Açık uçlu

Koruma matrisi aşağıda. (a) rapor nesnesinin ACL’sini, (b) D2 etki alanının yetenek listesini (C-list) yazın. (c) “rapor’a D3’ün erişimini anında kaldırmak” hangi gösterimde daha kolaydır?

raporderle.shyazıcı
D1RWRX—
D2R—W
D3RXW
Cevabı göster
  • (a) ACL = matrisin sütunu, nesnenin yanında: rapor → {D1: RW, D2: R, D3: R}.
  • (b) C-list = matrisin satırı, özneye ait: D2 → {rapor: R, yazıcı: W}.
  • (c) ACL: rapor’un listesinden D3 girdisi silinir, iş biter. Yetenek gösteriminde D3’ün (ve kopyaladığı herkesin) yeteneklerini bulup geri almak gerekir.

Soru 9 · Erişim Denetimi

ACL ve Yetenek Karşılaştırması

Çoktan seçmeli

Erişim kontrol listesi (ACL) ile yetenek listesi (capability) için hangisi yanlıştır?

  1. ACL’de “bu nesneye kimler erişebilir?” sorusu kolay yanıtlanır.
  2. Yetenek, sahibine nesneye erişim hakkı veren ve sahte üretilememesi gereken bir belirteçtir.
  3. UNIX dosya tanımlayıcısı yetenek gibi davranır: dosya açıldıktan sonra her read’de izin yeniden denetlenmez.
  4. Yetenekte hakkı başka bir sürece devretmek kolaydır.
  5. Yetenek gösteriminde bir nesneye verilmiş tüm hakları geri almak, ACL’ye göre her zaman daha kolaydır.
Cevabı göster

Doğru cevap: E) Yetenek gösteriminde bir nesneye verilmiş tüm hakları geri almak, ACL’ye göre her zaman daha kolaydır.

Yetenekler öznelere dağılmıştır; kopyaları her yerde olabilir. Hepsini bulup geri almak zordur (dolaylı nesne, süre sınırı gibi ek düzenekler gerekir). ACL’de ise nesnenin listesini düzenlemek yeterlidir.

Soru 10 · Erişim Denetimi

setuid Programda Kimlikler

Kod izleme

/usr/local/bin/arsiv dosyasının sahibi root ve izni -rwsr-xr-x. Kullanıcı kimliği 1001 olan Veli programı çalıştırıyor. Program aşağıdakini yapıyor. Çıktı nedir? Son satırdaki setresuid(0, 0, 0) başarılı olur mu?

printf("%d %d\n", getuid(), geteuid());
int fd = open("/var/arsiv/log", O_WRONLY);
setresuid(getuid(), getuid(), getuid());
printf("%d %d\n", getuid(), geteuid());
int r = setresuid(0, 0, 0);
Cevabı göster
1001 0
1001 1001

setuid biti (s) execve sırasında etkin kimliği dosya sahibine (0) çevirir; gerçek kimlik Veli’dir. setresuid gerçek, etkin ve saklı kimliğin üçünü 1001 yapar. Son çağrı başarısız olur (−1, EPERM): saklı kimlik de bırakıldığı için geri dönüş yoktur. Önceden açılmış fd ise kullanılabilir kalır.

Soru 10 · Çözüm

Adım Adım Çözüm

Veli (uid 1001) setuid root programı çalıştırıyor. r: gerçek, e: etkin, s: saklı kullanıcı kimliği.

execve sırasında s biti etkin ve saklı kimliği dosya sahibine (root = 0) çevirir. Gerçek kimlik Veli olarak kalır.

getuid gerçek kimliği (1001), geteuid etkin kimliği (0) döndürür.

Çekirdek izni etkin kimliğe göre denetler: euid 0 olduğu için dosya yazmak üzere açılır.

Ayrıcalık kalıcı olarak bırakılır: üç kimlik de 1001. En az ayrıcalık: kalan kodda bir hata istismar edilse bile saldırgan root değildir.

İkinci satır: 1001 1001.

Sıradan kullanıcı kimliğini 0 yapamaz: EPERM, r = −1. Açık fd 3 ise hâlâ geçerlidir (yetenek gibi davranır).

/* -rwsr-xr-x root arsiv */
printf("%d %d\n", getuid(), geteuid());
int fd = open("/var/arsiv/log", O_WRONLY);
setresuid(getuid(), getuid(), getuid());
printf("%d %d\n", getuid(), geteuid());
int r = setresuid(0, 0, 0);

Soru 11 · Biçimsel Modeller

Bell-LaPadula Kuralı

Çoktan seçmeli

Düzeyler: Çok Gizli > Gizli > Hizmete Özel > Tasnif Dışı. Bell-LaPadula modelinde Gizli düzeyde çalışan bir süreç için hangi işleme izin verilir?

  1. Çok Gizli bir raporu okumak
  2. Hizmete Özel bir dosyaya yazmak
  3. Tasnif Dışı bir duyuruyu okumak
  4. Tasnif Dışı bir dosyaya özet yazmak
  5. Kendi düzeyini Çok Gizli’ye yükseltip okumak
Cevabı göster

Doğru cevap: C) Tasnif Dışı bir duyuruyu okumak

BLP gizliliği korur: yukarı okuma yok (basit güvenlik özelliği) ve aşağı yazma yok (* özelliği). Aşağı okumak serbesttir; aşağı yazmak bilginin daha düşük düzeye sızması demek olduğu için yasaktır.

Soru 12 · Biçimsel Modeller

Biba Kuralı

Çoktan seçmeli

Biba modelinde düzeyler güvenilirliği gösterir: Yüksek > Orta > Düşük. Orta düzeydeki bir süreç için hangisine izin verilir?

  1. Yüksek düzeydeki bir sistem dosyasını değiştirmek
  2. Düşük düzeyde, İnternet’ten indirilmiş bir dosyayı okumak
  3. Yüksek düzeydeki bir yapılandırmayı okumak
  4. Düşük düzeydeki bir dosyayı okuyup Yüksek düzeye kopyalamak
Cevabı göster

Doğru cevap: C) Yüksek düzeydeki bir yapılandırmayı okumak

Biba bütünlüğü korur ve BLP’nin aynasıdır: aşağı okuma yok (kirli veriyle “kirlenme”), yukarı yazma yok (güvenilir veriyi bozma). Yukarı okumak ve aşağı yazmak serbesttir.

Soru 13 · Biçimsel Modeller

İki Modeli Tabloda Sınayın

Açık uçlu

Süreç “Orta” düzeyde. Aşağıdaki dört işlem için BLP (gizlilik düzeyi olarak) ve Biba (bütünlük düzeyi olarak) “izin” mi “ret” mi verir? İki model birlikte uygulanırsa süreç neye erişebilir?

(1) Yüksek’i okumak (2) Yüksek’e yazmak (3) Düşük’ü okumak (4) Düşük’e yazmak

Cevabı göster
İşlemBLPBiba
(1) yukarı okumaretizin
(2) yukarı yazmaizinret
(3) aşağı okumaizinret
(4) aşağı yazmaretizin

Her satırda modellerden biri reddediyor: ikisi birlikte uygulanırsa süreç yalnızca kendi düzeyindeki nesneleri okuyup yazabilir. Gizlilik ve bütünlük hedefleri bu yüzden çatışır.

Soru 14 · Biçimsel Modeller

Kurallar Gizli Kanalı Kapatır mı?

Doğru / Yanlış

Aşağıdaki ifade doğru mu, yanlış mı? Gerekçenizi yazın.

“Bell-LaPadula kurallarına eksiksiz uyan bir sistemde yüksek düzeydeki bir süreç alt düzeydeki bir sürece hiçbir yolla bilgi aktaramaz.”

Cevabı göster

Yanlış. Kurallar yalnızca açık okuma ve yazma işlemlerini denetler. Süreçler bir dosyanın kilitli olup olmaması, CPU’yu meşgul etme süresi, disk doluluğu gibi paylaşılan durumlarla gizli kanal kurabilir. Lampson’ın hapsetme problemi: bu kanalların hepsini kapatmak pratikte imkânsızdır, yalnızca bant genişliği düşürülebilir.

Soru 15 · Biçimsel Modeller

Gizli Kanalın Hızı

Hesaplama

İki süreç bir dosya kilidiyle gizli kanal kuruyor: her 20 ms’lik aralıkta dosya kilitliyse 1, serbestse 0 iletiliyor. (a) Kanalın bant genişliği kaç bit/s’dir? (b) 256 bitlik bir şifreleme anahtarı kaç saniyede sızar? (c) Sistem araya gürültü ekleyip her biti 4 kez tekrar ettirmeye zorlarsa süre ne olur?

Cevabı göster
  • (a) 1000 / 20 = 50 bit/s.
  • (b) 256 / 50 = 5,12 s.
  • (c) Etkin hız 12,5 bit/s olur: 256 / 12,5 = 20,48 s. Önlem kanalı yavaşlatır ama kapatmaz.

Soru 15 · Çözüm

Adım Adım Çözüm

Her aralık bir bit taşır; bant genişliği = 1 / aralık süresi.

aralık = 20 ms = 0,02 shız = 1 / 0,02 s = 50 bit/ssüre = 256 bit / 50 bit/s = 5,12 sgürültülü: 256 / (50 / 4) = 20,48 s

(a) Saniyede 1000 / 20 = 50 aralık vardır; her aralık 1 bit.

aralık = 20 ms = 0,02 shız = 1 / 0,02 s = 50 bit/ssüre = 256 bit / 50 bit/s = 5,12 sgürültülü: 256 / (50 / 4) = 20,48 s

(b) 256 bitlik anahtar yaklaşık 5 saniyede sızar: düşük hızlı bir kanal bile anahtar için yeterlidir.

aralık = 20 ms = 0,02 shız = 1 / 0,02 s = 50 bit/ssüre = 256 bit / 50 bit/s = 5,12 sgürültülü: 256 / (50 / 4) = 20,48 s

(c) Tekrar etkin hızı 12,5 bit/s’ye düşürür; süre dört katına (20,48 s) çıkar ama sızıntı sürer.

Soru 16 · Kimlik Doğrulama

Hangisi Gerçek MFA?

Çoktan seçmeli

Aşağıdaki birleşimlerden hangisi çok etkenli kimlik doğrulama (MFA) sayılır?

  1. Parola + güvenlik sorusu (“ilk okulunuzun adı”)
  2. Parola + dört haneli PIN
  3. Parola + telefondaki uygulamanın ürettiği zaman tabanlı kod (TOTP)
  4. İki farklı parola
  5. Kullanıcı adı + parola
Cevabı göster

Doğru cevap: C) Parola + telefondaki uygulamanın ürettiği zaman tabanlı kod (TOTP)

MFA farklı kategorilerden en az iki etken ister: bildiğin (parola), sahip olduğun (telefon, güvenlik anahtarı), olduğun (biyometri). Parola, PIN ve güvenlik sorusunun hepsi “bildiğin şey”dir; kullanıcı adı ise gizli bile değildir.

Soru 17 · Kimlik Doğrulama

Tuz ve Yavaşlık

Açık uçlu

Parolalar neden düz SHA-256 özetiyle değil, tuzlu ve yavaş bir özetle (Argon2id, scrypt, bcrypt) saklanmalıdır? Tuzun ve yavaşlığın rollerini ayrı ayrı açıklayın. Tuz gizli tutulmak zorunda mıdır?

Cevabı göster
  • Tuz: her kullanıcıya özgü rastgele değer. Aynı parolayı seçen iki kullanıcının özetleri farklı olur; önceden hesaplanmış (gökkuşağı) tablolar işe yaramaz ve saldırgan her kullanıcıyı ayrı ayrı kırmak zorunda kalır.
  • Yavaşlık (ve bellek yoğunluğu): tek doğrulama milisaniyeler sürer, ama milyarlarca tahmin yıllar alır. SHA-256 hızlıdır; parola için istenmeyen tam da budur.
  • Tuz gizli değildir, özetin yanında saklanır; işlevi gizlilik değil benzersizliktir.

Soru 18 · Kimlik Doğrulama

Kaba Kuvvet Süresi

Hesaplama

Parolalar 8 küçük harften (26 harfli alfabe) oluşuyor. Saldırgan sızan özet dosyasında tek bir kullanıcının özetini kırmaya çalışıyor. (a) Kaç olası parola vardır? (b) Özet düz SHA-256 ise ve saldırgan saniyede 1010 deneme yapıyorsa en kötü durumda süre nedir? (c) Özet Argon2id ise ve saniyede yalnızca 104 deneme yapılabiliyorsa?

Cevabı göster
  • (a) 268 = 208.827.064.576 ≈ 2,09 × 1011.
  • (b) 2,09 × 1011 / 1010 ≈ 20,9 s: yarım dakika bile sürmez.
  • (c) 2,09 × 1011 / 104 ≈ 2,09 × 107 s ≈ 242 gün.

Tuz olmasaydı tek bir hesaplama tüm kullanıcılara birden uygulanabilirdi; tuz bu işi kullanıcı sayısı kadar çoğaltır.

Soru 18 · Çözüm

Adım Adım Çözüm

Arama uzayı = alfabeuzunluk; süre = uzay / deneme hızı (en kötü durum).

uzay = 26^8 = 208.827.064.576hızlı: 2,088e11 / 1e10 = 20,9 syavaş: 2,088e11 / 1e4 = 20.882.706 s20.882.706 s / 86.400 ≈ 242 gün

(a) Her konum 26 seçenek, 8 konum bağımsız: 268.

uzay = 26^8 = 208.827.064.576hızlı: 2,088e11 / 1e10 = 20,9 syavaş: 2,088e11 / 1e4 = 20.882.706 s20.882.706 s / 86.400 ≈ 242 gün

(b) GPU ile saniyede 1010 SHA-256 hesaplanabilir: tüm uzay ≈ 21 saniyede taranır.

uzay = 26^8 = 208.827.064.576hızlı: 2,088e11 / 1e10 = 20,9 syavaş: 2,088e11 / 1e4 = 20.882.706 s20.882.706 s / 86.400 ≈ 242 gün

(c) Yavaş özet her denemeyi 106 kat pahalılaştırır: ≈ 242 gün. Uzun parola (uzay üstel büyür) ile birlikte kullanılmalıdır.

Soru 19 · Kimlik Doğrulama

FIDO2 Neden Oltalamaya Dayanıklı?

Çoktan seçmeli

Sahte bir giriş sayfası kullanıcıdan parola ve TOTP kodunu kolayca alabilir. FIDO2/WebAuthn geçiş anahtarlarının bu saldırıya dayanıklı olmasının temel nedeni nedir?

  1. Geçiş anahtarları parolalardan daha uzundur.
  2. İmza, tarayıcının bildirdiği sitenin kökenine (origin) bağlıdır ve özel anahtar cihazdan hiç çıkmaz; sahte siteye verilen yanıt gerçek sitede geçersizdir.
  3. Sunucu özel anahtarı şifreli olarak saklar.
  4. Kod her 30 saniyede bir değişir.
  5. Kullanıcının parmak izi sunucuya gönderilir.
Cevabı göster

Doğru cevap: B) İmza, tarayıcının bildirdiği sitenin kökenine (origin) bağlıdır ve özel anahtar cihazdan hiç çıkmaz; sahte siteye verilen yanıt gerçek sitede geçersizdir.

Sunucu yalnızca açık anahtarı saklar; paylaşılan sır yoktur. Kimlik doğrulama, kökene bağlı bir sınamanın cihazdaki özel anahtarla imzalanmasıdır. TOTP de “30 saniyede değişen” bir koddur ama kullanıcı onu sahte siteye yazabilir.

Soru 20 · Kimlik Doğrulama

Biyometri Parolanın Yerine mi?

Doğru / Yanlış

Aşağıdaki ifade doğru mu, yanlış mı? Gerekçenizi yazın.

“Parmak izi gizli tutulması gereken bir sır olduğu için uzaktan kimlik doğrulamada tek başına parolanın yerine kullanılabilir.”

Cevabı göster

Yanlış. Biyometri bir kimlik özelliğidir, sır değildir: parmak izi bardakta, yüz fotoğrafta kalır; sızarsa değiştirilemez. Doğru kullanım cihazda yereldir: biyometri güvenli donanımdaki anahtarın kilidini açar (sahip olduğun şeyle birleşir). Ayrıca yanlış kabul (FAR) ile yanlış ret (FRR) arasında bir denge ayarlanmalıdır.

Soru 21 · Yazılım Açıkları

Tampon Kaç Bayt Taşar?

Hesaplama

Aşağıdaki fonksiyon kopyala("Ankara-Giresun") ile çağrılıyor. strcpy kaç bayt yazar, bunların kaçı ad dizisinin dışına taşar? Taşma neden tehlikelidir ve satır nasıl düzeltilmelidir?

void kopyala(const char *in) {
    char ad[10];
    strcpy(ad, in);   /* sınır denetimi yok */
}
Cevabı göster

Girdi 14 karakter; sonlandırıcı \0 ile 15 bayt yazılır. Dizi 10 bayt olduğundan 5 bayt taşar. Taşan baytlar yığın çerçevesinde dizinin üstündeki alanlara, en kötü durumda dönüş adresine yazılır; fonksiyon dönerken CPU bozulmuş adrese atlayabilir.

Düzeltme: boyutu bilen fonksiyon, ör. snprintf(ad, sizeof ad, "%s", in); (gerekirse uzun girdiyi reddedin). Derleyici kanaryası ve NX bu hatayı düzeltmez, yalnızca istismarını zorlaştırır.

Soru 21 · Çözüm

Adım Adım Çözüm

strcpy kaynağın sonundaki \0’a kadar kopyalar; hedefin boyutunu bilmez.

ad[10]

Yığın çerçevesinde 10 baytlık ad açılır; üstünde kayıtlı çerçeve işaretçisi ve dönüş adresi bulunur.

Ankara-Girad[10]

İlk 10 karakter “Ankara-Gir” diziye sığar. Kopyalama durmaz, çünkü henüz \0 gelmedi.

Ankara-Girad[10]e s u n \0 → 5 baytkomşu alan / dönüş adresi

Kalan “esun” ve \0 (5 bayt) dizinin dışına yazılır: 14 + 1 = 15 bayt yazıldı, 15 − 10 = 5 bayt taştı.

Soru 22 · Yazılım Açıkları

Savunmaların Eşleşmesi

Çoktan seçmeli

Tampon taşmasına karşı savunmalarla etkileri eşleştirilmiş. Hangi eşleştirme yanlıştır?

  1. Yığın kanaryası → dönüşten önce bozulmuş çerçeveyi fark edip programı durdurur.
  2. NX / DEP → veri sayfalarındaki (yığın, öbek) enjekte edilmiş kodun yürütülmesini engeller.
  3. ASLR → yığın, öbek ve kütüphaneleri rastgele adreslere koyarak hedef adresin tahminini zorlaştırır.
  4. Gölge yığın → dönüş adresinin donanımca korunan bir kopyasını tutar.
  5. NX → var olan kod parçalarını zincirleyen (ROP) saldırıları tek başına tamamen önler.
Cevabı göster

Doğru cevap: E) NX → var olan kod parçalarını zincirleyen (ROP) saldırıları tek başına tamamen önler.

NX yalnızca yeni kodun veri sayfasında çalışmasını engeller. ROP ve return-to-libc, zaten yürütülebilir olan kod parçalarını kullanır; bu yüzden ASLR, CFI ve gölge yığın birlikte kullanılır. Kökten çözüm bellek-güvenli dillerdir.

Soru 23 · Yazılım Açıkları

Kontrol ile Kullanım Arasında

Kod izleme

setuid root bir yardımcı program aşağıdaki kodu çalıştırıyor. Kod hangi açığı içeriyor, saldırgan tam olarak hangi anda ne yapar ve nasıl düzeltilir?

if (access("/tmp/rapor", W_OK) == 0) {
    int fd = open("/tmp/rapor", O_WRONLY);
    write(fd, veri, n);
}
Cevabı göster
  • TOCTOU (time of check to time of use) yarış koşulu: access gerçek kullanıcıya göre denetler, open ise root yetkisiyle adı yeniden çözer.
  • İki çağrı arasındaki pencerede saldırgan /tmp/rapor’u silip yerine korunan bir dosyaya (ör. /etc/passwd) sembolik bağ koyar; root programı o dosyaya yazar.
  • Düzeltme: adı bir kez çözün. Ayrıcalığı düşürüp open(..., O_WRONLY | O_NOFOLLOW) ile açın, gerekirse aynı tanımlayıcı üzerinde fstat ile denetleyin; openat ile güvenli dizinden çalışın.

Soru 24 · Yazılım Açıkları

Biçim Dizgisi Hatası

Çoktan seçmeli

Bir günlük fonksiyonu kullanıcıdan gelen metni printf(mesaj); ile yazıyor. Doğru düzeltme ve gerekçesi hangisidir?

  1. printf("%s", mesaj);: kullanıcı metni biçim dizgisi olarak yorumlanmaz; %x, %n gibi belirteçler işlenmez.
  2. printf(mesaj, mesaj);: ikinci argüman eksik belirteçleri doldurur.
  3. puts(mesaj); printf(mesaj);: önce güvenli yazdırılır.
  4. Hata yoktur; printf belirteçleri yalnızca derleme zamanında işler.
Cevabı göster

Doğru cevap: A) printf("%s", mesaj);: kullanıcı metni biçim dizgisi olarak yorumlanmaz; %x, %n gibi belirteçler işlenmez.

Biçim dizgisi açığında saldırganın metnindeki belirteçler yığından değer okutur (%x) ya da belleğe yazdırır (%n). Ortak kök neden veri ile denetimin karışmasıdır: veri her zaman sabit bir biçim dizgisine argüman olarak verilmelidir.

Soru 25 · Kötü Amaçlı Yazılım ve Yalıtım

Kendi Kendine Yayılan

Çoktan seçmeli

Kullanıcının hiçbir dosyayı açmasına gerek kalmadan, ağdaki yamalanmamış bir hizmeti kullanarak makineden makineye kendini kopyalayan zararlı yazılım türü hangisidir?

  1. Virüs
  2. Solucan (worm)
  3. Truva atı
  4. Rootkit
  5. Mantık bombası
Cevabı göster

Doğru cevap: B) Solucan (worm)

Virüs başka bir programa eklenir ve o program çalıştırılınca yayılır; Truva atı yararlı görünen bir programın içinde gelir; rootkit varlığını gizler; mantık bombası belirli bir koşulda tetiklenir. Ağ üzerinden kendi kendine yayılan solucandır.

Soru 26 · Kötü Amaçlı Yazılım ve Yalıtım

İmzalı Kod Zararsız mı?

Doğru / Yanlış

Aşağıdaki ifade doğru mu, yanlış mı? Gerekçenizi yazın.

“Kod imzalama, imzası doğrulanan bir programın zararlı kod içermediğini garanti eder.”

Cevabı göster

Yanlış. İmza iki şeyi kanıtlar: program yayıncıdan çıktıktan sonra değiştirilmemiştir ve imzalayan o özel anahtarın sahibidir. Yayıncının kendisi zararlı kod imzalayabilir ya da anahtarı çalınabilir (tedarik zinciri saldırıları). İmza bütünlük ve köken sağlar, iyi niyeti değil.

Soru 27 · Kötü Amaçlı Yazılım ve Yalıtım

Süreç Yalıtımı ve Kum Havuzu

Açık uçlu

İS bir sürecin başka bir sürecin belleğine ve dosyalarına erişmesini hangi mekanizmalarla engeller? Kum havuzu (sandbox) bu temel yalıtıma ne ekler? Linux’tan iki araç örneği verin.

Cevabı göster
  • Temel yalıtım: her sürecin ayrı adres uzayı (MMU, sayfa tabloları), kullanıcı/çekirdek kipi ayrımı (donanıma yalnızca sistem çağrısıyla erişim) ve kimliğe dayalı erişim denetimi (uid, izin bitleri).
  • Kum havuzu: aynı kullanıcı adına çalışan güvenilmeyen kodu bile kısıtlar: hangi sistem çağrılarını yapabileceği, hangi dosyaları görebileceği, ne kadar kaynak kullanabileceği.
  • Linux: seccomp-BPF (sistem çağrısı filtresi), ad alanları (görünüm), cgroups (kaynak sınırı), SELinux/AppArmor/Landlock (zorunlu erişim denetimi).

Soru 28 · Kötü Amaçlı Yazılım ve Yalıtım

DAC mı, MAC mı?

Çoktan seçmeli

Bir web sunucusu ele geçirildi. Saldırgan sunucunun kullanıcı hesabıyla chmod yaparak kendine ait bir dosyanın izinlerini rahatça değiştirebiliyor; ama sistem politikası yüzünden /home altındaki dosyalara, izin bitleri izin verse bile erişemiyor. Bu iki davranış sırasıyla hangi modellerden kaynaklanır?

  1. MAC, DAC
  2. DAC, MAC
  3. İkisi de DAC
  4. İkisi de MAC
  5. RBAC, ACL
Cevabı göster

Doğru cevap: B) DAC, MAC

DAC (isteğe bağlı): izni nesnenin sahibi belirler; rwx bitleri ve ACL’ler. MAC (zorunlu): politikayı yönetici/sistem belirler, süreç kendi kısıtını gevşetemez (SELinux, AppArmor). MAC, ele geçirilen süreci profilinin izin verdiğiyle sınırlar.

Özet

Özet: Sık Yapılan Hatalar

  • Kimlik doğrulama ile yetkilendirmeyi karıştırmak: ilki “kimsin?”, ikincisi “ne yapabilirsin?” sorusudur.
  • Sekizli izinde rakamı yanlış bölüştürmek: r = 4, w = 2, x = 1; ilk rakam sahip, sonra grup, sonra diğerleri.
  • Dizinde x’i “çalıştırma” sanmak: dizinde x içine girme ve ad arama iznidir; listeleme için r, silme için dizinde w gerekir.
  • BLP ile Biba’nın yönlerini karıştırmak: BLP yukarı okumayı ve aşağı yazmayı, Biba aşağı okumayı ve yukarı yazmayı yasaklar.
  • Tuzu gizli anahtar sanmak ya da parolayı hızlı bir özetle (SHA-256, MD5) saklamak.
  • “Parola + güvenlik sorusu”nu MFA saymak: ikisi de bildiğin şeydir.
  • NX’in tüm bellek saldırılarını önlediğini düşünmek; ROP var olan kodu kullanır. Tek savunma yetmez.

Son

Bölüm 13: Güvenlik
Sonraki: Bölüm 14 Çalışma Soruları
1 / 1