CVE: CVE-2026-59679
Продукт: Ubuntu
Дата публикации: 10.09.2026
Критичность: CRITICAL
CVSS: 9.2 (4.0)
EPSS: 0,41%; процентиль 34,57%
CISA KEV: нет подтверждения в каталоге CISA KEV
Краткое описание
В клиенте font-server библиотеки libXfont2 обнаружена уязвимость, позволяющая злоумышленнику вызвать выход за границы кучи (out-of-bounds read/write) через специально сформированные ответы сервера шрифтов. Проблема затрагивает широкий спектр версий Ubuntu, включая LTS-релизы. Статья разбирает механику атаки, условия эксплуатации и способы проверки состояния системы.
Основные характеристики
Риск заключается в возможности удаленного атакующего повлиять на память процесса клиента при взаимодействии с скомпрометированным или враждебным font-server. Это может привести к утечке данных или выполнению кода.
- Тип ошибки: CWE-787 (Out-of-bounds Write). Ошибка возникает при индексировании массива с использованием значения, не проверенного на соответствие размеру выделенной памяти.
- CVSS 4.0: 9.2 (CRITICAL). Вектор:
CVSS:4.0/AV:N/AC:H/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X. Высокая оценка обусловлена сетевым вектором атаки и серьезным воздействием на конфиденциальность, целостность и доступность.
- Условия атаки: Атакующий должен контролировать или перехватить ответы font-server. Пользовательские привилегии не требуются (PR:N), но сложность атаки высокая (AC:H) из-за необходимости точного формирования данных.
- Эксплуатация: Публичные данные о подтвержденной эксплуатации в дикой природе отсутствуют. CVE находится в статусе "Awaiting Analysis".
- EPSS: 0,41% (процентиль 34,57%). Вероятность эксплуатации в ближайшие 30 дней оценивается как низкая, что соответствует статусу уязвимости, не попавшей в каталог CISA KEV.
Какие продукты и версии затронуты
Уязвимость затрагивает пакет
libxfont (и его бинарные компоненты libxfont1/libxfont2) в следующих дистрибутивах Ubuntu. Для большинства версий указаны конкретные уязвимые сборки:- Ubuntu 14.04 LTS (Pro):
libxfont1версия1:1.4.7-1ubuntu0.4+esm2.
- Ubuntu 16.04 LTS (Pro):
libxfont1версия1:1.5.1-1ubuntu0.16.04.4+esm2.
- Ubuntu 16.04 LTS:
libxfont2версия1:2.0.1-3~ubuntu16.04.3.
- Ubuntu 18.04 LTS (Pro):
libxfont2версия1:2.0.3-1ubuntu0.1~esm2.
- Ubuntu 20.04 LTS (Pro):
libxfont2версия1:2.0.3-1ubuntu0.20.04.1~esm2.
- Ubuntu 22.04 LTS:
libxfont2версия1:2.0.5-1ubuntu0.2.
- Ubuntu 24.04 LTS:
libxfont2версия1:2.0.6-1+deb13u1build0.24.04.2.
- Ubuntu 26.04 LTS:
libxfont2версия1:2.0.6-2ubuntu0.2.
Обратите внимание, что для некоторых версий (14.04, 16.04 Pro) указаны пакеты
libxfont1, а для остальных — libxfont2. Это связано с историей переименования и разделения пакетов в экосистеме X11.Причина уязвимости
Причина уязвимости кроется в функции
fs_read_glyphs() в файле src/fc/fserve.c библиотеки libXfont2. Функция обрабатывает ответы от font-server, в частности сообщения FS_QueryXBitmaps16 и FS_QueryXExtents16.Код выделяет память для массива
encoding[] на основе поля num_extents, полученного из ответа FS_QueryXExtents16. Однако при последующей обработке ответа FS_QueryXBitmaps16 функция использует поле num_chars для индексации этого массива.Критическая ошибка заключается в том, что значения
num_extents и num_chars никогда не сверяются между собой. Если злоумышленник отправит ответ с малым num_extents (например, 1) и большим num_chars (например, 100000), клиент будет читать и записывать данные за пределами выделенного блока памяти, что приводит к повреждению кучи (heap corruption).Как работает атака
Атака реализуется через скомпрометированный или специально настроенный font-server. Клиентская библиотека libXfont2 устанавливает соединение с сервером для запроса метрических данных и растровых изображений глифов.
Атакующий контролирует содержимое ответов X11. Сначала сервер отправляет сообщение
FS_QueryXExtents16 с завышенным или заниженным значением num_extents. Клиент выделяет буфер под массив encoding[] исходя из этого значения.Затем сервер отправляет сообщение
FS_QueryXBitmaps16 с полем num_chars, значительно превышающим num_extents. Функция fs_read_glyphs() начинает цикл, в котором использует num_chars как верхнюю границу для индексации массива encoding[].Поскольку размер массива меньше
num_chars, доступы к памяти выходят за границы выделенного блока. Это позволяет атакующему читать чужие данные из кучи (информационная утечка) или записывать управляемые значения в соседние объекты (повреждение памяти, потенциальное выполнение кода).Условия успешной эксплуатации
Для успешной эксплуатации уязвимости необходимо соблюдение следующих условий:
- Контроль над font-server: Атакующий должен иметь возможность отправлять сформированные ответы X11 клиенту. Это возможно, если атакующий управляет font-server или осуществляет атаку «человек посередине» (MITM) на трафик между клиентом и сервером.
- Сетевая доступность: Клиент должен быть подключен к уязвимому font-server. Вектор атаки сетевой (AV:N), что означает, что атакующий может находиться в любой сети,只要能 он может доставить сформированные пакеты клиенту.
- Отсутствие проверки целостности: Клиентская библиотека не должна валидировать согласованность полей
num_extentsиnum_charsиз разных сообщений. В текущих уязвимых версиях такая проверка отсутствует.
- Сложность атаки: Высокая сложность (AC:H) указывает на то, что атакующему необходимо точно подобрать значения для обхода механизмов защиты памяти (например, ASLR, DEP) или для достижения желаемого эффекта (например, перезаписи конкретного указателя).
Возможный сценарий атаки
Типичный сценарий атаки предполагает, что атакующий имеет доступ к font-server, используемому целевой системой. Например, это может быть скомпрометированный сервер в корпоративной сети или публичный сервис, к которому подключается клиент.
Атакующий перехватывает или формирует ответы на запросы клиента. Он отправляет
FS_QueryXExtents16 с num_extents = 1. Клиент выделяет маленький буфер для encoding[].Далее атакующий отправляет
FS_QueryXBitmaps16 с num_chars = 100000. Функция fs_read_glyphs() начинает итерировать по 100000 символам, индексируя массив encoding[].При индексе, превышающем 1, происходит выход за границы кучи. Атакующий может использовать это для чтения чувствительных данных из памяти процесса или для перезаписи указателей, что в конечном итоге может привести к выполнению произвольного кода в контексте процесса клиента.
Есть ли публичный эксплойт
На момент публикации статьи публичные данные о подтвержденной эксплуатации CVE-2026-59679 в реальных атаках отсутствуют. CVE находится в статусе "Awaiting Analysis" в NVD, что означает, что полная оценка и верификация еще продолжаются.
В каталоге CISA KEV (Known Exploited Vulnerabilities) уязвимость не фигурирует. EPSS (Exploit Prediction Scoring System) оценивает вероятность эксплуатации в 0,41%, что является низким значением. Это не гарантирует отсутствие эксплойтов, но указывает на то, что массовая автоматизированная эксплуатация пока не наблюдается.
Техническое описание атаки доступно в описании CVE, что позволяет исследователям и разработчикам создавать PoC (Proof of Concept) для проверки уязвимости в лабораторных условиях.
Признаки эксплуатации
Специфичные индикаторы компрометации (IOC) для CVE-2026-59679 в официальных источниках не опубликованы. Однако можно использовать следующие неспецифичные точки контроля:
- Аномальные сетевые соединения: Мониторинг соединений с font-server на предмет необычных паттернов трафика, особенно если сервер находится в недоверенной сети.
- Сегфолты (Segfaults) в процессах X11: Внезапные падения процессов, использующих libXfont2, могут быть признаком повреждения памяти. Однако это неспецифичный индикатор, так как сегфолты могут возникать по многим другим причинам.
- Изменения в памяти процесса: Использование инструментов для мониторинга памяти (например, Valgrind, AddressSanitizer) в тестовых средах может выявить аномальные доступы к памяти при взаимодействии с font-server.
Как обнаружить атаку
Для обнаружения потенциальной эксплуатации можно применить следующие меры:
- Логирование X11: Включение подробного логирования в font-server и клиентских приложениях. Анализ логов на предмет аномальных запросов и ответов, особенно с несовпадающими значениями
num_extentsиnum_chars.
- Мониторинг целостности памяти: Использование инструментов динамического анализа (например, AddressSanitizer) в критических приложениях, взаимодействующих с font-server. Это позволит выявить out-of-bounds доступы в реальном времени.
- Сетевой мониторинг: Анализ трафика между клиентами и font-server на предмет аномалий. Если font-server находится в недоверенной сети, рекомендуется шифровать трафик или использовать доверенные сертификаты.
- Патч-менеджмент: Регулярная проверка установленных версий пакетов
libxfontиlibxfont2на наличие обновлений. Использование инструментов, таких какubuntu-security-status, для отслеживания статуса безопасности системы.
Как проверить свою версию
Для проверки текущей версии пакета
libxfont/libxfont2 и статуса безопасности системы используйте следующие команды:
Bash:
# Проверка версии ОС
cat /etc/os-release
# Проверка версии ядра
uname -r
# Проверка версии пакета libxfont (замените <имя-пакета> на libxfont или libxfont2)
apt-cache policy <имя-пакета>
# Проверка статуса безопасности Ubuntu
ubuntu-security-status
Команда
apt-cache policy покажет установленную версию пакета и доступные обновления. Если версия совпадает с одной из уязвимых версий, перечисленных в разделе «Какие продукты и версии затронуты», система подвержена риску. Команда ubuntu-security-status предоставит сводку о наличии критических обновлений безопасности.Исправление
Основным способом устранения уязвимости является обновление пакета
libxfont/libxfont2 до исправленной версии. Для пользователей Ubuntu рекомендуется:- Обновление системы: Выполните
sudo apt update && sudo apt upgradeдля установки всех доступных обновлений безопасности. Убедитесь, что пакетlibxfont/libxfont2обновлен до версии, не содержащей уязвимости.
- Проверка обновлений: Используйте
ubuntu-security-statusдля подтверждения, что все критические обновления установлены. Если команда указывает на наличие не установленных обновлений, выполните их установку.
- Для Ubuntu Pro: Если вы используете Ubuntu Pro, убедитесь, что подписка активна и обновления ESM (Extended Security Maintenance) применяются. Для версий 14.04, 16.04, 18.04, 20.04 LTS обновления могут быть доступны только через Ubuntu Pro.
После обновления рекомендуется перезапустить службы, использующие font-server, чтобы изменения вступили в силу.
Временные меры защиты
До применения исправления можно использовать следующие временные меры для снижения риска:
- Ограничение доступа к font-server: Если возможно, ограничьте доступ к font-server только доверенным клиентам. Используйте файрвол для блокировки соединений с недоверенных IP-адресов.
- Шифрование трафика: Если font-server поддерживает TLS, используйте шифрованное соединение для предотвращения перехвата и модификации трафика атакующим.
- Изоляция клиентов: Если font-server находится в недоверенной сети, рассмотрите возможность изоляции клиентов, использующих его, в отдельной сети или сегменте.
- Мониторинг: Усиленный мониторинг процессов, использующих libXfont2, на предмет аномального поведения и сегфолтов. Это не предотвратит атаку, но поможет обнаружить ее на ранней стадии.
Как проверить устранение уязвимости
Для подтверждения успешного устранения уязвимости выполните следующие шаги:
- Проверка версии пакета: Убедитесь, что версия пакета
libxfont/libxfont2не совпадает с уязвимыми версиями, перечисленными в разделе «Какие продукты и версии затронуты». Используйтеapt-cache policy <имя-пакета>для проверки.
- Проверка статуса безопасности: Выполните
ubuntu-security-statusи убедитесь, что нет не установленных критических обновлений. Статус должен быть «OK» или аналогичным.
- Функциональное тестирование: Проведите тестирование приложений, использующих font-server, чтобы убедиться, что они работают корректно после обновления. Проверьте, что шрифты отображаются правильно и нет ошибок в логах.
- Повторная проверка уязвимости: Если возможно, выполните сканирование системы с помощью инструментов безопасности (например, OpenVAS, Nessus) для подтверждения, что CVE-2026-59679 больше не обнаруживается.
Вывод
CVE-2026-59679 представляет собой серьезную уязвимость в libXfont2, позволяющую атакующему вызвать выход за границы кучи через скомпрометированный font-server. Хотя вероятность массовой эксплуатации на данный момент низкая, риск для систем, взаимодействующих с недоверенными font-server, остается высоким.
Администраторам Ubuntu рекомендуется немедленно проверить версии установленных пакетов
libxfont/libxfont2 и применить доступные обновления. Для систем, где обновление невозможно в краткосрочной перспективе, следует рассмотреть временные меры, такие как ограничение доступа к font-server и усиленный мониторинг.Следите за официальными обновлениями от Canonical и NVD для получения информации о новых версиях пакетов и изменениях в оценке уязвимости.
Официальные источники
История обновлений статьи
- 11.09.2026 — Опубликована первая версия материала.
