Kwetsbaarheid in de standaardbibliotheek van de Rust-taal

In de standaardbibliotheek van de Rust-taal is een kwetsbaarheid (CVE-2022-21658) aangetroffen, gerelateerd aan een raceconditie in de functie std::fs::remove_dir_all(). Bij gebruik van deze functie voor het verwijderen van tijdelijke bestanden in een geprivilegieerde applicatie, kan een aanvaller willekeurige systeembestanden en mappen verwijderen waar de aanvaller normaal gesproken geen toegang toe heeft.

De kwetsbaarheid wordt veroorzaakt door een onjuiste implementatie van de controle op symbolische links vóór het recursief verwijderen van mappen. In plaats van het volgen van symbolische links te verbieden, controleert de functie remove_dir_all() eerst of het bestand een symbolische link is. Als dit het geval is, wordt de link als bestand verwijderd, en als het een map is, wordt de recursieve verwijdering van de inhoud uitgevoerd. Het probleem is dat er een kleine vertraging is tussen de controle en het begin van de verwijderingsoperatie.

Op het moment dat de controle is voltooid, maar de operatie om de mappen voor verwijdering te doorlopen nog niet is gestart, kan de aanvaller de map met tijdelijke bestanden vervangen door een symbolische link. Als dit op het juiste moment gebeurt, behandelt de functie remove_dir_all() de symbolische link als een map en begint het met het verwijderen van de inhoud waar deze link naar verwijst. Ondanks dat het succes van de aanval afhangt van de precisie van het gekozen vervangmoment en de kans om dit in ƩƩn keer goed te hebben klein is, hebben onderzoekers in experimenten een herhaalbare succesvolle uitvoering van de aanval kunnen bereiken nadat de exploit enkele seconden was uitgevoerd.

Alle versies van Rust van 1.0.0 tot en met 1.58.0 zijn kwetsbaar. Het probleem is voorlopig opgelost in de vorm van een patch (de fix wordt opgenomen in release 1.58.1, die binnen enkele uren wordt verwacht). De voortgang van de oplossing van de kwetsbaarheid in de distributies kan worden gevolgd op de volgende pagina's: Debian, RHEL, SUSE, Fedora, Ubuntu, Arch, FreeBSD. Alle gebruikers van programma's in de Rust-taal die met verhoogde privileges draaien en de functie remove_dir_all gebruiken, wordt aangeraden dringend Rust bij te werken naar versie 1.58.1. Interessant is dat de uitgegeven patch het probleem niet op alle systemen oplost; bijvoorbeeld in het REDOX-besturingssysteem en versies van macOS tot 10.10 (Yosemite) wordt de kwetsbaarheid niet geblokkeerd vanwege het ontbreken van de O_NOFOLLOW-vlag, die het volgen van symbolische links uitschakelt.

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers šŸ”„ Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster