CVE-2026-59679 в Ubuntu: OOB-чтение/запись в libXfont2, уязвимые версии и защита

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 для получения информации о новых версиях пакетов и изменениях в оценке уязвимости.

Официальные источники​


  1. NVD — CVE-2026-59679
  2. Ubuntu OSV — CVE-2026-59679
  3. FIRST EPSS — CVE-2026-59679

История обновлений статьи​


  • 11.09.2026 — Опубликована первая версия материала.
 
Назад
Верх Низ