Sebezhetőség a Rust programozási nyelv szabványos könyvtárában

A Rust nyelv alapkönyvtárában felfedeztek egy sebezhetőséget (CVE-2022-21658), amely versenyhelyzetből ered a std::fs::remove_dir_all() függvényben. Ha ezt a függvényt egy privilegizált alkalmazásban használják ideiglenes fájlok törlésére, akkor a támadó képes lehet tetszőleges rendszerfájlok és mappák törlésére, amelyekhez normális körülmények között nincs hozzáférése.

A sebezhetőséget a szimbolikus linkek helytelen ellenőrzése okozza a könyvtárak rekurzív törlése előtt. A remove_dir_all() függvény nem akadályozza meg a szimbolikus linkeken való áthaladást, hanem először ellenőrzi, hogy a fájl szimbolikus link-e. Ha a link definiált, akkor azt fájlként távolítja el, ha pedig könyvtár, akkor megkezdi a tartalom rekurzív törlését. A probléma abban rejlik, hogy az ellenőrzés és a törlési művelet megkezdése között egy kis késleltetés van.

Abban a pillanatban, amikor az ellenőrzés már megtörtént, de a könyvtárak törlésére szolgáló művelet még nem kezdődött el, a támadó kicserélheti az ideiglenes fájlokat tartalmazó könyvtárat egy szimbolikus linkre. Ha a megfelelő időpontban történik, a remove_dir_all() függvény úgy dolgozza fel a szimbolikus linket, mint egy könyvtárat, és elindítja a törlést, amelyre ez a link mutat. Annak ellenére, hogy a támadás sikere a könyvtár cseréjének pontos időzítésétől függ, és a megfelelő pillanatba való elhelyezkedés valószínűsége alacsony, a kutatók kísérleteik során sikeresen végrehajtották a támadást, miután a kihasználást néhány másodpercen belül végrehajtották.

A sebezhetőségek minden Rust verziót érintenek az 1.0.0-tól 1.58.0-ig bezárólag. A probléma jelenleg javítva van egy javítással (a javítást a 1.58.1-es kiadásba fogják beilleszteni, amely néhány órán belül várható). A sebezhetőség megszüntetését a disztribúciós oldalak követhetők: Debian, RHEL, SUSE, Fedora, Ubuntu, Arch, FreeBSD. Minden, Rust nyelven készült program felhasználónak, amelyet emelt szintű jogosultságokkal futtatnak és használja a remove_dir_all függvényt, sürgősen javasolt frissítenie a Rust-ot a 1.58.1-es verzióra. Érdekesség, hogy a kiadott javítás nem oldja meg a problémát minden rendszeren, például a REDOX operációs rendszeren és a macOS 10.10 (Yosemite) alatti verziókban a sebezhetőség nem blokkolható az O_NOFOLLOW jelző hiánya miatt, amely megakadályozza a szimbolikus linkeken való követést.

Forrás: opennet.ru

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster