Er is een nieuwe zeer ernstige kwetsbaarheid in de Rust-programmeertaal gemeld. De fout kan worden misbruikt om bestanden en mappen op te schonen van een blootgesteld systeem zonder de noodzaak van autorisatie.
“De Rust Security Response WG werd op de hoogte gebracht dat de std::fs::remove_dir_all standaard bibliotheekfunctie is kwetsbaar voor een race-conditie die het volgen van symlinks mogelijk maakt (CWE-363). Een aanvaller kan dit beveiligingsprobleem gebruiken om een bevoorrecht programma te misleiden om bestanden en mappen te verwijderen die de aanvaller anders niet zou kunnen openen of verwijderen,” volgens het officiële advies.
Aan de kwetsbaarheid is de identifier CVE-2022-21658 toegewezen.
Hoe kan CVE-2022-21658 worden misbruikt??
De fout zou kunnen werken als een aanvaller onbevoegde toegang tot een kwetsbaar systeem zou kunnen krijgen om een systeemmap met de naam te verwijderen gevoelig/, maar ze hadden geen toestemming om dit te doen.
Als standaard::fs::remove_dir_all gevolgde symbolische links, ze zouden een bevoorrecht programma kunnen vinden dat een map verwijdert waartoe ze toegang hebben (genaamd temp/), maak een symbolische link van temp/foo naar sensitive/, en wacht tot het bevoorrechte programma foo/. Het bevoorrechte programma zou de symbolische link volgen van temp/foo naar sensitive/ terwijl recursief verwijderd wordt, resulterend in gevoelig/verwijderd, het adviesorgaan zei.
Houd er rekening mee dat om deze aanvallen te voorkomen, std::fs::remove_dir_all heeft al bescherming tegen recursief verwijderen van symbolische links. Echter, die controle is onjuist geïmplementeerd in de standaardbibliotheek, resulterend in een TOCTOU (Tijd van controle Tijd van gebruik) conflictsituatie.
In plaats van het systeem te vertellen geen symbolische links te volgen, de standaardbibliotheek controleerde eerst of het ding dat op het punt stond te verwijderen een symbolische link was. Anders, het zou doorgaan met het recursief verwijderen van de map.
Het beschreven geval creëerde een race-conditie, waar een aanvaller een map kan maken en deze kan vervangen door een symbolische link tussen de controle en de daadwerkelijke verwijdering. Er moet worden vermeld dat de kans op succes van de aanval bij de eerste poging niet groot is. Maar uit de experimenten van de onderzoekers bleek dat ze het binnen een paar seconden betrouwbaar konden uitvoeren.
Welke roestversies worden beïnvloed??
CVE-2022-21658 beïnvloedt versies van Rust 1.0.0 door Rust 1.58.0. Het plan van de verkoper was om Rust . vrij te geven 1.58.1 in januari 20, die mitigaties voor dit beveiligingslek zouden omvatten.
Opgemerkt moet worden dat macOS vóór versie 10.10 en REDOX hebben geen bruikbare API's om de aanval goed te mitigeren, en zijn dus nog steeds kwetsbaar, zelfs met een gepatchte toolchain.
Het is merkwaardig om te vermelden dat malware-auteurs ook gebruik Rust in hun kwaadaardige programmering. Recorded Future en MalwareHunterTeam hebben op twee ondergrondse forums een nieuwe ransomware-as-a-service-speler gedetecteerd. Bekend als ALPVH en BlackCat, de ransomware-groep is de eerste die de Rust-taal gebruikt. Dit was de derde ransomware-stam die werd gecodeerd in Rust, terwijl de andere twee experimenteel zijn.