e2fsck ievainojamība, apstrādājot īpaši izstrādātus direktorijus

e2fsck utilītprogrammā, kas tiek piegādāta kā pakotnes daļa e2fsprogs, identificēts ievainojamība (CVE-2019-5188), kas ļauj izpildīt uzbrucēja kodu, pārbaudot failu sistēmu, kurā ir īpaši izveidoti direktoriji. Ievainojamība tika apstiprināta laidienos no 1.43.3 līdz 1.45.4. Atjauninājumā novērsta ievainojamība e2fsck 1.45.5. Izplatīšanas komplektos problēma joprojām nav novērsta (Debian, Arch Linux, SUSE/openSUSE, Ubuntu, RHEL).

Ievainojamību izraisa kļūda funkcijā mute_name() failā rehash.c, kas tiek izmantota, pārbūvējot ar direktoriju saistītās jaucējtabulas, nodrošinot, ka visi direktorijā esošie faili tiek saskaņoti ar direktoriju. Ar direktoriju saistītās hash_entry struktūras bojājums var izraisīt to, ka uzbrucējs ierakstīs datus apgabalā ārpus piešķirtā bufera. Ja jaucēj tabulā vairāki faili ar vienādu nosaukumu tiek identificēti kā saistīti ar direktoriju, utilīta e2fsck pārdēvē dublētos failus, nosaukumam pievienojot ~0, ~1 utt. Lai īslaicīgi saglabātu jauno nosaukumu šādas pārdēvēšanas laikā, stekā tiek piešķirts 256 baitu buferis.

Kopējamo datu lielumu nosaka izteiksme "entry->name_len & 0xff", bet ieraksta->nosaukums_len vērtība tiek ielādēta no diska struktūras, nevis aprēķināta no nosaukuma faktiskā lieluma. Ja lielums ir nulle, masīva indekss iegūst vērtību -1 un tiek izveidoti nosacījumi vesela skaitļa pārpildei caur bufera apakšējo robežu (vesela skaitļa nepietiekamība) un citu kaudzē esošo datu pārrakstīšanai ar vērtību “~0”. 64 bitu sistēmās ievainojamības izmantošana tiek novērtēta kā maz ticama, un tai nav nepieciešami steka lieluma ierobežojumi (ulimit -s unlimited). 32 bitu sistēmām ekspluatācija tiek uzskatīta par iespējamu, taču rezultāts ir ļoti atkarīgs no tā, kā kompilators ir kompilējis izpildāmo failu.

Lai veiktu uzbrukumu, uzbrucējam noteiktā veidā jāsabojā dati nodalījumā ar ext2, ext3 vai ext4 failu sistēmu. Tā kā šai darbībai ir nepieciešamas superlietotāja privilēģijas, ievainojamība rada draudus, kad utilīta e2fsck skenē ārējos diskus vai ārēji saņemtos FS attēlus.

Avots: opennet.ru

Pievieno komentāru