Привет из 90-х. В главной библиотеке Linux нашли уязвимость, которая пряталась там 30 лет

Привет из 90-х. В главной библиотеке Linux нашли уязвимость, которая пряталась там 30 лет

Уязвимость возникла еще в 1996 году и затронула работу DNS.

image

Иногда самые неожиданные уязвимости скрываются не в новом коде, а в том, что десятилетиями считалось проверенным и надежным. На этой неделе разработчики раскрыли уязвимость CVE-2026-0915 в стандартной библиотеке GNU C Library, более известной как glibc. Проблема затрагивает код, написанный еще в 1996 году, и только сейчас получила исправление.

Речь идет о функциях getnetbyaddr и getnetbyaddr_r, которые при определенных условиях могли передавать в DNS-резолвер неинициализированные данные из стека. Если эти функции вызывались с сетевым значением, равным нулю, DNS-запрос формировался на основе случайного содержимого памяти. В результате возникала утечка данных стека, пусть и в очень ограниченном объеме. Потенциальный ущерб для конфиденциальности считается минимальным, однако такая утечка теоретически могла помочь злоумышленнику при обходе механизмов ASLR.

Разработчики отмечают, что сценарий эксплуатации крайне редкий. В реальных приложениях почти не встречаются вызовы этих API с нулевым сетевым значением, а сама утечка ограничена соседними областями стека. Тем не менее удивление вызывает сам факт, что крайний случай с нулевым значением не был протестирован почти за 30 лет существования одной из ключевых библиотек экосистемы Linux.

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

Параллельно на этой неделе была раскрыта еще одна уязвимость, CVE-2026-0861. Она связана с функциями memalign в glibc и проявлялась при передаче слишком большого значения выравнивания. В таком случае мог возникнуть целочисленный переполнение и, как следствие, повреждение кучи. В отличие от первой проблемы, этот дефект появился относительно недавно, в 2019 году, и также уже исправлен в актуальном коде библиотеки.

Ожидается, что выпуск glibc версии 2.43, в который войдут оба исправления, состоится в начале февраля. Для большинства пользователей влияние этих уязвимостей будет минимальным, но история наглядно показывает, что даже фундаментальные и давно используемые компоненты могут хранить ошибки десятилетиями.