Vulnerabilità in a biblioteca standard Rust

Una vulnerabilità (CVE-2022-21658) hè stata identificata in a libreria standard Rust per una cundizione di razza in a funzione std::fs::remove_dir_all(). Se sta funzione hè aduprata per sguassà i fugliali tempurane in una applicazione privilegiata, un attaccu pò ottene l'eliminazione di i schedarii di u sistema arbitrariu è i cartulari chì l'attaccante ùn averebbe normalment accessu à sguassà.

A vulnerabilità hè causata da una implementazione incorrecta di cuntrollà i ligami simbolichi prima di sguassà ricursivamente i repertorii. Invece di impedisce chì i ligami simbolichi sò seguiti, remove_dir_all() verifica prima se u schedariu hè un ligame simbolicu. Se un ligame hè definitu, allora hè sguassatu cum'è un schedariu, è s'ellu hè un repertoriu, allora una operazione di rimozione di cuntenutu recursive hè chjamata. U prublema hè chì ci hè un pocu ritardu trà u cuntrollu è u principiu di l'operazione di sguassà.

À u mumentu chì a verificazione hè digià stata realizata, ma l'operazione di enumerazione di cartulari per a eliminazione ùn hè ancu principiata, l'attaccu pò rimpiazzà u cartulare cù schedarii tempurane cù un ligame simbolicu. S'ellu tocca à u mumentu propiu, a funzione remove_dir_all () trattarà u ligame simbolicu cum'è un repertoriu è cumincià à sguassà u cuntenutu à quale u ligame punta. Malgradu u fattu chì u successu di l'attaccu dipende da a precisione di u tempu sceltu di rimpiazzà u repertoriu è chjappà in u mumentu ghjustu, a prima volta hè improbabile, durante l'esperimenti, i circadori anu sappiutu ottene un attaccu di successu ripetibile dopu à eseguisce u sfruttamentu in u tempu. uni pochi di seconde.

Tutte e versioni di Rust da 1.0.0 à 1.58.0 inclusive sò affettate. U prublema hè stata risolta in forma di patch per avà (a correzione serà inclusa in a versione 1.58.1, chì hè prevista in uni pochi ore). Pudete monitorà l'eliminazione di a vulnerabilità in distribuzioni in queste pagine: Debian, RHEL, SUSE, Fedora, Ubuntu, Arch, FreeBSD. Tutti l'utilizatori di i prugrammi Rust in esecuzione cù privilegi elevati è chì utilizanu a funzione remove_dir_all sò cunsigliati per aghjurnà d'urgenza Rust à a versione 1.58.1. Hè interessante chì u patch liberatu ùn risolve micca u prublema in tutti i sistemi; per esempiu, in REDOX OS è versioni di macOS prima di 10.10 (Yosemite), a vulnerabilità ùn hè micca bluccata per l'absenza di a bandiera O_NOFOLLOW, chì disattiveghja u seguitu simbolicu. ligami.

Source: opennet.ru

Add a comment