Rust programlama dili, Windows’ta saldırganlara kabuk komutlarını yürütme yolu sağlayan standart bir kitaplığa sahiptir.
GitHub’daki bir danışma belgesinde kritik olarak derecelendirilen güvenlik açığı, 1.77.1 ve önceki sürümlerdeki Rust standart kitaplığını etkiliyor.
Hata 1.77.2 sürümünde düzeltildi.
Teknik açıklama, CVE-2024-24576’nın, kütüphanenin Windows’ta toplu iş dosyalarını (“bat” ve “cmd” uzantılarıyla) çağırırken bağımsız değişkenlerden düzgün bir şekilde kaçmaması nedeniyle meydana gelen bir işletim sistemi komut enjeksiyonu ve bağımsız değişken ekleme güvenlik açığı olduğu yönündedir. danışma belgesinde “Komut”un kullanılmasıyla ilgili bir açıklama yer alıyor.
“Oluşturulan sürece aktarılan argümanları kontrol edebilen bir saldırgan, kaçışı atlayarak keyfi kabuk komutlarını çalıştırabilir.”
Sorun, Windows API’sinde Command::arg ve Command::args kullanımının karmaşıklığıdır; bu, dizeyi bölme görevine sahip olan, ortaya çıkan işlemlere ilişkin tüm argümanları içeren tek bir dize sağlar.
Windows olmayan platformlarda bu bir sorun değildir.
Ancak, Windows’un ‘cmd.exe’ dosyasının kendi bağımsız değişken bölme mantığı vardır; dolayısıyla Rust programı onu çağırırsa (örneğin toplu iş dosyalarını yürütmek için), standart kitaplığın toplu iş dosyalarına aktarılan bağımsız değişkenler için özel kaçış uygulaması yapması gerekir.
Danışman, “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” dedi.