Уразливість в libblockdev: отримання прав root у Linux
Уразливість в Libblockdev дозволяє отримати права root у Linux системах
Компанія Qualys виявила критичну уразливість (CVE-2025-6019) в бібліотеці libblockdev, яка дозволяє через маніпуляції з фоновим процесом udisks отримати права root у системі. Прототип експлойта успішно працює в Ubuntu, Debian, Fedora та openSUSE Leap 15.
Як працює уразливість в libblockdev
Процес udisks використовується практично в усіх дистрибутивах Linux і надає інтерфейс D-Bus для виконання операцій з накопичувачами. Для здійснення дій з накопичувачами udisks викликає функції бібліотеки libblockdev.
За замовчуванням доступ до udisks відкритий лише для користувачів, що працюють у контексті “allow_active”, тобто мають фізичний доступ до комп’ютера і підключилися через локальну консоль або запустили графічний сеанс. Віддалені користувачі, наприклад ті, хто підключається через ssh, не потрапляють у цей контекст і напряму не можуть експлуатувати уразливість.
Обхід обмежень доступу
Дослідники знайшли два способи обійти обмеження доступу:
1. Використання трюку з запуском утилітою systemctl користувацького сервісу, який polkitd сприйме як ознаку локального сеансу. Обмеження методу полягає в тому, що для обману polkitd потрібно, щоб у системі вже був активний сеанс локального користувача з фізичним доступом.
2. Експлуатація уразливості (CVE-2025-6018) в PAM (Pluggable Authentication Modules). Ця проблема специфічна для налаштувань PAM в openSUSE Leap 15 та SUSE Linux Enterprise 15. У модулі pam_env в цих дистрибутивах за замовчуванням увімкнено читання файлу ~/.pam_environment, через який користувач може встановити змінні оточення, що будуть сприйняті як ознака фізичної присутності.
Механізм атаки на libblockdev
Атакуючий може примонтувати образ довільної файлової системи в loop-режимі, розмістивши в цьому образі виконуваний файл з флагом SUID root або спеціальний пристрій для низькорівневого доступу до дисків чи пам’яті.
Зазвичай образи ФС монтуються системою з флагами nosuid і nodev для блокування подібних атак. Проте уразливість в libblockdev дає можливість примонтувати образ без цих захисних флагів. Суть уразливості полягає в тому, що udisks дозволяє користувачу з рівнем доступу “allow_active” змінювати розмір своїх файлових систем, і libblockdev у процесі виконання цієї операції тимчасово монтує ФС без виставлення флагів nosuid і nodev.
Поточний статус виправлень
Уразливість в libblockdev поки усунена лише у вигляді патчів. Як обхідний шлях для блокування уразливості можна змінити правило доступу до операції “org.freedesktop.udisks2.modify-device” в polkit, змінивши в файлі /usr/share/polkit-1/actions/org.freedesktop.UDisks2.policy значення параметра “allow_active” з “yes” на “auth_admin”.
Додатково варто відзначити нещодавно розкриту уразливість (CVE-2025-6020) в пакеті linux-pam, що дозволяє локальному користувачеві отримати права root. Модуль pam_namespace належним чином не перевіряв файлові шляхи, підконтрольні користувачеві, що дозволяло через маніпуляції з символічними посиланнями і досягнення стану гонки домогтися перезапису привілейованих файлів у системі. Ця уразливість усунена у випуску linux-pam 1.7.1.
Для отримання більш детальної інформації про уразливість в libblockdev та її усунення рекомендуємо відвідати офіційну сторінку libblockdev та ознайомитися з офіційним повідомленням про виявлену уразливість.