CVE-2023-40030
Təsvir
Cargo Rust layihəsinin asılılıqlarını yükləyir və layihəni kompilyasiya edir. Rust 1.60.0 versiyasından başlayaraq və 1.72 versiyasına qədər olan dövrdə Cargo, `cargo build --timings` tərəfindən yaradılan hesabatda Cargo funksiya adlarını (feature names) əvəzləmirdi (escape etmirdi). Asılılıq kimi daxil edilmiş zərərli paket bura demək olar ki, istənilən HTML kodu yerləşdirə bilər ki, bu da hesabat sonradan hər hansı bir yerə yükləndikdə saytlararası skriptinqə (XSS) səbəb ola bilər. Bu boşluq git, lokal yollar və ya alternativ reyestrlərdən gələn asılılıqlardan istifadə edən istifadəçilərə təsir edir. Yalnız crates.io-dan asılı olan istifadəçilər bundan təsirlənmir. Rust 1.60.0 versiyasında qurma prosesinin müxtəlif mərhələlərinin nə qədər vaxt aldığına dair hesabat hazırlayan `cargo build --timings` funksiyası təqdim edildi. Bura hər bir crate üçün Cargo funksiyalarının siyahısı daxildir. Rust 1.72 versiyasına qədər Cargo funksiya adlarının (funksiya sintaksisində istifadə olunan bəzi istisnalarla) demək olar ki, istənilən simvolu ehtiva etməsinə icazə verilirdi, lakin Rust 1.49 versiyasından etibarən onlar haqqında gələcək uyğunsuzluq xəbərdarlığı verilirdi. crates.io valid funksiya adı hesab etdiyi meyarlar mövcudiyyətində daha sərtdir və belə funksiya adlarına icazə verməmişdir. Funksiya adları zamanlama hesabatına əvəz olunmadan daxil edildiyi üçün onlar səhifəyə Javascript yerləşdirmək üçün istifadə edilə bilərdi, məsələn, `features = ["<img src='' onerror=alert(0)"]` kimi bir funksiya adı ilə. Əgər bu hesabat sonradan kimlik məlumatlarından istifadə edən bir domenə yüklənsəydi, yerləşdirilmiş Javascript vebsayt ziyarətçisinin resurslarına daxil ola bilərdi. Bu problem Rust 1.72 versiyasında gələcək uyğunsuzluq xəbərdarlığının xətaya çevrilməsi ilə həll edilmişdir. İstifadəçilər yenə də yüklədikləri paketlərə qarşı diqqətli olmalı və layihələrinə yalnız etibarlı asılılıqları daxil etməlidirlər. Nəzərə alın ki, bu boşluqlar aradan qaldırılsa belə, Cargo dizaynı etibarilə qurma skriptləri və prosedural makrolar vasitəsilə qurma zamanı ixtiyari kodun icrasına icazə verir: zərərli asılılıq bu boşluqlardan asılı olmayaraq ziyan vura biləcəkdir. crates.io-nun server tərəfli yoxlamaları bu hücumun qarşısını alır və crates.io-da bu boşluqlardan istifadə edən heç bir paket yoxdur. Bununla belə, uzaqdan kodun icrası orada da dizayn etibarilə mümkün olduğu üçün crates.io istifadəçiləri asılılıqlarını seçərkən hələ də diqqətli olmalıdırlar.
Necə düzəltmək olar
- rust-lang rust1.72.0 və ya daha yeni versiya
Təsirlənən məhsullar
| Məhsul | Təsirlənən versiyalar | Düzəldildiyi versiya |
|---|---|---|
| rust-lang rust | 1.60.0 ≤ v < 1.72.0 | 1.72.0 |
Versiyanızı yoxlayın
Məhsulu seçin və istifadə etdiyiniz versiyanı yazın; versiyanın təsirlənən aralıqda olub-olmadığını görün.
Attack Surface Management
Domenlərinizə bağlı aktivləri, onlarda işləyən texnologiyaları və məlum zəiflikləri bir siyahıda görün.