CVE-2026-76098 в Ubuntu: отказ в обслуживании в mistune, уязвимые версии и защита

CVE: CVE-2026-76098
Продукт: Ubuntu
Дата публикации: 24.08.2026
Критичность: HIGH
CVSS: 7.5 (3.1)
EPSS: 0,28%; процентиль 19,86%
CISA KEV: нет подтверждения в каталоге CISA KEV

Краткое описание​


Библиотека mistune в Ubuntu уязвима к отказу в обслуживании через рекурсивный парсинг Markdown. Ошибка затрагивает все поддерживаемые LTS-релизы, включая 24.04 и 26.04. В материале разобран механизм атаки, перечень уязвимых версий пакетов и команды для проверки статуса системы.

Основные характеристики​


Уязвимость позволяет нарушителю отправить специально сформированный Markdown-документ, который приводит к падению процесса парсинга. Это не дает доступа к данным, но останавливает работу сервиса.

  • Тип ошибки: CWE-674 (Uncontrolled Recursion). Библиотека не ограничивает глубину вложенности токенов при рендеринге.
  • CVSS: 7.5 (HIGH). Вектор CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H указывает на сетевую атаку без необходимости авторизации.
  • Эксплуатация: В каталоге CISA KEV подтверждений о массовом использовании в реальных атаках нет.
  • EPSS: 0,28% (процентиль 19,87%). Вероятность эксплуатации в ближайшие 30 дней оценивается как низкая.

Какие продукты и версии затронуты​


Уязвимость затрагивает пакет mistune во всех LTS-релизах Ubuntu, начиная с 16.04. В официальных базах данных Ubuntu OSV указаны следующие версии исходного пакета и бинарных модулей:

  • Ubuntu 16.04 LTS (xenial): mistune 0.7.1-1, бинарные пакеты python-mistune и python3-mistune версии 0.7.1-1.
  • Ubuntu 18.04 LTS (bionic): mistune 0.8.3-2, бинарные пакеты python-mistune и python3-mistune версии 0.8.3-2.
  • Ubuntu 20.04 LTS (focal): mistune 0.8.4-2, бинарный пакет python3-mistune версии 0.8.4-2.
  • Ubuntu 22.04 LTS (jammy): mistune 2.0.0-1+really0.8.4-1, бинарный пакет python3-mistune версии 2.0.0-1+really0.8.4-1.
  • Ubuntu 24.04 LTS (noble): mistune 3.0.2-1, бинарный пакет python3-mistune версии 3.0.2-1.
  • Ubuntu 26.04 LTS (resolute): mistune 3.1.4-1, бинарный пакет python3-mistune версии 3.1.4-1.

Важно: в базах данных Ubuntu для всех перечисленных версий поле availability не заполнено, что означает отсутствие готовых исправлений в репозиториях на момент публикации данных.

Причина уязвимости​


Причина ошибки кроется в логике рендеринга HTML-вывода в библиотеке mistune. При обработке последовательных символов-звездочек парсер создает глубоко вложенные токены для форматирования (emphasis).

Функция HTMLRenderer.render_token() использует рекурсию для обработки этих вложенных структур. Поскольку глубина вложенности не ограничена, при обработке специально сформированного документа количество рекурсивных вызовов превышает системный лимит Python, что приводит к исключению RecursionError и аварийному завершению процесса.

Как работает атака​


Атакующий направляет на сервис, использующий mistune для парсинга Markdown, документ, содержащий длинную последовательность символов *.

Парсер интерпретирует эти символы как вложенные теги форматирования. При переходе к HTML-рендерингу функция render_token() начинает рекурсивно обрабатывать каждый уровень вложенности.

Из-за отсутствия проверки глубины рекурсия продолжается до исчерпания стека вызовов Python. Процесс парсинга падает с ошибкой RecursionError, что приводит к отказу в обслуживании.

Условия успешной эксплуатации​


Для успешной эксплуатации уязвимости атакующему необходимо:

  • Сетевой доступ: Возможность отправить данные на сервис, который использует уязвимую версию mistune для обработки Markdown.
  • Отсутствие авторизации: Вектор CVSS указывает, что для отправки вредоносного документа не требуется учетная запись (PR:N).
  • Целевая конфигурация: Сервис должен быть настроен на использование HTML-рендерера mistune для обработки входных данных.

Возможный сценарий атаки​


Пользователь или автоматизированный скрипт отправляет на веб-интерфейс или API-эндпоинт Markdown-строку, состоящую из тысяч последовательных символов *.

