Bir güvenlik açığı araştırmacısının, Windows sistemlerinde toplu dosyaları yürütmek için kullanılan belirli bir işlevin bir enjeksiyon kusuru kullanılarak kötüye kullanılabileceğini keşfetmesinin ardından Rust Projesi, standart kitaplığı için bir güncelleme yayınladı.
Standart kitaplık olarak bilinen, Rust programlama dilinin içerdiği ortak işlevler kümesi, diğer birçok yeteneğin yanı sıra, Windows toplu dosyalarını Komut API’si aracılığıyla yürütme yeteneğini de sunar. Ancak işlev, API’ye yapılan girişleri, yürütmeye kod ekleme olasılığını ortadan kaldıracak kadar titizlikle işlemedi. Rust Güvenlik Müdahale Çalışma Grubu tavsiyesi 9 Nisan’da yayınlandı.
Uygulama güvenliği firması JFrog’da kıdemli güvenlik açığı araştırmacısı Yair Mizrahi, Rust’un bellek güvenliği özellikleriyle iyi bilinmesine rağmen, olayın programlama dilinin mantık hatalarına karşı dayanıklı olmadığının altını çizdiğini söylüyor.
“Genel olarak Rust’un bellek güvenliği dikkate değer bir avantaj, ancak geliştiricilerin Rust tabanlı uygulamalarının genel güvenliğini ve güvenilirliğini sağlamak için mantıksal hata potansiyeline de çok dikkat etmeleri gerekiyor” diyor. “Bu tür mantıksal sorunları ele almak için Rust, sıkı bir test ve kod inceleme sürecinin yanı sıra mantıksal hataları belirlemek ve azaltmak için statik analiz araçlarının kullanımını teşvik ediyor.”
Rust, uygulamaları bellek güvenliği açıkları olarak bilinen genellikle ciddi kusur sınıfına açık bırakmadığı için çok güvenli bir programlama dili olarak ün kazanmıştır. Google ilişkilendirdi bellekte güvenli olmayan kodda düşüş Rust ve Kotlin gibi bellek açısından güvenli dillere geçiş sırasında Microsoft, bellek açısından güvenli dile geçiş yaptığı 2018 yılına kadar bu tür güvenlik açıklarının düzenli olarak ortaya çıktığını tespit etti. tüm güvenlik sorunlarının %70’ini oluşturuyor.
Windows Bir Dizi Sorun Oluşturuyor
En son sorun, bellek güvenliği açığı değil, güvenilmeyen girişi işlemek için kullanılan mantıkla ilgili bir sorundur. Rust’un standart kütüphanesinin bir kısmı, geliştiricinin, işlenmek üzere Windows makinesine bir toplu iş dosyası göndermek için bir işlevi çağırmasına olanak tanır. Programlama dilinin bakımcılarını ve Rust ekosistemini destekleyen Rust Vakfı’nın teknoloji direktörü Joel Marcey, kodu ana bilgisayara toplu iş dosyası olarak göndermenin nedenleri olduğunu söylüyor.
“Toplu dosyalar sistemlerde birçok nedenden dolayı çalıştırılır ve Rust, bunları oldukça kolay bir şekilde yürütmenize olanak tanıyan bir API sağlar” diyor. “Dolayısıyla bu, Rust için en yaygın kullanım durumu olmasa da, sabit yama uygulanmadan önce API, kötü niyetli aktörlerin rastgele komutlar çalıştırarak sisteminizi teorik olarak ele geçirmesine izin verdi ve bu kesinlikle kritik bir güvenlik açığıdır.”
Genellikle bir geliştirici, standart kitaplığın bir parçası olan Komut uygulamaları programlama arabirimi (API) aracılığıyla bir iş yükünü toplu işlem olarak yürütülmek üzere Windows ana bilgisayarına iletebilir. Tipik olarak Rust, Komut API’sine yapılan herhangi bir çağrının güvenliğini garanti eder, ancak bu durumda Rust Projesi, öncelikle Windows’un herhangi bir standarda uymaması ve API, bir saldırganın daha sonra yürütülecek kodu göndermesine izin verebilir.
Rust Security Response WG’ye göre “Maalesef kaçış mantığımızın yeterince kapsamlı olmadığı ve keyfi kabuk yürütmeyle sonuçlanacak kötü niyetli argümanların iletilmesinin mümkün olduğu bildirildi.”
Rust Projesi Duyarlı Oldu
Uzmanlar, herhangi bir güvenlik açığıyla uğraşmanın baş ağrısı olabileceğini ancak Rust Projesi’nin grubun sorunları hızlı bir şekilde çözdüğünü gösterdiğini söylüyor. Standart kütüphane güvenlik açığı, CVE-2024-24576, sonuçta Windows toplu işleme sorunuyla ilgili bir sorundur ve Windows toplu işlemine gönderilen bağımsız değişkenleri yeterince ayrıştırmazlarsa diğer programlama dillerini etkiler. JFrog’dan Mizrahi, Rust Projesi’nin Windows CMD.exe işlemine argüman aktarmaya yönelik bir düzeltme içeren ilk proje gibi göründüğünü söylüyor.
Rust Projesi, grupların sorunu tamamen ortadan kaldıramadığını ancak işleve iletilen herhangi bir genişletmenin güvensiz olabileceği durumlarda Komut API’sinin hata döndürmeyeceğini söyledi.
JFrog’dan Mizrahi, Rust’a statik uygulama güvenliği testi kullanımını genişletmesi ve fuzzing ile dinamik testlerin kullanımını genişletmesi konusunda ısrar ediyor.
“Genel olarak Rust, hafıza güvenliğini vurgulayarak ve sıkı test uygulamalarını teşvik ederek doğru yolda ilerliyor” diyor. “Bu çabaları statik analiz ve bulanıklaştırmadaki sürekli ilerlemelerle birleştirmek, Rust topluluğunun ve daha geniş yazılım endüstrisinin önümüzdeki yıllarda mantıksal hataları ve girdi doğrulama kusurlarını ele alma konusunda önemli adımlar atmasına yardımcı olabilir.”