Chyba zabezpečení v XFS, která umožňuje číst nezpracovaná data blokového zařízení

V kódu systému souborů XFS byla objevena chyba zabezpečení (CVE-2021-4155), která umožňuje místnímu neprivilegovanému uživateli číst nepoužívaná bloková data přímo z blokového zařízení. Tento problém se týká všech hlavních verzí linuxového jádra staršího než 5.16, které obsahují ovladač XFS. Oprava byla zahrnuta ve verzi 5.16, stejně jako aktualizace jádra 5.15.14, 5.10.91, 5.4.171, 4.19.225 atd. Stav generování aktualizací s odstraněním problému v distribucích lze sledovat na těchto stránkách: Debian, RHEL, SUSE, Fedora, Ubuntu, Arch.

Chyba zabezpečení je způsobena nesprávným chováním dvou ioctl(XFS_IOC_ALLOCSP) a ioctl(XFS_IOC_FREESP) specifických pro XFS, které jsou funkční obdobou systémového volání celého jádra fallocate(). Při zvětšení velikosti souboru, který není zarovnán do bloku, ioctl XFS_IOC_ALLOCSP/XFS_IOC_FREESP neresetují koncové bajty až do další hranice bloku. Na XFS se standardní velikostí bloku 4096 bajtů z každého bloku tak může útočník přečíst až 4095 bajtů dříve zapsaných dat. Tyto oblasti mohou obsahovat data z odstraněných souborů, defragmentovaných souborů a souborů s deduplikovanými bloky.

Pomocí jednoduchého prototypu exploitu můžete zkontrolovat, zda váš systém nemá problém. Pokud je po provedení navržené sekvence příkazů možné přečíst Shakespearův text, pak je ovladač FS zranitelný. Počáteční připojení oddílu XFS pro ukázku vyžaduje práva superuživatele.

Vzhledem k tomu, že ioctl(XFS_IOC_ALLOCSP) a ioctl(XFS_IOC_FREESP) jsou ve funkčnosti téměř totožné se standardním fallocate() a jejich jediným rozdílem je únik dat, jejich přítomnost je jako zadní vrátka. Navzdory obecné zásadě neměnit existující rozhraní v jádře bylo na návrh Linuse učiněno rozhodnutí zcela odstranit tyto ioctly v příští verzi.

Zdroj: opennet.ru

Přidat komentář