Arabellek taşması nedir?
Arabellek taşması (buffer overflow), bir programın belleğe ayrılmış sınırlı bir alana, sığabileceğinden fazla veri yazması sonucu komşu bellek bölgelerinin üzerine yazılmasıdır. Sonuçta program çökebilir ya da saldırgan akışı kendi koduna yönlendirebilir.
Sorun, bellek güvenliği olmayan dillerde (C ve C++ gibi) uzunluk denetiminin eksik olmasından doğar. Hata, sunucu servislerinde ve kütüphanelerde ciddi güvenlik açıklarına yol açabilir.
Nasıl çalışır?
Bir program, sabit boyutlu bir arabelleğe kullanıcıdan gelen veriyi kopyalarken boyutu kontrol etmezse, fazla veri yan yana duran değişkenlerin ve dönüş adreslerinin üzerine taşar. Saldırgan taşan veriyi dikkatle hazırlayarak programın bir sonraki adımda çalıştıracağı adresi değiştirebilir.
Modern sistemlerde bu istismarı zorlaştıran korumalar vardır: yığın koruma değerleri (canary), adres alanı rastgeleleştirme (ASLR) ve çalıştırılamaz bellek (NX). Bunlar riski azaltır ama açığı ortadan kaldırmaz.
Sunucu ve hosting ortamında
Ağ servisleri, web sunucuları, e-posta yazılımları, görüntü işleme kütüphaneleri ve ayrıştırıcılar bu tür hatalara maruz kalabilir. Sunucu yöneticisi olarak bu açıklara kod düzeyinde müdahale etmezsiniz; asıl savunma yamaların zamanında uygulanmasıdır.
- İşletim sistemi paketlerini ve kullandığınız servisleri güncel tutun.
- Çekirdek ve derleyici korumalarının etkin olduğu güncel dağıtımları tercih edin.
Nasıl korunulur?
- Güvenlik yamalarını hızla uygulayın; servislerin yeniden başlatıldığından emin olun.
- İnternete açık servisleri en az ayrıcalıkla çalıştırın.
- Gereksiz ağ servislerini kapatın.
- Mümkünse servisleri konteyner veya sanal alan içinde yalıtın.
- Kendi kodunuzu yazıyorsanız güvenli işlevleri ve bellek güvenli dilleri tercih edin; sınır denetimi ekleyin.
- Çökme günlüklerini izleyin; tekrarlayan çökmeler saldırı denemesi olabilir.
Sık yapılan hatalar
- Yalnızca ASLR gibi korumalara güvenip yamaları ertelemek.
- Eski ve desteği biten yazılımları çalıştırmaya devam etmek.
- Servis çökmelerini “kararsızlık” sayıp incelememek.
- Servisleri yüksek yetkiyle çalıştırmak.
Sık sorulan sorular
Arabellek taşması nedir?
Programın ayrılan bellek alanından fazla veri yazarak komşu belleği bozmasıdır. Çökmeye ve bazen kod çalıştırmaya yol açabilir.
Arabellek taşması nasıl önlenir?
Yazılım geliştirenler için sınır denetimi ve güvenli işlevler gerekir. Sunucu yöneticisi için en etkili yol, yamaları zamanında uygulamaktır.
Arabellek taşması ile use-after-free arasındaki fark nedir?
Arabellek taşmasında veri ayrılan alanın dışına yazılır. Use-after-free’de ise serbest bırakılmış bir bellek bölgesi kullanılmaya devam eder.
İlgili terimler
- Arka kapı (backdoor)Saldırganın sisteme sonradan gizlice yeniden girmesini sağlayan mekanizma.
- BotnetUzaktan yönetilen, ele geçirilmiş cihazlar ağı.
- ClickjackingKullanıcıyı farkında olmadan görünmez bir öğeye tıklatmak.
- CSRF (Siteler arası istek sahteciliği)Oturum açmış kullanıcının haberi olmadan istenmeyen bir işlemi tetiklemek.
- CVEHerkese açık güvenlik açıklarına verilen ortak kimlik.
- CVSSAçığın ciddiyetini 0-10 arası puanlayan standart.