Bölüm 13: Güvenlik
Giriş
Nasıl Çalışalım?
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?
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?
- Gizlilik (confidentiality)
- Bütünlük (integrity)
- Erişilebilirlik (availability)
- İ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ı
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?
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?
- Kimlik doğrulama (authentication): kullanıcının iddia ettiği kişi olduğunu kanıtlaması
- Yetkilendirme (authorization): kimliği doğrulanmış öznenin hangi kaynağa hangi işlemle erişebileceğine karar verilmesi
- Şifreleme: verinin anahtarsız okunamaz biçime getirilmesi
- 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?
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
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?
- Programı her zaman root olarak çalıştırmak
- Programı setuid root yapmak ve hiç ayrıcalık bırakmamak
- Programa yalnızca
CAP_NET_BIND_SERVICEyeteneğini vermek ve sıradan bir kullanıcı olarak çalıştırmak - Program dosyasının iznini 777 yapmak
- 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
(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.
(a) Sahip rakamı 7 = 4 + 2 + 1 = 111 → rwx.
Grup rakamı 5 = 4 + 1 = 101 → r-x: okur ve çalıştırır, yazamaz.
Diğer rakamı 4 = 100 → r--. Sonuç: -rwxr-xr-- (baştaki “-” sıradan dosya demektir).
(b) Tersi: rw- = 110 = 6, r-x = 101 = 5, --x = 001 = 1 → 651.
Soru 7 · Erişim Denetimi
Dizinde x Biti
/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?
ls /home/aliile dizini listeleyebilir vecat /home/ali/plan.txtile dosyayı okuyabilir.- Dizini listeleyemez, ama dosyanın adını biliyorsa
cat /home/ali/plan.txtile okuyabilir. - Dizinde x biti olduğu için dizine yeni dosya da oluşturabilir.
- Dosyada r biti olsa bile dizine hiçbir biçimde erişemez.
- 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
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?
| rapor | derle.sh | yazıcı | |
|---|---|---|---|
| D1 | RW | RX | — |
| D2 | R | — | W |
| D3 | R | X | W |
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ı
Erişim kontrol listesi (ACL) ile yetenek listesi (capability) için hangisi yanlıştır?
- ACL’de “bu nesneye kimler erişebilir?” sorusu kolay yanıtlanır.
- Yetenek, sahibine nesneye erişim hakkı veren ve sahte üretilememesi gereken bir belirteçtir.
- UNIX dosya tanımlayıcısı yetenek gibi davranır: dosya açıldıktan sonra her
read’de izin yeniden denetlenmez. - Yetenekte hakkı başka bir sürece devretmek kolaydır.
- 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
/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ı
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?
- Çok Gizli bir raporu okumak
- Hizmete Özel bir dosyaya yazmak
- Tasnif Dışı bir duyuruyu okumak
- Tasnif Dışı bir dosyaya özet yazmak
- 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ı
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?
- Yüksek düzeydeki bir sistem dosyasını değiştirmek
- Düşük düzeyde, İnternet’ten indirilmiş bir dosyayı okumak
- Yüksek düzeydeki bir yapılandırmayı okumak
- 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
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
| İşlem | BLP | Biba |
|---|---|---|
| (1) yukarı okuma | ret | izin |
| (2) yukarı yazma | izin | ret |
| (3) aşağı okuma | izin | ret |
| (4) aşağı yazma | ret | izin |
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ı?
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ı
İ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.
(a) Saniyede 1000 / 20 = 50 aralık vardır; her aralık 1 bit.
(b) 256 bitlik anahtar yaklaşık 5 saniyede sızar: düşük hızlı bir kanal bile anahtar için yeterlidir.
(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?
Aşağıdaki birleşimlerden hangisi çok etkenli kimlik doğrulama (MFA) sayılır?
- Parola + güvenlik sorusu (“ilk okulunuzun adı”)
- Parola + dört haneli PIN
- Parola + telefondaki uygulamanın ürettiği zaman tabanlı kod (TOTP)
- İki farklı parola
- 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
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
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).
(a) Her konum 26 seçenek, 8 konum bağımsız: 268.
(b) GPU ile saniyede 1010 SHA-256 hesaplanabilir: tüm uzay ≈ 21 saniyede taranır.
(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ı?
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?
- Geçiş anahtarları parolalardan daha uzundur.
- İ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 özel anahtarı şifreli olarak saklar.
- Kod her 30 saniyede bir değişir.
- 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?
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?
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.
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.
İlk 10 karakter “Ankara-Gir” diziye sığar. Kopyalama durmaz, çünkü henüz \0 gelmedi.
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
Tampon taşmasına karşı savunmalarla etkileri eşleştirilmiş. Hangi eşleştirme yanlıştır?
- Yığın kanaryası → dönüşten önce bozulmuş çerçeveyi fark edip programı durdurur.
- NX / DEP → veri sayfalarındaki (yığın, öbek) enjekte edilmiş kodun yürütülmesini engeller.
- ASLR → yığın, öbek ve kütüphaneleri rastgele adreslere koyarak hedef adresin tahminini zorlaştırır.
- Gölge yığın → dönüş adresinin donanımca korunan bir kopyasını tutar.
- 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
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:
accessgerçek kullanıcıya göre denetler,openise 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ı üzerindefstatile denetleyin;openatile güvenli dizinden çalışın.
Soru 24 · Yazılım Açıkları
Biçim Dizgisi Hatası
Bir günlük fonksiyonu kullanıcıdan gelen metni printf(mesaj); ile yazıyor. Doğru düzeltme ve gerekçesi hangisidir?
printf("%s", mesaj);: kullanıcı metni biçim dizgisi olarak yorumlanmaz;%x,%ngibi belirteçler işlenmez.printf(mesaj, mesaj);: ikinci argüman eksik belirteçleri doldurur.puts(mesaj); printf(mesaj);: önce güvenli yazdırılır.- Hata yoktur;
printfbelirteç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
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?
- Virüs
- Solucan (worm)
- Truva atı
- Rootkit
- 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ı?
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
İ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ı?
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?
- MAC, DAC
- DAC, MAC
- İkisi de DAC
- İkisi de MAC
- 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.