
Rust soundness zəifi: kod sahə təyinatı ilə 'static ömür müddətini keçir
Yeni aşkarlanan Rust problemi göstərir ki, kovariant sahə təyinatı strukturun 'static ömür məhdudiyyətini pozur və Drop koduna qısa müddətli istinadları static hesab etməyə və silinmiş yaddaşı oxumağa imkan verir.
Zəiflik
Rust növlər sistemində mövcud soundness zəifi kodun kovariant sahə təyinatı ilə strukturun 'static ömür tələbini keçirməsinə imkan verir. rust-lang/rust#164250 kimi qeyd edilən problem Q<T: 'static + Send> ümumi strukturuna aiddir və onun sahəsinə qısa ömürlü lokal dəyərə istinad təyin edilə bilər. Sahə kovariant olduğu üçün təyinat qəbul olunur, hətta dəyər 'static məhdudiyyətini qarşılamasa belə. Sonra strukturun Drop implementasiyası saxlanılan istinadı 'static kimi qəbul edir ki, bu da scope bitdikdən sonra azad edilmiş stek yaddaşının oxunmasına səbəb ola bilər.
Təsir və ciddilik
Reproducer cari nightly və stable buraxılışlarda, ən azı 1.85.0 daxil olmaqla tərtib olunur. Bir kontributorun sözlərinə görə, bu nümunə 2017-ci ildən, yəni Rust 1.18.0-dan bəri tərtib olunur. Sanitizerlərsiz proqram azad edilmiş sətirin məzmununu çap edir; AddressSanitizer zamanı isə stack-use-after-scope xətası ilə çökür. Lcnr problemi P-critical kimi deyil, P-high kimi təsnif etdi, çünki 11 ildir aşkarlanmayıb və onun istismarı təsadüfi səhv istifadəni deyil, qəsdən zərərli Drop implementasiyasını tələb edir.
Reaksiya
Problemin borrow checker, destruktorlar, ömür müddətləri və variantlıq üçün etiketləri var və onu Types Team nəzarət edir. Komanda bildirdi ki, növlər sisteminin soundness-inin düzəldilməsi böyük prioritetdir, eyni zamanda növbəti nəsil trait solver üzərində iş, region constraint emalı və Project Zero. Bildirişdən dərhal sonra „fix: refuse handles in aggregate storage on both front ends“ başlıqlı commit push edildi. GitHub mövzu müvəqqəti olaraq bloklandı və onun sərt müzakirəyə səbəb olmasından sonra yalnız kolaboratorlarla məhdudlaşdırıldı.
Mənbələr: Hacker News
SiTech — AI ilə gücləndirilmiş veb hazırlanması
Sürətli və müasir saytlar qurur, AI-ı real biznes proseslərinə gətiririk. Layihəniz və ya sualınız var? Kömək etməyə hazırıq.