Сервер принимает запрос и передает его в модуль парсинга. Библиотека mistune начинает строить дерево токенов, где каждый символ увеличивает глубину вложенности.

При вызове HTML-рендерера происходит переполнение стека рекурсии. Процесс, обслуживающий запрос, аварийно завершается. Если сервис работает в одном процессе, это может привести к остановке всего приложения.

Есть ли публичный эксплойт​


В официальных источниках и базах данных CVE подтвержден факт наличия уязвимости и выпущен фикс в версии 3.3.3. Однако в каталоге CISA KEV нет записей о подтвержденной эксплуатации в реальных атаках.

Публичные PoC (Proof of Concept) или готовые эксплойты в предоставленных источниках не указаны. Отсутствие сведений в KEV не гарантирует, что эксплойт не существует, но указывает на то, что массовое использование пока не зафиксировано.

Признаки эксплуатации​


Специфичных индикаторов компрометации (IOC) для этой уязвимости в источниках не раскрыто. Поскольку атака приводит к падению процесса, а не к установке вредоносного кода, следы будут связаны с отказом в обслуживании.

Общие неспецифичные признаки, которые стоит проверять:

  • Резкое увеличение количества ошибок RecursionError в логах Python-приложений.
  • Внезапные перезапуски сервисов, использующих парсинг Markdown.
  • Пиковые значения нагрузки на CPU или память в момент отправки запросов с длинными строками.

Как обнаружить атаку​


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

  • Логи приложений: Ищите сообщения об исключении RecursionError в стеках вызовов, связанных с модулем mistune.
  • Сетевой трафик: Мониторьте входящие HTTP-запросы, содержащие аномально длинные последовательности символов * в теле запроса или параметрах.
  • Мониторинг доступности: Настройте алерты на падение доступности сервисов, которые обрабатывают Markdown-контент.

Как проверить свою версию​


Для проверки, установлена ли уязвимая версия mistune в вашей системе Ubuntu, выполните следующие команды. Замените <имя-пакета> на mistune или python3-mistune в зависимости от того, какой пакет установлен.

Bash:
cat /etc/os-release
uname -r
apt-cache policy mistune
ubuntu-security-status

Команда apt-cache policy покажет установленную версию и доступные обновления. Если в выводе отсутствует строка с версией 3.3.3 или выше, система потенциально уязвима.

Исправление​


Основной способ устранения уязвимости — обновление библиотеки mistune до версии 3.3.3 или выше, где исправлена логика рекурсивного рендеринга.

Для систем, где обновление через apt недоступно (так как в базах данных Ubuntu для всех LTS-релизов availability не заполнено), рекомендуется:

  • Обновление из PyPI: Если приложение использует виртуальное окружение, обновите пакет через pip install mistune>=3.3.3.
  • Замена реализации: Рассмотрите возможность замены mistune на другую библиотеку парсинга Markdown, которая не имеет этой уязвимости.
  • Патч-менеджмент: Отслеживайте официальные обновления от Canonical, так как исправление может быть выпущено в будущих обновлениях безопасности.

Временные меры защиты​


Пока не выпущено официальное обновление для Ubuntu, можно применить следующие временные меры:

  • Ограничение длины ввода: На уровне веб-сервера или API-шлюза ограничьте максимальную длину принимаемых Markdown-документов.
  • Фильтрация символов: Если бизнес-логика позволяет, отфильтруйте или экранируйте последовательности символов * в пользовательском вводе до передачи в парсер.
  • Изоляция процесса: Запускайте парсер Markdown в отдельном изолированном процессе или контейнере, чтобы падение не влияло на основной сервис.

Как проверить устранение уязвимости​


После обновления или применения временных мер необходимо убедиться, что уязвимость устранена.

  • Проверка версии: Убедитесь, что установленная версия mistune равна 3.3.3 или выше.
  • Функциональное тестирование: Отправьте тестовый запрос с длинной последовательностью символов * и убедитесь, что сервис не падает, а корректно обрабатывает или отклоняет запрос.
  • Мониторинг: Наблюдайте за логами в течение нескольких дней после обновления, чтобы убедиться в отсутствии ошибок RecursionError.

Вывод​


CVE-2026-76098 представляет собой риск отказа в обслуживании для всех сервисов в Ubuntu, использующих mistune для парсинга Markdown. Уязвимость затрагивает все LTS-релизы, и на момент публикации данных официальных исправлений в репозиториях Ubuntu нет.

Администраторам следует проверить версии установленных пакетов, применить временные меры по ограничению ввода и подготовить план обновления до версии 3.3.3, как только оно станет доступно.

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


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

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


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