Разбор уязвимости Looney Tunables CVE 2023 4911
Материал подготовлен студентом 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
root8. Почему 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
Так, что дамы и господа, не упускайте птицу из рук и не отчаивайтесь если что-то не получается, эксперементируйте, изучайте, не бойтесь копаться и изменять код!
За сим я откланиваюсь, всем спасибо!
Эта статья - только начало. Настоящие навыки появляются тогда, когда знания превращаются в практику. В Kraken Academy мы собрали полноценные курсы по информационной безопасности с лабораториями, практическими заданиями и пошаговыми образовательными треками - от первых шагов до уровня специалиста.

