Вразливість у ld.so OpenBSD

Динамічний завантажувач ld.так, що входить до складу OpenBSD, за певних умов SUID/SGID-додатки залишити змінну оточення LD_LIBRARY_PATH і таким чином дозволити завантажити сторонній код у контексті процесу, що виконується з підвищеними привілеями. Патчі з виправленням уразливості доступні для релізів 6.5 и 6.6. Бінарні патчі (syspatch) для платформ amd64, i386 та arm64 вже запущені у виробництво і повинні бути доступні для завантаження до моменту публікації цієї новини.

Суть проблеми: під час роботи ld.so спочатку витягує з оточення значення змінної LD_LIBRARY_PATH, за допомогою функції _dl_split_path() перетворює його на масив рядків — шляхів до каталогів. Якщо пізніше з'ясовується, що поточний процес запущений SUID/SGID-додатком, створений масив і, власне, змінна LD_LIBRARY_PATH очищаються. При цьому, якщо в ході роботи _dl_split_path() зіткнеться з нестачею пам'яті (що важко через наявність явного обмеження на розмір змінних оточення в 256 кБайт, але теоретично можливо), то змінна _dl_libpath отримає значення NULL, і наступна перевірка значення цієї змінної застави пропустити виклик _dl_unsetenv("LD_LIBRARY_PATH").

Вразливість знайдена фахівцями Кваліс, так само як і дещо раніше розкритих проблем. Дослідники безпеки, що виявили вразливість, відзначили оперативність вирішення проблеми: патч був підготовлений, і оновлення випущені протягом трьох годин після отримання повідомлення проектом OpenBSD.

Додаток: Проблемі надано номер CVE-2019-19726. У списку розсилки oss-security зроблено офіційний анонс, що включає прототип експлоїту, що працює в OpenBSD 6.6, 6.5, 6.2 та 6.1 на архітектурах
amd64 та i386 (експлоїт може бути адаптований і для інших архітектур).
Проблема експлуатується в установці за замовчуванням і дозволяє непривілейованому локальному користувачеві виконати код з правами root через підстановку бібліотеки під час запуску suid-утиліт chpass або passwd. Для створення необхідних умов нестачі пам'яті використовується установка обмеження RLIMIT_DATA через setrlimit.

Джерело: opennet.ru

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