Buffer Overflow Nedir?

ByFelez

Uzman üye
9 Tem 2013
1,818
1,774
1sSUFI.png

Arabellek taşması, bir arabelleğe veri yazan yazılımın arabelleğin kapasitesini aşarak bitişik bellek konumlarının üzerine yazılmasına neden olan bir anormalliktir. Başka bir deyişle, yeterli alana sahip olmayan bir kapsayıcıya çok fazla bilgi aktarılıyor ve bu bilgi, bitişik kapsayıcılardaki verilerin yerini alıyor.

Arabellek taşmaları, saldırganlar tarafından, bir bilgisayarın belleğini değiştirmek veya programın yürütülmesinin kontrolünü ele geçirmek için değiştirmek amacıyla istismar edilebilir.

buffer-overflow-example.svg


Buffer Nedir?
Bir arabellek veya veri arabelleği, verileri bir yerden diğerine taşınırken geçici olarak depolamak için kullanılan bir fiziksel bellek depolama alanıdır. Bu arabellekler tipik olarak RAM belleğinde yaşar. Bilgisayarlar, performansı artırmaya yardımcı olmak için sık sık arabellek kullanır; çoğu modern sabit disk, verilere verimli bir şekilde erişmek için ara belleğe alma işleminden yararlanır ve birçok çevrimiçi hizmet de arabellek kullanır. Örneğin, arabellekler, kesintiyi önlemek için çevrimiçi video akışında sıklıkla kullanılır. Bir video akışı yapıldığında, video oynatıcı bir seferde videonun belki de %20'sini indirir ve bir arabellekte saklar ve ardından bu arabellekten akış yapar. Bu şekilde, bağlantı hızındaki küçük düşüşler veya hızlı hizmet kesintileri, video akışı performansını etkilemeyecektir.

Tamponlar, belirli miktarda veri içerecek şekilde tasarlanmıştır. Arabelleği kullanan program, ara belleğe çok fazla gönderildiğinde verileri atmak için yerleşik talimatlara sahip değilse, program arabelleğe bitişik bellekteki verilerin üzerine yazacaktır.

Arabellek taşmaları, saldırganlar tarafından yazılımı bozmak için kullanılabilir. İyi anlaşılmasına rağmen, arabellek taşması saldırıları hala siber güvenlik ekiplerine eziyet eden büyük bir güvenlik sorunudur. 2014'te 'kalp kanaması' olarak bilinen bir tehdit, SSL yazılımındaki bir arabellek taşması güvenlik açığı nedeniyle yüz milyonlarca kullanıcının saldırıya uğramasına neden oldu.

BLUE-TANITIMcb8b01e06458b7f1.png

Saldırganlar arabellek taşmalarından nasıl yararlanır?

Saldırgan, programın bu girdiyi yeterince büyük olmayan bir arabellekte depolamaya çalışmasına ve arabellek alanına bağlı bellek bölümlerinin üzerine yazmasına neden olacak şekilde, bir programa kasıtlı olarak özenle hazırlanmış bir girdi besleyebilir. Programın bellek düzeni iyi tanımlanmışsa, saldırgan yürütülebilir kod içerdiği bilinen alanların üzerine kasıtlı olarak yazabilir. Saldırgan daha sonra bu kodu kendi yürütülebilir koduyla değiştirebilir ve bu da programın çalışma biçimini büyük ölçüde değiştirebilir.

Örneğin, bellekteki üzerine yazılan kısım bir işaretçi (bellekteki başka bir yeri işaret eden bir nesne) içeriyorsa, saldırganın kodu bu kodu bir istismar yüküne işaret eden başka bir işaretçiyle değiştirebilir. Bu, tüm programın kontrolünü saldırganın koduna aktarabilir.

BLUE-TANITIMcb8b01e06458b7f1.png

Kimler arabellek taşması saldırılarına karşı savunmasızdır?

Bazı kodlama dilleri, diğerlerine göre arabellek taşmasına karşı daha hassastır. C ve C++, belleklerindeki verilere erişmeye veya verilerin üzerine yazmaya karşı yerleşik koruma içermediklerinden yüksek güvenlik açığına sahip iki popüler dildir. Windows, Mac OSX ve Linux'un tümü, bu dillerden birinde veya her ikisinde yazılmış kod içerir.

Java, PERL ve C# gibi daha modern diller, arabellek taşması olasılığını azaltmaya yardımcı olan, ancak bunu tamamen engelleyemeyen yerleşik özelliklere sahiptir.

Arabellek taşması saldırılarına karşı nasıl korunulur?

Neyse ki, modern işletim sistemleri, arabellek taşması saldırılarını azaltmaya yardımcı olan çalışma zamanı korumalarına sahiptir. Sömürü riskini azaltmaya yardımcı olan 2 yaygın korumayı inceleyelim:
  • Adres alanı rastgeleleştirme - Bir işlemin anahtar veri alanlarının adres alanı konumlarını rastgele yeniden düzenler. Arabellek taşması saldırıları genellikle önemli yürütülebilir kodun tam yerinin bilinmesine dayanır, adres alanlarının rastgele hale getirilmesi bunu neredeyse imkansız hale getirir.
  • Veri yürütme engellemesi - Yürütülebilir veya yürütülemez belleğin belirli alanlarını işaretleyerek, bir istismarın yürütülemez bir alanda bulunan kodu çalıştırmasını önler.

Yazılım geliştiriciler ayrıca yerleşik korumaları olan dillerde yazarak veya kodlarında özel güvenlik prosedürleri kullanarak arabellek taşması güvenlik açıklarına karşı önlem alabilirler.

Önlemlere rağmen, bazen başarılı bir istismarın ardından geliştiriciler tarafından yeni arabellek taşması güvenlik açıkları keşfedilmeye devam ediyor. Yeni güvenlik açıkları keşfedildiğinde, mühendislerin etkilenen yazılımı düzeltmesi ve yazılım kullanıcılarının yamaya erişmesini sağlaması gerekir.

1sSUFI.png

Kaynak: Cloudflare - The Web Performance & Security Company
 
Ü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.