SÄrbarhet i Rusts standardbibliotek

I standardbiblioteket för Rust-sprÄket har en sÄrbarhet upptÀckts (CVE-2022-21658) kopplad till en kapplöpning i funktionen std::fs::remove_dir_all(). Vid anvÀndning av denna funktion för att ta bort tillfÀlliga filer i en privilegierad applikation kan en angripare uppnÄ borttagning av godtyckliga systemfiler och kataloger som normalt inte gÄr att nÄ för angriparen.

SÄrbarheten orsakas av en felaktig implementering av kontrollen av symboliska lÀnkar innan rekursiv borttagning av kataloger. IstÀllet för att förbjuda följande av symboliska lÀnkar, kontrollerar funktionen remove_dir_all() först om filen Àr en symbolisk lÀnk. Om en lÀnk identifieras, tas den bort som en fil, och om det Àr en katalog, kallas operationen för rekursiv borttagning av innehÄllet. Problemet Àr att det finns en liten försening mellan kontrollen och startpunkten för borttagningsoperationen.

I det ögonblick kontrollen redan har genomförts, men kataloggenomgÄngen för borttagning Ànnu inte har pÄbörjats, kan angriparen byta ut katalogen med tillfÀlliga filer mot en symbolisk lÀnk. Om detta görs vid rÀtt tidpunkt kommer funktionen remove_dir_all() att behandla den symboliska lÀnken som en katalog och börja ta bort det innehÄll som lÀnken pekar pÄ. Trots att framgÄngen med attacken beror pÄ noggrannhet i tidpunkten för katalogbyte och chansen att trÀffa rÀtt vid första försöket Àr liten, har forskarna lyckats uppnÄ ett upprepade gÄnger framgÄngsrikt genomförande av attacken efter att ha kört exploiten under nÄgra sekunder.

Alla versioner av Rust frÄn 1.0.0 till och med 1.58.0 Àr mottagliga för denna sÄrbarhet. Problemet har Àn sÄ lÀnge ÄtgÀrdats i form av en patch (fixen kommer att ingÄ i version 1.58.1, som förvÀntas slÀppas inom nÄgra timmar). För att följa upp pÄ hanteringen av sÄrbarheten i distributioner kan man kolla pÄ dessa sidor: Debian, RHEL, SUSE, Fedora, Ubuntu, Arch, FreeBSD. Alla anvÀndare av program skrivna i Rust, som körs med höga privilegier och anvÀnder funktionen remove_dir_all, rekommenderas att omgÄende uppdatera Rust till version 1.58.1. Intressant nog löser den utgivna patchen inte problemet pÄ alla system; till exempel, i REDOX-operativsystemet och versioner av macOS före 10.10 (Yosemite) blockeras sÄrbarheten inte pÄ grund av avsaknaden av O_NOFOLLOW-flaggan, som inaktiverar följande av symboliska lÀnkar.

KĂ€lla: opennet.ru

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster