CVE-2024-24576

Kritik

Açıklama

Rust bir programlama dilidir. Rust Security Response WG, versiyon 1.77.2 öncesindeki Rust standart kütüphanesinin, Windows üzerinde `Command` kullanarak toplu iş dosyalarını (`bat` ve `cmd` uzantılı) çağırırken argümanları düzgün şekilde kaçırmadığını (escape etmediğini) bildirmiştir. Başlatılan sürece iletilen argümanları kontrol edebilen bir saldırgan, kaçış mekanizmasını atlatarak rastgele kabuk komutları çalıştırabilir. Bu güvenlik açığının ciddiyeti, Windows üzerinde güvenilmeyen argümanlarla toplu iş dosyalarını çağıranlar için kritiktir. Diğer hiçbir platform veya kullanım etkilenmemiştir. `Command::arg` ve `Command::args` API'leri dokümantasyonlarında, argümanların içeriğine bakılmaksızın başlatılan sürece olduğu gibi iletileceğini ve bir kabuk tarafından değerlendirilmeyeceğini belirtmektedir. Bu durum, güvenilmeyen girdilerin argüman olarak geçirilmesinin güvenli olması gerektiği anlamına gelir. Windows'ta bunun uygulaması diğer platformlardan daha karmaşıktır; çünkü Windows API, başlatılan sürece tüm argümanları içeren tek bir dize sağlar ve bunları ayırmak başlatılan sürecin sorumluluğundadır. Çoğu program, pratikte argümanların çoğunlukla tutarlı bir şekilde ayrılmasıyla sonuçlanan standart C çalışma zamanı argv yapısını kullanır. Ancak bunlardan biri olan `cmd.exe` (diğer şeylerin yanı sıra toplu iş dosyalarını yürütmek için kullanılır), kendi argüman ayırma mantığına sahiptir. Bu durum, standart kütüphaneyi toplu iş dosyalarına iletilen argümanlar için özel bir kaçış mekanizması uygulamaya zorlamaktadır. Maalesef, kaçış mantığının yeterince kapsamlı olmadığı ve rastgele kabuk yürütülmesiyle sonuçlanacak kötü niyetli argümanların iletilmesinin mümkün olduğu bildirilmiştir. `cmd.exe`nin karmaşıklığı nedeniyle, tüm durumlarda argümanları doğru şekilde kaçıracak bir çözüm belirlenememiştir. API garantilerimizi korumak adına, kaçış kodunun sağlamlığı artırılmış ve `Command` API'si, bir argümanı güvenli bir şekilde kaçıramadığında `InvalidInput` hatası döndürecek şekilde değiştirilmiştir. Bu hata, süreç başlatılırken yayınlanacaktır. Düzeltme Rust 1.77.2 sürümüne dahil edilmiştir. Toplu iş dosyaları için yeni kaçış mantığının ihtiyatlı davrandığı ve geçerli argümanları reddedebileceği unutulmamalıdır. Kaçış işlemini kendileri uygulayanlar veya Windows'ta yalnızca güvenilir girdileri işleyenler, standart kütüphanenin kaçış mantığını atlamak için `CommandExt::raw_arg` yöntemini de kullanabilirler.

ÖnemKritik
CVSS10.0
İstismar olasılığı—
ÜrünRust
Yayın9 Nis 2024
İlk görülme9 Nis 2024

Nasıl düzeltilir

Güncelleyin
  • rust-lang rust1.77.2 ya da sonraki bir sürüm

Etkilenen ürünler

ÜrünEtkilenen sürümlerDüzeltildiği sürüm
rust-lang rustv < 1.77.21.77.2
fedoraproject fedora38, 39, 40—

Sürümünüzü kontrol edin

Ürünü seçin ve kullandığınız sürümü yazın; sürümün etkilenen aralıkta olup olmadığını görün.

Intelligence 360 paketinde

Attack Surface Management

Alan adlarınıza bağlı varlıkları, bu varlıklarda çalışan teknolojileri ve bilinen zafiyetleri tek listede görün.

CVE-2024-24576 · Rust · Dark Radar