Yazılım güvenliği uzmanları bu hafta, yazılım endüstrisinin kritik, uzaktan istismar edilebilir ve vahşi saldırıların büyük çoğunluğundan sorumlu olan bir grup zararlı güvenlik açığına karşı ilerleme kaydettiğini söyledi.

Bellek güvenliği sorunları olarak adlandırılan güvenlik açıkları sınıfı, arabellek taşmalarını ve kullanım sonrası hataları içerir ve yazılım şirketleri tarafından açıklanan uygulama güvenlik sorunlarının çoğundan sorumludur. Şimdi, en son veriler, Java, C# ve son zamanlarda Rust gibi bellek için güvenli dillerin kullanımının artmasının, tüm güvenlik açıkları sınıfında hızlı bir düşüşe yol açtığını gösteriyor.

Örneğin geçen hafta, Google açıkladı Android işletim sisteminin en son sürümünün, Java, Rust ve Kotlin gibi bellek açısından güvenli programlama dillerinde yazılmış, C ve C++ gibi bellek açısından güvenli olmayan dillere göre daha fazla yeni kod içerdiğini ve bunun da bellek güvenliği güvenlik açıklarında düşüşe neden olduğunu son üç yılda 223’ten 85’e.

Google’da bir yazılım mühendisi olan Jeffrey Vander Stoep, “İlk önce en ciddi olana odaklanarak tüm güvenlik açığı sınıflarını ortadan kaldırmaya odaklanmaya devam ediyoruz” diyor. “Bellek güvenlik açıkları daha az sayıda hale geldikçe, araştırma topluluğunun güvenlik açığı bulma çabalarını diğer güvenlik açığı sınıflarına odaklamasını bekliyoruz.”

Google, bellek güvenliği güvenlik açıklarının tehlikeli olduğunu söylüyor
Bellek güvenliği güvenlik açıkları orantısız derecede şiddetlidir. Kaynak: Google

Onlarca yıldır, C ve C++, yazılım endüstrisinin işgücü programlama dilleri olmuştur. Yine de C#, Go, Java, Python, Ruby, Rust ve Swift gibi daha modern dillerin bellek korumalarından yoksundurlar. Sonuç? Uygulama güvenliği firması Veracode’s’a göre, C++ ile yazılmış uygulamaların yüzde elli dokuzu, JavaScript için %9 ve Python için %10’a kıyasla yüksek önem dereceli veya kritik önem dereceli kusurlara sahiptir. Yazılım Güvenliğinin Durumu Cilt. 11 raporu.

Arabellek Taşmaları ve Wormable Kusurları

Programcıların kusurlu kod oluşturma kolaylığı, büyük yazılım şirketleri için büyük bir sorun haline geldi. Örneğin Microsoft, 2018 yılına kadar bellek güvenliği sorunlarının olduğunu tespit etti. Güvenlik açıklarının %70’inden sorumlu şirketin yazılımında bulundu. Genel olarak, bellek güvenliği sorunları, çok çeşitli ekosistemlerdeki tüm güvenlik açıklarının %60 ila %70’ini oluşturuyor. Yazılım dayanıklılık mühendisi Alex Gaynor tarafından 2020 araştırması.

Veracode’un baş teknoloji sorumlusu Chris Wysopal, kusurlardan uygulamalara saldırmak için kolayca yararlanılabileceği için, önemli sayıda uzlaşmanın arkasındaki temel nedenlerin bunlar olduğunu söylüyor.

“Bellek bozulması sorunları, saldırganların uygulamanın tam kontrolünü ele geçirmelerine izin veren kod yürütme yoluyla yararlanmalarına izin verdiği için en yüksek önemdeki kusurlar arasındadır” diyor. “En kötü durum senaryosunda bu, güvenlik açığının diğer örneklerine saldırmaya devam edebilecek bir solucan istismarının oluşturulmasına izin verir.”

İçinde Android geliştirme için bellek açısından güvenli dillere geçişle ilgili son blog gönderisiGoogle, bellek güvenliği güvenlik açıklarının artık Android’de açıklanan sorunların yalnızca %36’sını oluşturduğunu, kritik güvenlik açıklarının %86’sını ve uzaktan yararlanılabilen sorunların %89’unu oluşturduğunu belirtti.

Güvenli Dillere Geçiş

Bu nedenle, Google ve diğerleri, geliştiricileri bellek açısından güvenli dilleri benimsemeye çağırdı.

Google örneğinde, C ve C++ artık tüm yeni kodların yarısından daha azını oluşturuyor. Aslında, en son sürüm olan Android 13, kodun çoğunluğunun bellek açısından güvenli dillerde yazıldığı ilk sürümdür ve birçok geliştirici için Rust, C ve C++’ın yerini almıştır. Rust, güvenli kod oluşturmaya odaklanan verimli bir programlama dilidir.

Ulusal Güvenlik Ajansı bile şirketleri bellek açısından güvenli programlama dillerini benimsemeye çağırıyor.

Bununla birlikte, bellek açısından güvenli bir dile geçmek yeterli değildir. Diller, programcıların güvenli olmayan kod yazmasını zorlaştırsa da, her dilin farklı bir koruma düzeyi vardır. Bu nedenle NSA, geliştiricilerin uygulamaları olabildiğince sağlamlaştırmak için derleyici seçeneklerinden statik tarayıcılara ve çalışma zamanı analizine kadar çeşitli uygulama güvenliği araçlarını kullanmalarını da tavsiye etti.

NSA’nın raporunda, “Yazılım analiz araçları, bellek yönetimi sorunlarının birçok örneğini algılayabilir ve işletim ortamı seçenekleri de bir miktar koruma sağlayabilir, ancak bellek için güvenli yazılım dillerinin sunduğu doğal korumalar, çoğu bellek yönetimi sorununu önleyebilir veya azaltabilir.”

Veracode’dan Wysopal, sonuçta, bellek açısından güvenli programlama dillerinin yazılım güvenlik açıkları sorununa bağımsız bir çözüm olmasa da, geliştiricilere rehberlik ederek en ciddi programlama hatalarından bazılarını önleyebileceğini söylüyor.

“Kullanılma biçimleri farklı olduğundan, bellek güvenli dillerde daha düşük güvenlik açıkları olduğunu genellemek ve söylemek zor” diyor. “Ancak aynı görevi gerçekleştirmek için iki farklı dil kullanıyorsanız ve biri bellek açısından güvenliyse, o dilde daha az güvenlik açığı ve genellikle daha az kritik güvenlik açıkları beklersiniz.”



siber-1