Microsoft .Net Framework içerisinde yer alan açıklar için bir yama paketi yayınladı. Bir çoğu kritik seviyede olan açıklar için yamaları
bu adresten indirebilirsiniz.
Kapatılan açıklar genelde Remote Code Execution (Uzaktan kod çalıştırma) ile ilgili. Microsoft yamaları .NET framework ve işletim sistemi versiyonlarına göre yayınlayarak takdire şayan bir iş yapmış. Diğer taraftan Security Assessment firması .NET framework için
Null Byte Injection Vulnerabilities (Sıfır Byte Ekleme Açıkları) dökümanı yayınladı. Mutlaka indirmenizi ve örnekleri incelemenizi öneriyorum.
Dökümandan bir alıntı yaparsak :
It was found that certain .NET methods in various sections of the .NET namespace are vulnerable to Null byte injection attacks. Null byte injection occurs when the .NET CLR incorrectly handles user supplied Null bytes.
The .NET CLR considers Null bytes as 'data', .NET strings are not Null byte terminated. However, native POSIX compliant function calls terminate all strings at the first found Null byte. Interoperability issues are encountered when data containing a Null byte is used by .NET to directly call a native C function call.
Native function calls terminate strings at the injected Null byte allowing a remote user to arbitrarily terminate a string parameter used by the vulnerable method.
Security-Assessment.com has discovered five vulnerable methods in the .NET framework which are exploited through Null byte injection. Three of the discovered vulnerabilities allow strings to be arbitrary terminated through String Termination vulnerabilities. The remaining two resulted in an Arbitrary File Disclosure condition where a remote user is capable of accessing arbitrary files from within the web root.
Yukarıda söz edilen beş metot arasında dinamik dizin yolu (path) oluşturmaya yarayan Server.MapPath, metinleri birbirleriyle kıyaslayan String.Compare gibi sık kullanılan fonksiyonlar var.
Bu açıktaki temel neden .Net framework'un string değişkenler içerisinde bulduğu ilk Null byte'da (%00) string'i kesmesidir.
string str = "küresel%00" + " ısınma";
kodu çalıştırılırsa sonuç "küresel" olacaktır.
Bu açık kullanıcıdan gelen verilerle yapılan işlemlerde sorunlar yaratabilmektedir.
Security-Assessment.com yayınladığı döküman içerisinde bu konuda güzel örneklere yer veriyor. Dökümanı incelemenizi tekrar tavsiye ediyorum.