Разбор уязвимости 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 мы собрали полноценные курсы по информационной безопасности с лабораториями, практическими заданиями и пошаговыми образовательными треками - от первых шагов до уровня специалиста.

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

Читать далее

Критическая уязвимость в чипах Unisoc: видеозвонок VoLTE открывает доступ к ядру Android

Критическая уязвимость в чипах Unisoc: видеозвонок VoLTE открывает доступ к ядру Android

Цепочка уязвимостей VoLTE может предоставить злоумышленникам полный доступ к ядру Android. Цепочка, связанная с Unisoc, начинается с удаленного выполнения кода (RCE) на модеме, а затем позволяет коду модема изменять память ядра Android. Для ее эксплуатации требуется инфраструктура 4G, контролируемая злоумышленником, а также то, чтобы жертва ответила на видеозвонок. Недостаток заключается

Уязвимость Screen Sharing в macOS используют для скрытой установки майнера Monero

Уязвимость Screen Sharing в macOS используют для скрытой установки майнера Monero

Злоумышленники используют уязвимость в функции Screen Sharing (обмен экранами) в macOS для установки майнеров криптовалюты Monero. CVE-2026-65400 используется для атак на несколько компьютеров Mac, у которых порт 5900 открыт для доступа из интернета. Компания Apple устранила эту уязвимость в срочных обновлениях для macOS. Обновления, выпущенные Apple, улучшают механизмы

AmnesiaStealer позволяет хакерам удаленно управлять браузерами Chromium на macOS

AmnesiaStealer позволяет хакерам удаленно управлять браузерами Chromium на macOS

Исследователи кибербезопасности раскрыли детали нового ориентированного на macOS, основанного на Rust похитителя информации под названием AmnesiaStealer, который способен захватывать веб-браузеры Chromium для кражи данных сеанса. Принцип работы для macOS: вредоносная программа ClickFix → вставка команды в Терминал → кража паролей и данных браузера → открытие скрытого браузера Chromium, которым злоумышленники могут управлять

737 фейковых VPN для Chrome шпионили за пользователями

737 фейковых VPN для Chrome шпионили за пользователями

Расширения для браузера Chrome под названием "737 VPN" перенаправляли трафик браузера через серверы, контролируемые злоумышленниками. Количество установок расширений, опубликованных по меньшей мере в 40 аккаунтах разработчиков Chrome Web Store, составило 75 486. Было установлено, что 274 из них выдают себя за 66 известных брендов VPN и средств защиты