Уязвимость в e2fsck, проявляющаяся при обработке специально оформленных каталогов

В утилите e2fsck, поставляемой в составе пакета e2fsprogs, выявлена уязвимость (CVE-2019-5188), позволяющая добиться выполнения кода злоумышленника при выполнении проверки файловой системы, содержащей специальным образом оформленные каталоги. Наличие уязвимости подтверждено в выпусках с 1.43.3 по 1.45.4. Уязвимость устранена в обновлении e2fsck 1.45.5. В дистрибутивах проблема пока остаётся неисправленной (Debian, Arch Linux, SUSE/openSUSE, Ubuntu, RHEL).

Уязвимость вызвана ошибкой в функция mutate_name() из файла rehash.c, применяемой при перестроении связанных с каталогом хэш-таблиц, обеспечивающих сопоставление с каталогом всех находящихся в нём файлов. Повреждение связанной с каталогом структуры hash_entry может привести к записи данных атакующего в область вне выделенного буфера. В случае выявления в хэш-таблице привязки к каталогу нескольких файлов с одинаковым именем, утилита e2fsck переименовывает повторяющиеся файлы с добавлением к имени ~0, ~1 и т.п. Для временного хранения нового имени при подобном переименовании в стеке выделяется буфер, размером 256 байт.

Размер копируемых данных определяется выражением «entry->name_len & 0xff», но значение entry->name_len загружается из структуры на диске, а не вычисляется на основе фактического размера имени. Если размер равен нулю, то индекс массива принимает значение -1 и создаются условия для целочисленного переполнения через нижнюю границу буфера (integer underflow) и перезаписи других данных в стеке значением «~0». Для 64-разрядных систем эксплуатация уязвимости оценивается как маловероятная и требующая отсутствия ограничений на размер стека (ulimit -s unlimited). Для 32-разрядных систем эксплуатация считается возможной, но результат сильно зависит от того, как был собран исполняемый файл компилятором.

Для совершения атаки злоумышленнику необходимо определённым образом повредить данные в разделе с ФС ext2, ext3 или ext4. Так как данная операция требует наличия привилегий суперпользователя, уязвимость представляет угрозу при проверке утилитой e2fsck внешних накопителей или полученных извне образов ФС.

Источник: http://www.opennet.ru/opennews/art.shtml?num=52162