Der er rapporteret om en ny sårbarhed med høj alvorlighed i programmeringssproget Rust. Fejlen kunne udnyttes til at rense filer og mapper fra et eksponeret system uden behov for autorisation.
"Rust Security Response WG blev underrettet om, at std::fs::remove_dir_all standard biblioteksfunktion er sårbar over for en race-tilstand, der muliggør symlink-følgning (CWE-363). En angriber kan bruge dette sikkerhedsproblem til at narre et privilegeret program til at slette filer og mapper, som angriberen ellers ikke kunne få adgang til eller slette,” ifølge den officielle rådgivning.
Sårbarheden er blevet tildelt CVE-2022-21658 identifikatoren.
Hvordan kan CVE-2022-21658 udnyttes?
Fejlen kunne virke, hvis en angriber kunne få uprivilegeret adgang til et sårbart system for at slette en systemmappe kaldet følsom/, men de manglede tilladelser til det.
Hvis std::fs::remove_dir_all fulgte symbolske links, de kunne finde et privilegeret program, der fjerner en mappe, de har adgang til (kaldet temp/), opret et symbollink fra temp/foo til sensitiv/, og vent på, at det privilegerede program sletter foo/. Det privilegerede program ville følge symbollinket fra temp/foo til sensitive/ mens det rekursivt sletter, resulterer i, at følsomme/slettes, det rådgivende sagde.
Bemærk, at for at forhindre disse angreb, std::fs::remove_dir_all har allerede beskyttelse mod rekursiv sletning af symbollinks. Men, denne kontrol blev implementeret forkert i standardbiblioteket, resulterer i en TOCTOU (Tidspunkt for kontrol Tidspunkt for brug) race condition.
I stedet for at fortælle systemet ikke at følge symbolske links, standardbiblioteket tjekkede først, om det, det var ved at slette, var et symbollink. Ellers, det ville fortsætte med at rekursivt slette mappen.
Det beskrevne tilfælde skabte en racetilstand, hvor en angriber kunne oprette en mappe og erstatte den med et symbollink mellem kontrollen og den faktiske sletning. Det skal nævnes, at sandsynligheden for at angrebet lykkes i første forsøg ikke er stor. Men forskernes eksperimenter viste, at de kunne udføre det pålideligt inden for et par sekunder.
Hvilke rustversioner er berørt?
CVE-2022-21658 påvirker versioner af Rust 1.0.0 gennem Rust 1.58.0. Sælgerens plan var at frigive Rust 1.58.1 den januar 20, som ville omfatte afbødning af denne sårbarhed.
Det skal bemærkes, at macOS før version 10.10 og REDOX har ikke brugbare API'er til korrekt at afbøde angrebet, og er dermed stadig sårbare selv med en lappet værktøjskæde.
Det er nysgerrigt at nævne, at malware forfattere også bruge Rust i deres ondsindede programmering. En ny ransomware-as-a-service-afspiller blev opdaget af Recorded Future og MalwareHunterTeam på to underjordiske fora. Kendt som ALPVH og BlackCat, ransomware-gruppen er den første til at bruge Rust-sproget. Dette var den tredje ransomware-stamme, der blev kodet i Rust, hvor de to andre er eksperimentelle.