CVE-2022-36113
Açıklama
Cargo, rust programlama dili için bir paket yöneticisidir. Bir paket indirildikten sonra Cargo, kaynak kodunu diskteki ~/.cargo klasörüne çıkararak oluşturduğu Rust projeleri için erişilebilir hale getirir. Çıkarma işleminin başarılı olduğunu kaydetmek için Cargo, tüm dosyaları çıkardıktan sonra çıkarılan kaynak kodunun kök dizinindeki .cargo-ok dosyasına "ok" yazar. Cargo'nun, paketlerin bir .cargo-ok sembolik bağlantısı içermesine izin verdiği ve Cargo'nun bunu çıkardığı keşfedilmiştir. Ardından Cargo, .cargo-ok dosyasına "ok" yazmaya çalıştığında, aslında sembolik bağlantının işaret ettiği dosyanın ilk iki baytını "ok" ile değiştirir. Bu durum, bir saldırganın paketi çıkarmak için Cargo kullanan makinedeki bir dosyayı bozmasına olanak tanır. Tasarım gereği Cargo'nun, derleme betikleri ve prosedürel makrolar nedeniyle derleme sırasında kod çalıştırılmasına izin verdiğini unutmayın. Bu bildirimdeki güvenlik açıkları, olası zararların bir kısmının takip edilmesi daha zor bir yöntemle gerçekleştirilmesine izin verir. Saldırılardan korunmak istiyorsanız bağımlılıklarınıza hala güvenmeniz gerekir, çünkü aynı saldırıları derleme betikleri ve prosedürel makrolarla gerçekleştirmek mümkündür. Güvenlik açığı Cargo'nun tüm sürümlerinde mevcuttur. 22 Eylül'de yayınlanacak olan Rust 1.64 sürümü bunun için bir düzeltme içerecektir. Güvenlik açığı, kötü amaçlı derleme betiklerinin veya prosedürel makroların yapabileceklerini başarmanın sadece daha sınırlı bir yolu olduğu için, güvenlik düzeltmesini eski sürümlere taşıyan ara Rust sürümleri yayınlamamaya karar verdik. Kendi araç zincirini oluşturan kişiler için Rust 1.63.0 yamaları wg-security-response deposunda mevcuttur. Hafifletmeler: Alternatif kayıt defteri kullanıcılarının, projelerine yalnızca güvenilir bağımlılıklar ekleyerek hangi paketi indirdikleri konusunda dikkatli olmalarını öneriyoruz. Lütfen bu güvenlik açıkları giderilse bile, tasarım gereği Cargo'nun derleme betikleri ve prosedürel makrolar sayesinde derleme sırasında rastgele kod çalıştırılmasına izin verdiğini unutmayın: kötü amaçlı bir bağımlılık, bu güvenlik açıklarından bağımsız olarak zarar verebilecektir. crates.io, bu tür paketleri reddetmek için sunucu tarafı kontrollerini yıllar önce uygulamıştır ve crates.io üzerinde bu güvenlik açıklarını kullanan herhangi bir paket bulunmamaktadır. Ancak uzaktan kod çalıştırmaya tasarım gereği orada da izin verildiğinden, crates.io kullanıcılarının bağımlılıklarını seçerken hala dikkatli olmaları gerekmektedir.
Nasıl düzeltilir
- rust-lang cargo0.65.0 ya da sonraki bir sürüm
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| rust-lang cargo | v < 0.65.0 | 0.65.0 |
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.
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.