Разбор уязвимости Looney Tunables CVE 2023 4911

Разбор уязвимости Looney Tunables CVE 2023 4911
Важно: Материал опубликован исключительно в образовательных целях и предназначен для изучения принципов работы технологий, методов защиты и проведения легального тестирования безопасности. Любые проверки, сканирование, эксплуатация уязвимостей или иные действия в отношении информационных систем допускаются только при наличии явного разрешения их владельца или в специально созданной лабораторной среде. Автор и администрация Kraken не несут ответственности за неправомерное использование информации, представленной в данной статье.
Авторская статья
CTA Image

Материал подготовлен студентом Kraken Academy timeattackgame. Статья публикуется в авторской редакции и отражает личный опыт и мнение автора.

Посмотреть профиль

От автора: 

Всем доброго здравия! Не так давно я столкнулся с очень интересной машиной с описываемой в этой статье уязвимостью и хочу подробнее расрыть её для нашего сообщества. В статье мы обсудим как работает экслоит, из-за чего возникла данная уязвимость, истоия обнаружения, а так же как её  экслуатировать.

Поехали!

История обнаружения уязвимости:

В октябре 2023 исследовательская группа Qualys обнаружила критическую уязвимость CVE-2023-4911, получившую название Looney Tunables. Она позволяет обычному локальному пользователю повысить привилегии до root практически на всех современных Linux-дистрибутивах.

Уязвимость присутствует в динамическом загрузчике glibc [ld.so], который используется практически всеми программами в Linux. Это делает проблему особенно опасной: атакующий может использовать обычные системные бинарники с SUID-битом для получения root-доступа.

В этой статье разберём:

1.что такое glibc и ld.so

2.как возникла уязвимость?

3.как обнаружить уязвимую систему?

4.как выглядит эксплуатация Local Privilege Escalation?

1. Что такое glibc и ld.so

glibc (GNU C Library) — основная библиотека стандартных функций в Linux. Практически любое приложение использует её для работы с системой (файлы, память, процессы и т.д.).

ld.so (dynamic loader) — это компонент, который запускается перед выполнением программы и:

1.  загружает необходимые shared libraries

2. разрешает зависимости

3. передаёт управление бинарнику

То есть перед запуском программы система сначала выполняет ld.so. Это делает его особенно чувствительным компонентом с точки зрения безопасности.

2. Что такое GLIBC_TUNABLES

В glibc есть механизм tunable parameters — параметры, позволяющие изменять поведение библиотеки через переменные окружения.

Например:

GLIBC_TUNABLES="glibc.malloc.check=1:glibc.rtld.verbose=1"

Они используются для настройки:

поведения динамического загрузчика
оптимизаций
malloc

ld.so парсит эту переменную до запуска программы.

3. Причина уязвимости

Уязвимость вызвана heap buffer overflow при обработке переменной GLIBC_TUNABLES.

Ошибка происходит в коде парсинга строки tunables.

Упрощённая схема:

GLIBC_TUNABLES -> parser -> buffer
      ↓
incorrect bounds check
      ↓
heap overflow

Если атакующий задаёт специально сформированное значение переменной, происходит переполнение буфера и перезапись соседней памяти.

4. Почему это приводит к Root?

Уязвимость становится критичной из-за SUID-программ.

Например:

/usr/bin/passwd
/usr/bin/su
/usr/bin/mount

Если бинарник имеет SUID bit, он выполняется с правами владельца (обычно root).

1. атакующий задаёт вредоносную GLIBC_TUNABLES

2. запускает SUID программу

3. ld.so обрабатывает переменную

4. происходит heap overflow

5. attacker получает выполнение кода как root

В итоге обычный пользователь получает root shell.

На скриншоте, показана финальная отработка экслоита по переполнению буфера. В данной машине были сложности с переписыванием экслоита под уникальный ld.so build id после внесения изменений в скомпиллировный python script эксплоит заработал как надо и мы получили root.

5. Затронутые версии

Согласно документации по  CVE уязвимость затронула следующие версии:

glibc 2.34 – 2.38

Она была исправлена в glibc 2.39.

Подверженные системы:

1.Ubuntu 22.04 / 23.04

2.Debian 11 / 12

3.Fedora 37 / 38

многие другие Linux-дистрибутивы.

6. Этап обнаружения уязвимой системы

1.Проверка версии glibc командой в терминале

 ldd --version

Пример ответа в терминале:

ldd (Ubuntu GLIBC 2.37-0ubuntu2)

Если версия: 2.34 - 2.38  - система потенциально уязвима.

2. Проверка загрузчика:

ls -l /lib64/ld-linux-x86-64.so.2

или

strings /lib64/ld-linux-x86-64.so.2 | grep GLIBC

3. Проводим быстрый PoC тест, отмечу, что на некоторых системах он не сработает должным образом. Второй момент, вам может не подойти первый попавшийся эксплоит, который вы нашли, не бойтесь читать документацию и разобраться с поиском нужного эксплоита

env -i \
"GLIBC_TUNABLES=glibc.malloc.mxfast=glibc.malloc.mxfast=A" \
"Z=$(printf '%08192x' 1)" \
/usr/bin/su --help

Если система уязвима - возможен crash или abnormal behavior (ненормальное поведение). Рекомендую найти PoC который после теста загрузчика покажет уязвима версия или нет, но опять же, не стоит слепо верить и необходимо проверять самому.

7. Этап эксплуатации (LPE)

Общая логика эксплуатации: 

1.Подготовка окружения

2.Формирование payload в GLIBC_TUNABLES

3.запуск SUID бинарника

4.переполнение heap

5.выполнение кода

Упрощенный пример эксплуатации:

export GLIBC_TUNABLES="glibc.malloc.mxfast=glibc.malloc.mxfast=A"

После этого запускается SUID программа:

/usr/bin/su

Эксплоит пытается перезаписать структуры памяти внутри ld.so. Предупреждаю это займёт время, возможно отработает не с первого раза, не забывайте про терпение и внимательность к деталям.

Реальные PoC делают:

heap grooming
memory corruption
overwrite structures
spawn root shell

Пример результата:

Как я показывал на скриншоте выше это будет получение root - пользователя!

$ whoami

root

8. Почему exploit работает почти везде

Основные причины кроются в простых вещах

1.glibc используется почти во всех Linux

2. ld.so запускается перед каждым бинарником

3. на системе много SUID программ

4. exploit не требует специальных прав

Это делает CVE-2023-4911 очень удобной LPE уязвимостью для пост-эксплуатации.

Подводя итоги:

Looney Tunables - хороший пример того, как небольшая ошибка в библиотеке может привести к полной компрометации системы.

Ключевые моменты:

1.уязвимость в ld.so

2. переполнение heap через GLIBC_TUNABLES
3. эксплуатация через SUID программы4. результат - Local Privilege Escalation до root

Так, что дамы и господа, не упускайте птицу из рук и не отчаивайтесь если что-то не получается, эксперементируйте, изучайте, не бойтесь копаться и изменять код!

За сим я откланиваюсь, всем спасибо!

Следующий шаг - практика
CTA Image

Эта статья - только начало. Настоящие навыки появляются тогда, когда знания превращаются в практику. В Kraken Academy мы собрали полноценные курсы по информационной безопасности с лабораториями, практическими заданиями и пошаговыми образовательными треками - от первых шагов до уровня специалиста.

Начать обучение

Читать далее

Google начала платить издателям за вклад их материалов в ответы ИИ

Google начала платить издателям за вклад их материалов в ответы ИИ

Google начала тестировать выплаты издателям за материалы, которые помогают ее искусственному интеллекту формировать ответы пользователям. Деньги начисляют, если компания считает вклад контента в ответ достаточно значимым, сообщает Digiday. Программа получила название AI contribution pilot и работает через Google Search Console. После подключения у издателя появляется отдельный раздел с суммой заработка

Одно расширение может перехватить управление ИИ-ассистентами в пяти браузерах

Одно расширение может перехватить управление ИИ-ассистентами в пяти браузерах

Исследователи Forever Security показали, что обычное вредоносное расширение может получить контроль над встроенными ИИ-ассистентами сразу в пяти Chromium-браузерах и сервисах: Gemini Live в Chrome, Perplexity Comet, Microsoft Edge, Opera Neon, Claude in Chrome. После установки расширения атакующему достаточно одного клика, чтобы получить доступ к ИИ. В некоторых случаях

Windows 11 научится переустанавливаться через интернет, даже если система сломалась

Windows 11 научится переустанавливаться через интернет, даже если система сломалась

Microsoft тестирует Cloud Rebuild — функцию, которая позволяет переустановить Windows 11 через интернет без загрузочной флешки. Она запускается из среды восстановления WinRE, подключается к Windows Update и загружает свежий образ ОС с нужными драйверами. Перед установкой можно проверить редакцию, язык и сборку. В отличие от обычного сброса системы, Cloud Rebuild рассчитана

10 вопросов ведущему инженеру -программисту в банке

10 вопросов ведущему инженеру -программисту в банке

А в банке можно что-то придумать самому? Нейросети уже пишут код вместо разработчиков?И что нужно знать джуну, чтобы попасть в крупный финтех? Ответы - в нашей новой рубрике «10 вопросов IT-специалисту». Первым на вопросы ответил Роман - ведущий инженер-программист в банке. Без сухой теории - про работу, карьеру, выгорание,