Az Ubuntu 26.10 disztribúció csomagját, amelynek megjelenése október 15-re van ütemezve, teljesen áttértek az uutils coreutils (Rust Coreutils) eszközkészletre, amely Rust nyelven íródott. A Rust Coreutils eszközei teljes egészében helyettesítették a GNU Coreutils csomag összes komponensét, beleértve a cp, mv és rm eszközöket, amelyek az Ubuntu 26.04 verziójában a GNU Coreutils változatban voltak elérhetők.
A rust-coreutils csomagot eredetileg alapértelmezés szerint tartalmazták az Ubuntu 25.10 kiadásban, de az LTS-ágban, az Ubuntu 26.04 verzióban visszaállították a cp, mv és rm eszközök GNU Coreutils készletből való szállítását. A cp, mv és rm változatokat azért hozták vissza, mert biztonsági problémákat azonosítottak a Rust Coreutils kódalap auditálása során. A Rust Coreutils legtöbb sérülékenysége versenyhelyzetből adódik, amely lehetővé teszi az adatok megváltoztatását az érvényesítési ellenőrzés után, de az operáció végrehajtása előtt (TOCTOU — Time-Of-Check-To-Time-Of-Use). Egyebek között az ilyen sérülékenységek lehetővé teszik, hogy a fájlt szimbolikus hivatkozásra cseréljék az ellenőrzés befejezése és az operáció végrehajtásának kezdete között.
A cp, mv és rm eszközök használatának kontextusában a root jogosultságokkal futó rendszerforgatókban a szimbolikus hivatkozás behelyettesítése lehetőséget ad arra, hogy tetszőleges fájlokat másoljunk, írjunk felül vagy töröljünk. Például, amikor rekurzívan törlik a könyvtárakat, az rm eszköz először ellenőrzi az összes könyvtárat, majd azok visszafelé törlését végzi, rmdir() függvény hívásával. Ha a szülő könyvtárat egy szimbolikus hivatkozásra cseréljük az ellenőrzés után, de a benne lévő almappák ellenőrzése előtt, akkor lehetővé válik bármely könyvtár törlése a rendszerben a cron szkript napi futtatásán keresztül, amely root jogosultságokkal rekurzívan törli a /var/crash könyvtár tartalmát, amely minden felhasználó számára írható a rendszerben.
Forrás: opennet.ru
