Buffer Overflow

noktalıvirgül

Deneyimli Moderatör
17 Kas 2020
918
502
Buffer Overflow, kötü amaçlı bilgisayar korsanlarının daha çok kurumsal sistemlere erişim sağlamasına sebep olan bir güvenlik açığıdır. İki yazılım arasında veri iletişiminin sağlanması için ayrılan arabelleğe kapasitesinden daha fazla veri eklenmesiyle ortaya çıkar.

“Buffer” ibaresi arabellek/tampon/ara bölge anlamına gelir ve verilerin belleğe yazılmadan önce kullanıldıkları ara alanlardır.


Saldırı Nasıl Gerçekleşir?
Saldırı gerçekleştirilmesi için kodlama hatası manipüle edilerek bir arabellek taşması veya arabellek aşımı (buffer overflow) saldırısı gerçekleştirilebilmektedir. Arabellek taşması, ilgili alanların kabul edebileceğinden çok daha fazla veri gönderilmesiyle oluşur ve bu şekilde oluşan güvenlik açığı istismar edilmiş olunur. Saldırganların, bilgi işlem merkezinin üzerindeki kodlama hatalarını kötü amaçlı kodlarla değiştirmeleriyle buffer overflow saldırısı çalışır ve saldırganlar bu şekilde veri çalmak veya sistemleri tehlikeye sokmak gibi eylemler gerçekleştirebilirler.

-
Arabellek taşması, programlama dillerinin ihlal edilmesi ve içerisinde bulundukları arabellek sınırlarının üzerine yazmayı ifade eder. Arabelleğe yazılmış olan verilerin yetersiz kalan denetim nedeniyle hedef arabellekle bitişik olan bellek adresteki veri değerlerinin de bozulmasıyla oluşur. Yani yazılım hatası, bir konumdan diğerine aktarılırken verilerin geçici olarak tutulduğu bilgi işlem belleği bölümleri arabelleklere odaklanır. Bu durumda arabellek taşması (buffer overflow), arabellekteki veri depolama kapasitesini aşarak meydana gelmiş olur. Buna bağlı olarak da bu fazladan veriler, saldırıya uğrayan bellek ile bitişik bellek konumlarına da taşarak buradaki verileri bozar veya bunların üzerlerine kötü amaçlı kodları yazar. Bu bozulma, verilerin hedef arabelleğe sığıp sığmadığı kontrol edilmeden verilerin arabellekler arasında taşınıp kopyalanırken oluşabilir. Bu yazılım kodlama hatası en çok bilinen yazılım güvenlik açıklarından biri olmasına rağmen yaygın olarak devam etmektedir. Çünkü buffer overflow’lar çeşitli şekillerde gerçekleşebilir ve buna karşı savunma tekniklerinin çoğunlukla hataya açık olma durumu söz konusudur.

Bir buffer overflow istismar teknikleri, hedef mimariye ve işletim sistemine göre değişebilir. Programda ek eylemlerin tetiklenmesi ve uygulamaya yeni talimatların gönderilmesini sağlayan kötü amaçlı kodlar aynı zamanda fazladan veriler içerdiği için bellek taşmasına sebep olur. Bir programa ek kodlar eklenerek bilişim teknolojileri sistemine saldırganların erişimini sağlayan talimatlar gönderilebilir. Hatta programın bellek durumu saldırgan tarafından biliniyorsa arabellek tarafından depolanamayacak kadar fazla olan verileri ara belleğe ekleyebilir. Bu eklemeler, kodları depolayan bellek üzerilerine ek veri yazılmasını ve program kontrolünün ele geçirilmesini sağlayan kötü amaçlı kodlarla değiştirilebilmesini sağlamaktadır.

Saldırganların, örneğin bir web uygulamasındaki arabellek taşmasını kullanıp arabelleği bozarak bir makineyi ele geçirebilmeleri mümkündür.

Buffer Overflow kusurları, uygulama sunucularında, web sunucularında, grafik kitaplıkları kullanan web uygulamalarında, özel web uygulama kodlarında bulunabilir. Özel web uygulamalarında bulunma olasılığı daha yüksektir çünkü siber güvenlik uzmanları tarafından çok fazla kontrol edilmezler, ama buna rağmen kötü amaçlı bilgisayar korsanları tarafından da fark edilme ve istismar edilme olasılıkları daha düşüktür.


Buffer Overflow Saldırıları Türlerinin En Yaygınları:

