The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Уязвимость в Glibc, затрагивающая статически собранные suid-файлы с dlopen

19.05.2025 23:21

В стандартной Си-библиотеке Glibc выявлена уязвимость (CVE-2025-4802), позволяющая добиться выполнения кода с привилегиями другого пользователя, выставляемыми при запуске приложений с флагом suid. Опасность проблемы сводят на нет условия, при которых она проявляется - разработчики Glibc не смогли найти ни одной suid-программы, к которой была бы применима найденная уязвимость. При этом не исключено, что в обиходе могут использоваться собственные suid-программы, удовлетворяющие условиям совершения атаки.

Эксплуатация уязвимости возможна только для статически собранных suid-программ, вызывающих функцию dlopen. Помимо программ, напрямую вызывающих dlopen, уязвимость затрагивает и программы, в которых функция dlopen выполняется косвенно, как следствие вызова setlocale или NSS-функций, таких как getaddrinfo.

Проблема вызвана обработкой переменной окружения LD_LIBRARY_PATH в контексте suid-приложений в случае вызова dlopen из статически собранных программ (игнорирование LD_LIBRARY_PATH срабатывало только при динамической компоновке). Через выставление пути в LD_LIBRARY_PATH атакующий может организовать загрузку подставной библиотеки из своего каталога. Уязвимость проявляется начиная с версии Glibc 2.27 (февраль 2018 года) и устранена в выпуске Glibc 2.39 (февраль 2024 года).

  1. Главная ссылка к новости (https://www.openwall.com/lists...)
  2. OpenNews: Проект Landrun развивает непривилегированную систему изоляции приложений
  3. OpenNews: Уязвимость в NetworkManager-libreswan и guix-daemon, позволяющие повысить привилегии в системе
  4. OpenNews: Леннарт Поттеринг представил run0, замену sudo, интегрированную в systemd
  5. OpenNews: Уязвимость в glibc, позволяющая получить root-доступ в системе
  6. OpenNews: Выпуск GNU inetutils 2.5 с устранением уязвимости в suid-приложениях
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/63269-glibc
Ключевые слова: glibc
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (40) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 00:35, 20/05/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +6 +/
    когда уже выпилят этот сломанный статический nss и dlopen? Он никогда не работает и только проблемы создаёт, Обычно бинарники собирают статически не чтобы из них dlopen делать.
    Статический ffmpeg на дебиане вообще сегфолтится при попытке ресолвинга, очень полезно!!!
     
     
  • 2.8, openssh_user (ok), 07:51, 20/05/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Можно пример, на каком моменте вы ловите segfault?
     
     
  • 3.10, fi (ok), 09:26, 20/05/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Это известный баг - когда nss от другой libc -  такое блюдо надо уметь готовить.

    Но что странно - так то что ссылаются на

    2017-12-19  Dmitry V. Levin  <ldv@altlinux.org>

            * elf/dl-load.c (is_trusted_path): Remove.
            (fillin_rpath): Remove check_trusted argument and its use,
            all callers changed.

    кто-то внес "оптимизацию" )))))

     
     
  • 4.36, Аноним (36), 18:50, 20/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Левин небось за это повышение получил. Может даже старлея дали.
     
     
  • 5.38, Аноним (38), 20:06, 20/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Так он её выпилил как раз потому, что она нигде не используется. Очень похоже, что кто-то с помощью нейросетки пытается поднять себе KPI, внося тормоза в нормальный код.
     
  • 3.42, Аноним (42), 23:22, 20/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    ~$  /usr/lib/x86_64-linux-gnu/libc.so.6
    GNU C Library (Debian GLIBC 2.36-9+deb12u9) stable release version 2.36.
    Запустить  ffmpeg-7.0.2-amd64-static отсюда:
    https://johnvansickle.com/ffmpeg/
    и попытаться сделать любой сетевой запрос, как-то связанный с nss, например подать ссылку с любым доменом на вход приводит к сегфолту. На других версиях обычно был не сегфолт, а просто ресолвинг не работал.
    Претензия в том, что в статический билд вообще попадает динамическая загрузка nss. Вместо этого должен быть либо стаб, либо фоллбэк, поддерживающий какую-то минимальную конфигурацию
     
  • 2.17, Аноним (17), 11:50, 20/05/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Удивительно что для статической сборки кто-то использует glibc, разве это не киллер фичи компактных реализаций uclibc и musl.
     
     
  • 3.43, Аноним (42), 23:24, 20/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    В посте выше ссылка на сайт со статическими билдами и там зачем-то glibc (а помимо прочего ещё и x11 влинкован).
     
  • 2.49, Аноним (49), 11:34, 21/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > когда уже выпилят этот сломанный статический nss и dlopen
    > разработчики Glibc не смогли найти ни одной suid-программы, к которой была бы применима найденная уязвимость

    когда начнут находить, тогда может кто и профинансирует выпиливание.

     

  • 1.2, Аноним (-), 01:36, 20/05/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +12 +/
    > затрагивающая статически собранные suid-файлы с dlopen

    А теперь коронный номер - поза "фантомас в очках на аэроплане".

     
     
  • 2.26, Жироватт (ok), 13:58, 20/05/2025 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Скорее уж "Товарищ милиционер, а вот если залезть на шкаф и воооот така вооооот выгнуть восьмёркой шею, то можно увидеть в бинокль голых девок в бане на том конце улицы! Примите меры!".
     

  • 1.3, Xasd9 (?), 03:26, 20/05/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –11 +/
    лучше бы запретили бы статическую сборку и не е***и бы мозги
     
     
  • 2.4, Аноним (1), 04:10, 20/05/2025 [^] [^^] [^^^] [ответить]  
  • +4 +/
    зачем, когда можно её починить, а не пихать туда сомнительные вещи?
     
  • 2.11, adolfus (ok), 09:34, 20/05/2025 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Статическая сборка хороша тем, что приложение использует меньше физической памяти и работает быстрее. Каждая .so независимо от реального размера загружаемого содержимого требует, минимум, три собственных страницы физической памяти, а статическая ровно столько, сколько занимает сама библиотека. Первый вызов функции из .so требует некоторого дополнительного времени на некотороые системные действия, что особенно заметно в интерактивных приложениях, котороые во время инициализации интерфейса выполняют десятки вызовов. Выглядит это как тормоза и достигают эти тормоза нескольких секунд.
     
     
  • 3.12, Аноним (12), 09:57, 20/05/2025 [^] [^^] [^^^] [ответить]  
  • +6 +/
    > приложение использует меньше физической памяти

    Не неси чушь. SO либы в юнискосых системах расшарены, т.е. библиотека загружается ровно один раз даже если ее использует 100 программ.

    В отличие от статической линковки, лол.

    > некоторого дополнительного времени
    > некотороые системные действия

    А, сори, у нас тут эксперт в треде. Чему я удивляюсь...

     
     
  • 4.22, Аноним (-), 12:28, 20/05/2025 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > библиотека загружается ровно один раз даже если ее использует 100 программ.

    Зато с статической линковкой работает LTO. А с шареными либами - нет.
    Нужно ли lto или лучше пару мегабайт сэкономить - каждый решает сам.

     
     
  • 5.23, Аноним (12), 12:32, 20/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Зато с статической линковкой работает LTO. А с шареными либами - нет.

    Ну как бы логично, нет? На то они и шареные.

     
     
  • 6.25, Аноним (-), 12:48, 20/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Ну как бы логично, нет? На то они и шареные.

    Конечно логично, я же об этом и написал.
    Но то, что оно не пашет это недостаток этого самого шаренья. Просто все так расписывают преимущества shared libs, как будто у них нет недостатков.

    А вот мне не жалко небольшого увеличения размера аппы ради небольшого увеличения производительности.


     
     
  • 7.31, Аноним (31), 14:37, 20/05/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Если логика вашей программы настолько сильно упирается в скорость вызова какой-то функции из другой библиотеки, а не в IO, например, то либо статично компилируйтесь с этой библиотекой, либо чините компиляцию / меняйте компилятор.
     
     
  • 8.34, Аноним (34), 16:57, 20/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Так не пойдёт Байты всё равно надо откуда-то прочитать Количество байт от мето... текст свёрнут, показать
     
  • 5.41, adolfus (ok), 22:23, 20/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Ничего вы по памяти не сэкономите. Загруженная ранее .so будет отображена полностью в ваше адресное пространство, даже если вы из нее используете маленькую функцию. Это в отношени кода. Плюс у вас будет отображение секций инициализированных данных и неинициализированных, даже если функция, которую вы вызываете, их не использует. Именно поэтому вместе с .so нормальные пакеты предоставляют .a, собранные из мелких объектных модулей, ни на какие другие не ссылающиеся. Это для тех, кто понимает, что такое динамическое связывание и чем оно отличается от статического.
    Я пишу, в основном, математику и если заказчик не возражает, использую gsl, которую сам компилирую и собираю как в .so, так и в .a, так что разницу в призводительности и в отношении свободной памяти в куче (malloc) чувствую непосредственно.
     
  • 5.47, Аноним (-), 00:26, 21/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Зато с статической линковкой работает LTO. А с шареными либами - нет.
    > Нужно ли lto или лучше пару мегабайт сэкономить - каждый решает сам.

    Как бы тебе сказать то? Вгрузить в RAM 10 инстансов кутей, допустим, никак не пару мегабайт экономии будет. Вот 200 мегов RAM - это еще может быть.

     
  • 3.14, Соль земли2 (?), 10:56, 20/05/2025 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > Статическая сборка хороша тем, что приложение использует меньше физической памяти и работает быстрее.

    Извиняюсь, но как раз динамическая сборка нужна, чтобы динамический линковщик при открытии библиотеки взял уже загруженный в shared памяти файл библиотеки.

     
     
  • 4.50, adolfus (ok), 13:49, 23/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    >> Статическая сборка хороша тем, что приложение использует меньше физической памяти и работает быстрее.
    > Извиняюсь, но как раз динамическая сборка нужна, чтобы динамический линковщик при открытии
    > библиотеки взял уже загруженный в shared памяти файл библиотеки.

    Динамическая сборка годится только тогда, когда общая библиотека используется несколькими программами и в этом случае память, возможно, экономится. Кто-то первый загрузил и остальные уже используют загруженное, отображая библиотеку в свое адресное пространство.
    "Единоличное" же использование общих библиотек одним приложением не имеет особого смысла, поскольку кроме этого приложения никакое другое этими библиотеками пользоваться не может и этому приложению в любом случае придется всякий раз их загружать и привязывать.

     
  • 3.15, Аноним (15), 10:57, 20/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Статическая сборка хороша как минимум тем, что приложение будет более-менее гарантированно работать, вот это её главный плюс. Идея разделяемых библиотек в линуксе с треском провалилась, в винде оно как-то криво-косо, но работает.
     
     
  • 4.16, Аноним (12), 11:37, 20/05/2025 [^] [^^] [^^^] [ответить]  
  • +6 +/
    > Идея разделяемых библиотек в линуксе с треском провалилась

    "Но шмель об этом не знает и продолжает летать..."

     
     
  • 5.18, Аноним (15), 12:12, 20/05/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Да, до момента появления сообщения «у вас .so версии 2.11, а нужно 2.10» (или наоборот). Снапы с флатпаками от хорошей жизни выросли, видимо?
     
     
  • 6.21, Аноним (21), 12:25, 20/05/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    В Линуксе без проблем поставить рядом 2.10 и 2.11, без хелла.
     
     
  • 7.24, Аноним (15), 12:37, 20/05/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Во-первых, и с хелпом проблема. Во-вторых, уже в этот момент концепция разделяемых библиотек похерена.
     
  • 7.29, Аноним (34), 14:14, 20/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Только в nixos и guix sd. Во всех остальных случаях начинаются танцы с контейнерами, и прочим и прочим
     
     
  • 8.32, Аноним (31), 14:43, 20/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Спешу вас расстроить, достаточно компилировать програмы с более точной версией б... текст свёрнут, показать
     
     
  • 9.35, Аноним (34), 17:01, 20/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    О титан, не слишком ли тяжёл небосвод, не устал ли его держать Согласен, что сд... текст свёрнут, показать
     
  • 9.37, Аноним (36), 19:06, 20/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    И насколько хорошо это работает мы можем посмотреть в том числе и по сабжевой но... текст свёрнут, показать
     
  • 9.45, Аноним (42), 23:32, 20/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Пакетные менеджеры мешают т к не умеют ставить одновременно 2 разных минорных ве... текст свёрнут, показать
     
  • 6.46, Аноним (42), 23:36, 20/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Снапы с флетпаками выросли сугубо от хорошей жизни менеджера, который ничего лучше не смог придумать.
    Впрочем, линковка к точной версии библиотеки не спасёт от конфликта символов внутри процесса.
    Если в windows линковка происходит к dllname.dll:funcname, то в линуксах просто к funcname или в лучшем случае к funcname:SYMVER... что не исключает возможности как одинаковых funcname, так и одинаковых funcname:SYMVER в разных процессах...
     
  • 5.20, Аноним (-), 12:25, 20/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > "Но шмель об этом не знает и продолжает летать..."

    Да-да, особенно когда на каком-то копродистре вроде деба тебе срочно нужно обновить что-то чтобы исправить бесячий баг или дыру, а дебилианцы не считают это проблемой.
    И вот тогда начинается веселье.

     
  • 4.44, Аноним (42), 23:28, 20/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    и там гарантированно не будет работать ресолвинг
     
  • 4.51, adolfus (ok), 13:57, 23/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Статическая сборка хороша как минимум тем, что приложение будет более-менее гарантированно
    > работать, вот это её главный плюс. Идея разделяемых библиотек в линуксе
    > с треском провалилась, в винде оно как-то криво-косо, но работает.

    В никсах нет "разделяемых" библиотек, но есть совместно используемые объекты (shared object), которые иногда называются "общие библиотеки".

     
  • 3.28, Аноним (34), 14:12, 20/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    >Выглядит это как тормоза и достигают эти тормоза нескольких секунд

    Эм, а какого года выпуска у вас железо?
    >что особенно заметно в интерактивных приложениях

    Интерактивные приложения постоянно что-то вызывают. Очень маловероятно, что приложение с нуля загрузится в память целиком, со всеми иконками библиотеками и прочим
    >котороые во время инициализации интерфейса выполняют десятки вызовов

    Почему десятки? Вот смотрите, типовой современный сайт на php вызывает тысячи, может даже десятки тысяч файлов на один запрос. И вы всех этих тысяч файлов не увидите, для вас это займёт ну может сотню милисекунд. Так почему десктопные приложения у вас тогда тормозят несколько секунд?

     
     
  • 4.33, Аноним (31), 14:44, 20/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Человек наверное под виндой сидит, где кэш файловой системы по ощущениям постоянно выключен.
     
  • 4.52, adolfus (ok), 14:34, 23/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    HP Zbook c 32 Гбайт ОЗУ и ПП-диском Сайт кеширует в памяти содержимое всех этих... большой текст свёрнут, показать
     
  • 2.13, Аноним (34), 10:47, 20/05/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Спасибо, для статической сборки уже нужен musl.
     
  • 2.19, OpenEcho (?), 12:18, 20/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > лучше бы запретили бы статическую сборку и не е***и бы мозги

    Подрабатываете в НСА ?

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2025 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру