Heap İstismarı: Use-After-Free ve Heap Spraying
glibc malloc iç işleyişini, use-after-free koşullarını ve heap spray tekniklerini anlayın.
Heap İstismarı: Use-After-Free ve Heap Spraying, CoddyKit'te ücretsiz bir Cyber Security Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Cyber Security Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Cyber Security Academy kursu toplamda 4 dersten oluşur.
Öbek
Öbek, çalışma zamanında malloc()/free()/new/delete aracılığıyla ayrılan dinamik bellektir. Yığının aksine, öbek düzeni çağrı yığını tarafından değil, ayırma ve serbest bırakma örüntüleri tarafından belirlenir. Öbek güvenlik açıkları tarayıcılarda, ayrıştırıcılarda ve ağ artalan hizmetlerinde yaygındır.
Bellek Serbest Bırakıldıktan Sonra Kullanım (UAF)
Bellek Serbest Bırakıldıktan Sonra Kullanım güvenlik açığı, bir program bellekteki bir bölgeyi serbest bıraktıktan sonra kullanmaya devam ettiğinde ortaya çıkar. Serbest bırakılan bölge saldırganın denetimindeki verilerle yeniden ayrılırsa program, artık geçersiz olan işaretçiyi kullanarak saldırganın verileri üzerinde çalışır.
UAF Örneği
UAF örüntüsü:
// Vulnerable C code:
struct Object *obj = malloc(sizeof(*obj));
free(obj);
// Later, attacker causes a new malloc to fill the freed region
// with their data...
obj->method(); // now calls attacker's function pointer!Öbek Şekillendirme
Öbek şekillendirme (öbek düzenleme olarak da adlandırılır), belirli konumlara nesneler yerleştirmek için öbek ayırıcısını yönlendirme tekniğidir ve serbest bırakılan belleğin denetimli biçimde yeniden kullanılmasını sağlar. Saldırgan, ayırma ve serbest bırakma işlemlerini kesin bir sırayla tetikleyerek öbeği biçimlendirir.
Öbek Püskürtme
Öbek püskürtme, saldırganın denetimindeki büyük miktarda veriyi (kabuk kodu + NOP kızakları) öbek boyunca ayırır. Öbeğin büyük bölümü doldurulduğundan, hatalı bir işaretçinin saldırganın verilerine denk gelmesi olasıdır. Genellikle UAF veya tür karışıklığı hatalarıyla birlikte kullanılır.
// JavaScript heap spray:
var spray = [];
for(var i = 0; i < 100000; i++) {
spray[i] = unescape("%90%90...shellcode...");
}Çifte Serbest Bırakma
Çifte serbest bırakma, belleğin iki kez serbest bırakılmasıyla ortaya çıkar. İkinci serbest bırakma, öbek ayırıcısının üst verilerini (serbest liste işaretçilerini) bozar ve potansiyel olarak saldırganın bir sonraki ayırmanın yerleştirileceği konumu denetlemesine, yani istenen bir adrese yazmasına olanak tanır.
Öbek Arabellek Taşması
Yığın taşmalarında olduğu gibi, öbek arabellek taşması da bir öbek ayırmasının sonunun ötesine yazar. Yığın taşmalarının aksine hedef genellikle öbek üst verileridir (boyut, ileri ve geri işaretçiler) veya işlev işaretçileri ya da sanal yöntem tablosu işaretçileri içeren bitişik ayırmalardır.
Tür Karışıklığı
Tür karışıklığı, bir tür olarak ayrılan bellek bölgesinin farklı bir tür olarak kullanılmasıyla ortaya çıkar. JavaScript motorlarında ve C++ kodunda yaygındır. Saldırgan ayırma sırasını denetleyebilirse, motorun saldırgan verilerini güvenilir bir nesne olarak ele almasını sağlayabilir.
ptmalloc ve tcmalloc İç Yapısı
Öbek ayırıcısını anlamak, istismar geliştirmeye yardımcı olur. glibc'nin ptmalloc'u bölmeleri (sıralanmamış, küçük ve büyük) ve hızlı bölmeleri kullanır. tcache (iş parçacığı başına önbellek), ilk bellek ayırma kaynağıdır. İstismarlar, gelecekteki ayırma adreslerini denetlemek için genellikle bölme bozulmasını hedefler.
Azaltım Önlemleri
Öbek istismarına karşı azaltım önlemleri:
- Öbek rastgeleleştirme (ASLR'nin bir parçası) — öbek tabanını rastgeleleştirir
- Güvenli bağlantı kaldırma — bağlantıyı kaldırmadan önce ileri ve geri işaretçileri doğrular
- tcache zehirlenmesi algılama — glibc 2.32'de eklendi
- İşaretçi karıştırma — tcache'de depolanan işaretçileri şifreler
- Bellek güvenli diller — Rust, UAF'yi derleme zamanında ortadan kaldırır
Tarayıcı Öbek İstismarları
Tarayıcılardaki sıfır gün açıklarının çoğu JavaScript motorlarındaki (V8, SpiderMonkey) öbek güvenlik açıklarını içerir. Modern tarayıcılar korumalı alanı aşma zincirleri kullanır: işleyicideki öbek hatası → tarayıcı sürecine kaçış → OS ayrıcalık yükseltmesi. Her adım kendi tekniğini gerektirir.
Hızlı Kontrol: Öbek İstismarı
Saldırganın, daha önce serbest bırakılmış ve saldırgan verileriyle yeniden ayrılmış belleğe geçersiz bir işaretçi kullanarak programın yürütülmesini denetlemesini sağlayan güvenlik açığı hangisidir?
Ders Özeti
Öbek güvenlik açıkları — UAF, çifte serbest bırakma, öbek taşması ve tür karışıklığı — dinamik belleğin hatalı yönetiminden yararlanır. Bellek serbest bırakıldıktan sonra kullanım, modern istismarların en yaygın sınıfıdır. Öbek püskürtme, saldırgan verilerine denk gelme olasılığını en üst düzeye çıkarır. Azaltım önlemleri: ASLR, güvenli bağlantı kaldırma ve işaretçi karıştırma. Rust gibi bellek güvenli diller bu sınıfları tamamen ortadan kaldırır.
Sıkça Sorulan Sorular
“Heap İstismarı: Use-After-Free ve Heap Spraying” dersi ücretsiz mi?
Evet — “Heap İstismarı: Use-After-Free ve Heap Spraying” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Cyber Security Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Cyber Security Academy kursu toplamda 4 dersten oluşur.
“Heap İstismarı: Use-After-Free ve Heap Spraying” dersinde ne öğreneceğim?
glibc malloc iç işleyişini, use-after-free koşullarını ve heap spray tekniklerini anlayın. Cyber Security Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Cyber Security Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Cyber Security Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.
“Heap İstismarı: Use-After-Free ve Heap Spraying” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Cyber Security Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Cyber Security Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Yığın Tamponu Taşmaları
- Return-Oriented Programming (ROP)
- Biçim Dizesi Güvenlik Açıkları
- Heap İstismarı: Use-After-Free ve Heap Spraying