-Stack-Based Buffer Owerflows: Bu tür saldırılar, arabellek saldırılarının en yaygın şeklidir. Verilerin bir yığın arabelleğinde depolanmasını sağlayan uygulamaya kötü amaçlı kod içeren veriler gönderilmesiyle oluşur. Ayrıca aktarımların kontrolü de saldırgandadır. Yığın, bir programın bellek alanının taşmasına sebep olan saldırıyı ifade eder.
-Heap-Based Buffer Overflows: Bir programın bellek alanını, çalışma işlemleri için belleğin kullanılması ve belleğin taşması ile gerçekleşen saldırı türüdür.
-Format String Attack: Bir uygulamada giriş verileri komut olarak işlenerek veya giriş verileri doğrulanmadığında bu saldırı gerçekleşir. Bu saldırı, kod yürütülmesine, bellekteki verilerin okunmasına , uygulamada segmentasyon/bellek parçaları hatalarına ve sistemin güvenliğini, istikrarını tehlikeye sokan yeni eylemlerin tetiklenmesine sebep olabilir.

Buffer Overflow Saldırılarının Genel Sonuçları:

-Kötü Amaçlı Erişimlerin Denetimi Eksikliği: Buffer overflow saldırıları çoğunlukla program güvenlik denetim kapsamı dışındaki rastgele kod kullanımlarıyla sağlanır.

-Sistem Çökmesi ve Verilerin Durumu: Buffer owerflow saldırıları çoğunlukla sistemlerin çökmesine neden olur ve kullanımda sorunlar çıkmasına, programların sonsuz bir döngüye girmesine neden olabilir. Ayrıca veriler bozulabilir, zararlı program parçacıkları çalıştırılabilir.

-Diğer Açıklar İçin de Kullanımı: Buffer overflow saldırısı, rastgele kod yürütülmesine neden olduğunda saldırgan, bu güvenlik açığını diğer açıklardan yararlanmak için ve güvenlik hizmetlerini bozmak için de kullanabilir.

Hangi Programlama Dillerinde Görülebilir:
Programların büyük çoğunluğunda, web sunucularında, web uygulamalarında buffer overflow görülebilir. Java, JavaScript, Python, Perl dilleriyle yazılanlar saldırılara karşı daha fazla koruyuculuk taşır.

-
Arabellek taşmaları saldırılarına neden olanlar genellikle kodlama hataları, uygulama geliştirmedeki hatalar, uygulamanın uygun boyuttaki arabellekleri ayırmaması ve taşma sorunlarını denetleyememesidir. Bu sorunlar, C, C++, Assembly, Fortran vb. programlama dillerinde yerleşik arabellek yeterli koruması olmadığı için gerçekleşir.

Buffer Overflow Nasıl Önlenir?

-Address space layout randomization (Adres alanı düzeni rastgeleleştirme): Saldırıların gerçekleştirilmesi için genellikle yürütülebilir kodun nerede olduğu bilinmelidir. Adres alanlarının rastgele halde olması için adres alanı düzeni rastgeleleştirme yöntemi veri bölge konumları arasında rastgele hareket eder ve buffer overflow saldırılarının önüne geçilmiş olunur.

-Data execution prevention (Veri yürütme engellemesi): Bu yöntemle, bellek alanları yürütülemez olarak işaretlenebilir ve bu bölgelerde kod çalıştırılmasını engellemiş olur.

-Structured exception handling overwrite protection (Yapılandırılmış istisna işleme üzerine yazma koruması): Saldırganlar, yapılandırılmış istisna işlemenin üzerine kod yazmaya çalışabilirler. Bu sistem donanım ve yazılım istisnalarını yöneten yerleşik bir sistemdir. Bu saldırıyı, programın yığınında depolanan kaydın üzerine kod yazarak yığın tabanlı bir buffer overflow saldırısıyla yapabilirler. Bu üzerine yazma koruması ile, yapılandırılmış istisna işlemeye kötü niyetli kodlarla saldırılmasını ve üzerine yazma tekniğiyle istismar edilmesini engeller.​
 

zztri

Yaşayan Forum Efsanesi
9 Tem 2015
10,055
388
Ankara
Gerçekten çok temiz, hiç bir gereksiz ayrıntı verilmeden C++ bilen herkesin anında anlayacağı şekilde yazılmış. Ellerine sağlık, saygılar.
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.