Mövzunu Açan
#0
🧠 Konunun Tanımı
Buffer Overflow (tampon taşması), bellekteki bir tampon (buffer) alanına, belirlenen boyuttan daha fazla veri yazıldığında oluşan bir güvenlik açığıdır. Bu tür taşmalar, bellekteki komşu alanların üzerine yazılarak çalıştırılabilir kötü amaçlı kod enjeksiyonuna yol açabilir.
Bu, binary exploitation (makine kod düzeyinde sömürü) alanında en bilinen saldırı tekniklerinden biridir.
⚙️ Teknik Anlatım: Nasıl Çalışır?
📌 Basit C kodu ile örnek:
C
12345678910111213#include <stdio.h>
#include <string.h>
void vulnerable_function() {
char buffer[64];
gets(buffer); // GÜVENLİ DEĞİL!
printf("Girdiniz: %s\n", buffer);
}
int main() {
vulnerable_function();
return 0;
}
Bu kodda kullanıcıdan alınan veri,
buffer adındaki 64 baytlık alana yazılır. Ancak gets() fonksiyonu girilen verinin boyutunu kontrol etmez. 64 bayttan fazla veri girilirse, stack (yığın) üzerindeki diğer veriler –örneğin geri dönüş adresi (return address)– üzerine yazılabilir.🔓 Sömürü (Exploit) Aşamaları
| Aşama | Açıklama |
|---|---|
| 1️⃣ | Kullanıcı girdisiyle buffer sınırı aşılır. |
| 2️⃣ | Return Address üzerine zararlı kod adresi yazılır. |
| 3️⃣ | Fonksiyon sonlandığında ret komutu ile bu kod çalıştırılır. |
| 4️⃣ | Shell açılabilir, sistem ele geçirilebilir. |
🔍 Neyi Ele Geçiriyoruz?
Buffer overflow ile genellikle hedeflenenler:- Program kontrol akışı (örn:
EIP,RIP)
- Shell açmak (
shellcodeenjekte edilir)
- Yetkileri yükseltmek (root erişimi)
- Gizli veriye ulaşmak (parola, token vs.)
🧱 Modern Koruma Yöntemleri
| Koruma Mekanizması | Açıklama |
|---|---|
| Canary (Stack Canary) | Stack’te özel bir kontrol değeri tutulur. Eğer taşarsa, program kapanır. |
| DEP/NX (No eXecute) | Stack veya heap gibi alanlarda kod çalıştırılması engellenir. |
| ASLR (Address Space Layout Randomization) | Bellek adresleri rastgeleleştirilir, adres tahmini zorlaşır. |
| RELRO | Read-only relocation segmenti koruma altına alınır. |
| Fortify Source | Derleme sırasında strcpy, gets gibi işlevler yerine güvenli sürümler kullanılır. |
💣 Gerçek Hayattan Örnekler
| Yıl | Açık / Saldırı | Açıklama |
|---|---|---|
| 2001 | Code Red Worm | Microsoft IIS’teki buffer overflow ile binlerce sistem ele geçirildi. |
| 2003 | SQL Slammer | SQL Server’daki overflow açığı ile internet trafiği %25 yavaşladı. |
| 2021 | Sudo Baron Samedit | Linux’ta sudo komutunda overflow açığı ile root erişimi sağlandı. |
🧪 Exploit Geliştirme Ortamları
| Ortam / Platform | Kullanım |
|---|---|
| pwntools | Python ile otomatik exploit geliştirme |
| GDB | GNU Debugger, stack üzerinde değişiklikleri analiz etme |
| Radare2 | Reverse engineering, disassembly |
| ROPgadget | Return Oriented Programming zinciri oluşturma |
| Pwnable.kr / OverTheWire | Uygulamalı binary exploit eğitim platformları |
