e2fsck - це інструмент fsck, що належить до пакету e2fsprogs який підтримує набір утиліт для обслуговування файлових систем ext2, ext3 та ext4. Оскільки це, як правило, файлові системи за замовчуванням для дистрибутивів Linux, пакет e2fsprogs зазвичай вважається важливим програмним забезпеченням.
e2fsck відповідає за пошук та виправлення невідповідностей у файлових системах на Linux. Нещодавно у цій утиліті була виявлена вразливість який Він уже занесений у CVE-2019-5188 а дослідник Ліліт із компанії Cisco Talos виявив уразливість виконання коду.
Ця вразливість виявлена дозволяє зловмиснику виконувати розроблений код для цього тоді як утиліта e2fsck сканує файлову систему Він містить спеціально створені каталоги.
Уразливість CVE-2019-5188 підтверджено у версіях e2fsprogs 1.43.3, 1.43.4, 1.43.5, 1.43.6, 1.43.7, 1.43.8, 1.43.9, 1.44.0, 1.44.1, 1.44.2, 1.44.3, 1.44.4, 1.44.5, 1.44.6, 1.45.0, 1.45.1, 1.45.2.
Вразливість спричинена помилкою у функції mutate_name() з файлу rehash.c, Використовується під час відновлення хеш-таблиць, пов’язаних з каталогу, які забезпечують відображення каталогів для всіх файлів, які він містить.
Про вразливість CVE-2019-5188
У звіті дослідника сказано, що:
У рамках реалізації каталогів у ext2,3,4 є багато структур даних, необхідних для оптимізації розміру файлів на диску...
Уразливість виконання коду існує у функціоналі зміни каталогів E2fsprogs e2fsck 1.45.4. Спеціально створений каталог ext4 може спричинити виведення за межі стека, що призводить до виконання коду. Зловмисник може пошкодити розділ, щоб активувати цю вразливість.
Пошкодження структури, пов’язаної з довідниками hash_entry це може змусити зловмисника писати в область за межами виділеного буфера.
Якщо в хеш-таблиці посилання на каталог знайдено кілька файлів з однаковим іменем, утиліта e2fsck перейменовує дублікати файлів із ~ 0, ~ 1 тощо, доданими до імені. Для тимчасового зберігання нового імені із подібною зміною імені у стеку виділено 256-байтний буфер.
Розмір скопійованих даних визначається виразом «entry-> name_len & 0xff », але значення entry-> name_len він завантажується зі структури на диск і не обчислюється на основі фактичного розміру імені.
Якщо розмір дорівнює нулю, індекс масиву приймає значення -1 і створюються умови для переливу цілих чисел через нижню межу буфера (переповнення цілого числа) та переписування інших даних у стеці зі значенням "~ 0".
Для 64-розрядних систем використання вразливості вважається малоймовірним і не вимагає обмежень розміру стека (ulimit -s необмежений).
Для 32-розрядних систем операція вважається можливою, але результат багато в чому залежить від того, як компілятор виконав виконуваний файл.
Щоб здійснити напад, зловмисникові потрібно пошкодити дані системного розділу ext2, ext3 або ext4 певним чином.
З тих пір ця операція вимагає привілеїв суперкористувача, вразливість представляє загрозу, коли утиліта e2fsck перевіряє зовнішні накопичувачі або зображення FS, отримані зовні.
Важливо зазначити це цю вразливість не можна використовувати віддалено, тому воно обмежується лише локальною експлуатацією, оскільки воно єЗловмисник повинен мати облікові дані для автентифікації та успішно пройти автентифікацію в системі.
Виявлення вразливості було опубліковано в перший день цього року, а рекомендації були передані спільноті. Дослідник, який виявив цю вразливість, не публічно повідомляв про технічні подробиці та подвиг. Отже, уразливість була виправлена в оновленні e2fsck 1.45.5.
На даний момент в наступних розподілах (Debian, Ubuntu, Arch Linux, SUSE / openSUSE, RHEL) проблема залишається невиправленою незважаючи на те, що звіт був зроблений більше тижня тому.
Якщо ви хочете дізнатись більше про виявлену вразливість, ви можете дізнатись інформацію та подробиці про неї, зв’язавшись за наступним посиланням.