Haavatavus Rusti keele standardteegis

Rusti standardteegis avastati haavatavus (CVE-2022-21658), mis on seotud võistlusolukorraga funktsioonis std::fs::remove_dir_all(). Kui seda funktsiooni kasutatakse ajutiste failide kustutamiseks privileegiga rakenduses, võib ründaja saavutada juhuslike süsteemifailide ja kaustade kustutamise, millele tal tavaliselt juurdepääsu ei ole.

Haavatavus on põhjustatud vale sümboolsete linkide kontrolli teostamisest enne kaustade rekursiivset kustutamist. Selle asemel, et keelata sümboolsete linkide järgimine, kontrollib funtkioon remove_dir_all() esialgu, kas fail on sümboolne link. Kui link on määratud, siis kustutatakse see failina, ja kui see on kataloog, siis kutsutakse üles rekursiivne sisu kustutamine. Probleem seisneb selles, et kontrolli ja kustutamisoperatsiooni alguse vahel on lühike viivitus.

Moment, mil kontroll on juba teostatud, kuid kataloogide läbimise operatsioon kustutamiseks ei ole veel alanud, saab ründaja asendada ajutiste failide katalooge sümboolse lingiga. Kui õigel hetkel, funktsioon remove_dir_all() töötleb sümboolset linki kui katalooge ja hakkab kustutama sisu, millele see link viitab. Hoolimata sellest, et rünnaku õnnestumine sõltub katalooge asendamise täpsest ajast ja õige hetke tabamine on ebatõenäoline, on teadlased katsete käigus suutnud rünnakut edukalt korrata pärast eksploidimist vaid mõne sekundi jooksul.

Haavatavad on kõik Rusti versioonid vahemikus 1.0.0 kuni 1.58.0, sealhulgas. Probleem on ajutiselt lahendatud plaastri vormis (parandus lisatakse versiooni 1.58.1, mis on oodata mõne tunni jooksul). Haavatavuse kõrvaldamist distributsioonides saab jälgida järgmistelt lehtedelt: Debian, RHEL, SUSE, Fedora, Ubuntu, Arch, FreeBSD. Kõigile Rusti keeles kirjutatud programmide kasutajatele, mis töötavad suurenenud privileegidega ja kasutavad funktsiooni remove_dir_all, soovitatakse kiiresti uuendada Rusti versioonile 1.58.1. Huvi pärast, välja antud plaaster ei lahenda probleemi kõigis süsteemides, näiteks REDOXi OS-is ja macOS versioonides enne 10.10 (Yosemite) ei blokeerita haavatavust O_NOFOLLOW lipu puudumise tõttu, mis keelab sümboolsete linkide järgimise.

Allikas: opennet.ru

Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster