Вразливість у systemd-coredump, що дозволяє визначити вміст пам'яті suid-програм

У компоненті systemd-coredump, що забезпечує обробку core-файлів, що генеруються після аварійного завершення процесів, виявлена ​​вразливість (CVE-2022-4415), що дозволяє непривілейованому локальному користувачеві визначити вміст пам'яті привілейованих процесів, запущених з прапором suid. Наявність проблеми у конфігурації за умовчанням підтверджено у дистрибутивах openSUSE, Arch, Debian, Fedora та SLES.

Вразливість викликана відсутністю коректної обробки sysctl-параметра fs.suid_dumpable в systemd-coredump, який при виставленому за умовчанням значенні 2 дозволяє генерацію core-дампів для процесів з прапором suid. Мається на увазі, що на core-файли suid-процесів, що записуються ядром, повинні виставлятися права доступу, що дозволяють читання тільки користувачеві root. Утиліта systemd-coredump, яка викликається ядром для збереження core-файлів, зберігає core-файл під ідентифікатором root, але додатково надає доступ до core-файлів на основі ACL, що допускає читання на основі ідентифікатора власника, що спочатку запустив процес.

Зазначена особливість дозволяє завантажувати core-файли, не дивлячись на те, що програма може змінити ідентифікатор користувача та виконуватися з підвищеними привілеями. Атака зводиться до того, що користувач може запустити suid-програму і відправити йому сигнал SIGSEGV, після чого завантажити вміст core-файлу, що включає зріз пам'яті процесу під час аварійного завершення.

Наприклад, користувач може запустити "/usr/bin/su" і в іншому терміналі завершити його виконання командою "kill -s SIGSEGV `pidof su`", після чого systemd-coredump збереже core-файл у каталозі /var/lib/systemd/ coredump, виставивши йому ACL, що дозволяє читання поточному користувачеві. Оскільки suid-утиліта 'su' читає на згадку вміст /etc/shadow, атакуючий може отримати доступом до інформації про хешах паролів всіх користувачів у системі. Утиліта sudo атаці не схильна, тому що забороняє генерацію core-файлів через ulimit.

За заявою розробників systemd вразливість проявляється, починаючи з випуску systemd 247 (листопад 2020 року), але за словами дослідника вразливості, що виявив проблему, схильний і випуск 246. Вразливість проявляється якщо systemd зібраний з бібліотекою libacl (за замовчуванням у всіх популярних дистриб'юторах). Виправлення поки що доступне у вигляді патча. Простежити за виправленням у дистрибутивах можна на наступних сторінках: Debian, Ubuntu, Gentoo, RHEL, SUSE, Fedora, Gentoo, Arch. В якості обхідного шляху захисту можна виставити sysctl fs.suid_dumpable значення 0, що відключає передачу дамп обробнику systemd-coredump.

Джерело: opennet.ru

Додати коментар або відгук