Zraniteľnosť v XFS, ktorá umožňuje čítanie nespracovaných údajov blokového zariadenia

V kóde systému súborov XFS bola identifikovaná chyba zabezpečenia (CVE-2021-4155), ktorá umožňuje miestnemu neprivilegovanému používateľovi čítať nepoužívané blokové dáta priamo z blokového zariadenia. Tento problém sa týka všetkých hlavných verzií linuxového jadra staršieho ako 5.16, ktoré obsahujú ovládač XFS. Oprava bola zahrnutá vo verzii 5.16, ako aj v aktualizáciách jadra 5.15.14, 5.10.91, 5.4.171, 4.19.225 atď. Stav aktualizácií generovaných na odstránenie problému v distribúciách je možné sledovať na týchto stránkach: Debian, RHEL, SUSE, Fedora, Ubuntu, Arch.

Zraniteľnosť je spôsobená nesprávnym správaním dvoch XFS špecifických ioctl(XFS_IOC_ALLOCSP) a ioctl(XFS_IOC_FREESP), ktoré sú funkčným analógom systémového volania fallocate() v celom jadre. Pri zväčšovaní veľkosti súboru, ktorý nie je zarovnaný do bloku, ioctls XFS_IOC_ALLOCSP/XFS_IOC_FREESP neresetuje koncové bajty na nulu až do ďalšej hranice bloku. Na XFS so štandardnou veľkosťou bloku 4096 bajtov teda môže útočník prečítať až 4095 bajtov predchádzajúcich zapísaných údajov z každého bloku. Tieto oblasti môžu obsahovať údaje z odstránených súborov, defragmentovaných súborov a súborov s deduplikovanými blokmi.

Svoj systém môžete otestovať na problém pomocou jednoduchého prototypu exploitu. Ak je po vykonaní navrhovanej postupnosti príkazov možné prečítať Shakespearov text, potom je ovládač FS zraniteľný. Počiatočné pripojenie oddielu XFS na demonštráciu vyžaduje oprávnenia root.

Keďže ioctl(XFS_IOC_ALLOCSP) a ioctl(XFS_IOC_FREESP) sú prakticky rovnaké ako štandardné fallocate() a ich jediným rozdielom je únik dát, ich prítomnosť je podobná ako pri zadných vrátkach. Napriek všeobecnej politike nemeniť existujúce rozhrania v jadre sa na návrh Linusa rozhodlo úplne odstrániť tieto ioctly v ďalšej verzii.

Zdroj: opennet.ru

Pridať komentár