Библиотека GNU C (GLIBC) служит библиотекой C в системе GNU и является неотъемлемой частью систем на основе Linux. По своей сути Glibc определяет основные функции для программ, включая системные вызовы и общие функции, такие как Open, Malloc, Printf и Exit. Динамический погрузчик, жизненно важный компонент GLIBC, играет ключевую роль в подготовке и выполнении программ, управляя общими библиотеками и связывая их во время выполнения.
Представленная с расширением возможностей пользователей без перекомпиляции, переменная среды Glibc_tunables позволяет пользователям изменять поведение GLIBC во время выполнения. Он предоставляет средства для настройки характеристик и параметров поведения, влияющих на запуск приложения.
Уязвимость переполнения буфера при обработке динамического загрузчика Glibc_tunables представляет критический риск безопасности. Эксплуатация предоставляет местные злоумышленники повышенные привилегии, что потенциально приводит к полному доступу к корням. Успешная эксплуатация по крупным распределениям, таким как Fedora, Ubuntu и Debian, подчеркивает серьезность и широко распространенное влияние.
Неправильное использование или эксплуатация этой уязвимости может повлиять на производительность системы, надежность и безопасность системы. Хотя детали эксплойта удерживаются, риск неизбежна, поскольку переполнения буфера могут быстро превратиться в атаки только для данных. Популярные распределения Linux с использованием GLIBC могут быть восприимчивыми, подчеркивая необходимость быстрого осознания и смягчения.
Назначен: 3 октября 2023 года
Тип: эскалация местной привилегии
Затронутые версии: Glibc 2.34 и позже
Распределения: Rhel, Ubuntu, Fedora, Debian, Amazon Linux, Gentoo и другие, использующие смягчение Glibc
Обновление: примените обновления GLIBC.
Монитор: оставайтесь в курсе консультаций по безопасности.
Обзор: Оцените использование Glibc_tunables в приложениях.
Аудит: изучить системные журналы на предмет подозрительной активности.
Ubuntu 22.04 Ubuntu Glibc 2.35-0Ubuntu3.1 SU из Util-Linux 2.37.2 ASLR на
Используется Ubuntu (версия 22.04.1) ISO для создания виртуальной машины
После успешной установки нам не нужно ничего обновлять, но мы установим пакет GIT и GNU Binutils, потому что он не найден в системе, и когда вы составляете сценарий эксплойта Python, вы столкнетесь с ошибкой.
Используя эти команды:
$ sudo apt install git
$ sudo apt install binutils
Проверьте, уязвимо ли это
$ env -i "GLIBC_TUNABLES=glibc.malloc.mxfast=glibc.malloc.mxfast=A" "Z=`printf '%08192x' 1`" /usr/bin/su --help
Если он выводит
Segmentation fault (core dumped)
то он уязвим.
Проверьте версию динамического линкера/загрузчика, часто связанной с библиотекой GNU C (GLIBC)
$ ldd --version
Вывод даст версию Glibc
ldd (Ubuntu GLIBC 2.35-0ubuntu3.6) 2.35
Copyright (C) 2022 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.
Теперь, когда мы знаем, что наша машина уязвима и готова обострить корневые привилегии
Примечание. Мы не должны устанавливать GCC на машине, если мы установим, он потеряет свою уязвимость, следовательно, сценарий не будет работать.
Поскольку у нас нет установки GCC, и нам нужно скомпилировать программу C в хост -машине, а затем импортировать ее в гостевую машину.
Мы можем собрать программу C с этой командой
$ gcc exploit.c -o (outputname)
После импорта выходного файла программы C также импортируйте сценарий Python (genlib.py).
Теперь составьте сценарий Python
$ python3 genlib.py
После составления папки «» создается.
Мы сделаем это в папке /TMP, чтобы пользователь мог выполнить скрипт и программу
Теперь, наконец, мы выполним программу, чтобы обострить корневые привилегии
$ ./(nameoftheprogram)
Это займет некоторое время и получит корневую оболочку.
Безопасно для расширения возможностей, а не эксплуатации!
Ссылки: