Новая уязвимость Looney Tunables в Linux: что это такое, как она работает

Discussion in 'Мировые новости. Обсуждения.' started by alexzir, 5 Oct 2023.

  1. alexzir

    alexzir Well-Known Member

    Joined:
    29 Oct 2019
    Messages:
    962
    Likes Received:
    2,311
    Reputations:
    25
    Уязвимость в glibc ставит под угрозу большинство Linux систем.

    [​IMG]
    Группа Qualys Threat Research Unit (TRU) обнаружила новую уязвимость в системах Linux, которая может предоставить злоумышленнику полный контроль над затронутыми системами. Ошибка получила название «Looney Tunables» и связана с обработкой переменной окружения GLIBC_TUNABLES в динамическом загрузчике библиотеки GNU C (glibc).

    Уязвимость CVE-2023-4911 (CVSS: 7.8) классифицирована как переполнение буфера и может позволить киберпреступнику локально повысить привилегии, получив доступ на уровне root. Специалисты Qualys TRU продемонстрировали успешное эксплуатирование уязвимости на стандартных установках некоторых дистрибутивов Linux, включая Fedora 37 и 38, Ubuntu 22.04 и 23.04, а также Debian 12 и 13. С момента появления недостатка в апреле 2021 года множество систем находятся под угрозой.

    Стоит отметить, что, несмотря на идентификацию уязвимостей в конкретных дистрибутивах Linux, возможно, другие дистрибутивы также подвержены угрозе. Однако Alpine Linux остается исключением из-за использования musl libc вместо glibc.

    Библиотека GNU C, часто называемая glibc, является фундаментальным компонентом систем Linux, обеспечивая основные функции и системные вызовы для правильной работы программ. В glibc динамический загрузчик играет критическую роль в подготовке и выполнении программ.

    По данным Qualys, уязвимость сосредоточена вокруг переменной окружения GLIBC_TUNABLES, введенной для возможности пользователей изменять поведение библиотеки во время выполнения без перекомпиляции.

    Переполнение буфера в обработке GLIBC_TUNABLES динамическим загрузчиком является серьезной угрозой для дистрибутивов Linux. Неправильное использование или эксплуатация переменной окружения может серьезно повлиять на производительность, надежность и безопасность систем.

     
    b3 likes this.
  2. alexzir

    alexzir Well-Known Member

    Joined:
    29 Oct 2019
    Messages:
    962
    Likes Received:
    2,311
    Reputations:
    25
    Компания Qualys выявила опасную уязвимость (CVE-2023-4911) в компоновщике ld.so, поставляемом в составе системной Си-библиотеки Glibc (GNU libc). Уязвимость, которой присвоено кодовое имя "Looney Tunables", позволяет локальному пользователю поднять свои привилегии в системе через указание специально оформленных данных в переменной окружения GLIBC_TUNABLES перед запуском исполняемого файла с флагом suid root, например, /usr/bin/su.

    Возможность успешной эксплуатации уязвимости продемонстрирована в Fedora 37 и 38, Ubuntu 22.04 и 23.04, Debian 11, 12 и 13. Предполагается, что уязвимость проявляется и в любых других дистрибутивах, использующих Glibc. Дистрибутивы на базе системной Си-библиотеки Musl, такие как Alpine Linux, проблеме не подвержены. Уязвимость устранена в патче, добавленном 2 октября. Проследить за выпуском обновлений пакетов в дистрибутивах можно на страницах Debian, Ubuntu, RHEL, SUSE/openSUSE, Fedora, Arch, Gentoo, ALT Linux.

    Уязвимость вызвана изменением, внесённым в апреле 2021 года и вошедшим в состав выпуска glibc 2.34. Из-за ошибки в коде разбора строки, указанной в переменной окружения GLIBC_TUNABLES, некорректная комбинация параметров в данной переменной приводит к записи разобранного значения за пределы выделенного буфера. Проблема проявляется когда вместо штатных последовательностей "name=val", параметры заданы в форме c двойным присвоением "name=name=val". В этом случае присвоение обрабатывается дважды, вначале как "name=name=val", а потом как "name=val". Из-за подобной двойной обработки образуется результат "name=name=val:name=val", размер которого превышает размер буфера tunestr.

    Исследователями подготовлен стабильно работающий эксплоит, который позволяет получить права root при применении практически с любой программой с флагом suid root. Исключение составляют утилита sudo (меняет значение ELF RUNPATH), утилиты chage и passwd в Fedora (защищены отдельными правилами SELinux) и утилита snap-confine в Ubuntu (защищена отдельными правилами AppArmor). Предложенный метод эксплуатации также не работает в RHEL 8 и RHEL 9, хотя данные ветки и подвержены уязвимости (для атаки требуется создание иного эксплоита). Код эксплоита будет опубликован позднее после повсеместного устранения уязвимости. Проверить подверженность своей системы уязвимости можно ниже указанной командой, которая в случае наличия проблемы завершится крахом:

    env -i "GLIBC_TUNABLES=glibc.malloc.mxfast=glibc.malloc.mxfast=A" "Z=`printf '%08192x' 1`" /usr/bin/su --help
    Отдельно отмечается устранение в Glibc ещё двух уязвимостей:
    • CVE-2023-4806 - обращение к уже освобождённой области памяти (use-after-free) в функции getaddrinfo(), проявляющееся когда NSS-плагин реализует только call-back-вызовы "_gethostbyname2_r" и "_getcanonname_r", но не поддерживает вызов "_gethostbyname3_r". Для эксплуатации уязвимости DNS-сервер должен вернуть для запрошенного хоста большое число адресов IPv6 и IPv4, что приведёт к краху процесса, вызвавшего функцию getaddrinfo для семейства AF_INET6 при выставлении флагов AI_CANONNAME, AI_ALL и AI_V4MAPPED.
    • CVE-2023-5156 (затрагивает только версии с первоначальным исправлением CVE-2023-4806) - утечка содержимого памяти при вызове функции getaddrinfo для семейства адресов AF_INET6 с выставленными флагами AI_CANONNAME, AI_ALL и AI_V4MAPPED.
    Дополнение: Доступны рабочие прототипы эксплоитов, созданные не связанными с Qualys исследователями: Первый протестирован в Ubuntu 22.04.3, второй - в Ubuntu 22.10.

     
    b3 and elastik_work like this.
Loading...