CVE-2026-90776 в Ubuntu: отказ в обслуживании через парсинг email-адресов

CVE: CVE-2026-90776
Продукт: Ubuntu
Дата публикации: 13.09.2026
Критичность: HIGH
CVSS: 8.7 (4.0)
EPSS: 0,48%; процентиль 40,23%
CISA KEV: нет подтверждения в каталоге CISA KEV

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


В библиотеке Nodemailer обнаружена уязвимость, позволяющая атакующему вызвать отказ в обслуживании (DoS) на Node.js-приложениях, использующих парсинг email-адресов. Проблема затрагивает пакет node-nodemailer в нескольких версиях Ubuntu LTS. Статья описывает механику атаки, уязвимые версии и способы проверки и исправления.

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


Уязвимость приводит к отказу в обслуживании приложений, которые обрабатывают email-адреса через компонент addressparser библиотеки Nodemailer. Атака не требует аутентификации и может быть запущена удаленно через специально сформированные заголовки.

  • Тип ошибки: CWE-407 (Неконтролируемое потребление ресурсов). Алгоритм парсинга имеет квадратичную сложность, что приводит к чрезмерному потреблению CPU.
  • CVSS (v4.0): 8.7 (HIGH). Вектор: CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N. Высокая оценка обусловлена удаленным доступом и серьезным влиянием на доступность.
  • CVSS (v3.1): 7.5 (HIGH). Вектор: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H.
  • EPSS: 0,48% (процентиль 40,23%). Вероятность эксплуатации в ближайшие 30 дней оценивается как низкая, но не нулевая.
  • Эксплуатация: Публичные данные о массовой эксплуатации в реальных атаках отсутствуют. Зафиксирован только технический PoC и описание механизма.

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


Уязвимость затрагивает пакет node-nodemailer в следующих версиях Ubuntu LTS. Версии пакетов в Ubuntu отличаются от версий npm-пакета Nodemailer, поэтому сверка должна проводиться по данным Ubuntu OSV.

  • Ubuntu 20.04 LTS (focal): node-nodemailer версии 6.4.5-1.
  • Ubuntu 22.04 LTS (jammy): node-nodemailer версии 6.7.1+~6.4.4-1.
  • Ubuntu 24.04 LTS (noble): node-nodemailer версии 6.9.4+~6.4.9-4.
  • Ubuntu 26.04 LTS (resolute): node-nodemailer версии 8.0.4+~7.0.11-1.

Все перечисленные версии считаются уязвимыми, так как содержат компонент addressparser с квадратичной сложностью обработки комментариев RFC 5322. Исправление в экосистеме npm вышло в версии 10.0.5, что означает, что все перечисленные выше сборки Ubuntu требуют обновления.

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


Причина уязвимости кроется в реализации парсинга email-адресов в компоненте addressparser библиотеки Nodemailer. При обработке адресов, содержащих комментарии в соответствии со стандартом RFC 5322, алгоритм выполняет вложенные циклы, что приводит к квадратичной временной сложности (O(n²)).

Атакующий может сформировать заголовок письма, в котором атомы (символы) разделены комментариями. При парсинге такого заголовка количество операций растет квадратично относительно длины входных данных. Это приводит к чрезмерному потреблению процессорного времени и блокировке event loop в Node.js на несколько секунд, что делает приложение недоступным для обработки других запросов.

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


Атака реализуется через отправку специально сформированного email-адреса или заголовка в приложение, использующее Nodemailer для парсинга. Атакующий не нуждается в аутентификации, если приложение принимает входящие данные (например, через API или форму обратной связи) и передает их в уязвимый парсер.

Механика атаки заключается в создании строки, где каждый символ или группа символов отделена комментариями. При обработке такой строки парсер выполняет избыточное количество операций. В результате процессорное время тратится на парсинг одного запроса, что блокирует event loop.

Для Node.js-приложений, работающих в одном процессе, это означает, что все остальные запросы в этот момент будут ждать, пока не завершится обработка «зависшего» запроса, что приводит к отказу в обслуживании.

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


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

  • Использование уязвимой версии: Приложение должно использовать версию Nodemailer в диапазоне от 9.1.0 до 10.0.4 (или соответствующие сборки Ubuntu, перечисленные выше).
  • Доступ к парсеру: Атакующий должен иметь возможность передать специально сформированную строку в функцию парсинга адресов. Это может быть через входящий email, API-запрос или любой другой канал, где данные обрабатываются Nodemailer.
  • Отсутствие ограничений на длину: Если приложение не ограничивает длину входных данных или количество комментариев, атакующему проще вызвать блокировку. Однако даже при ограничениях, если они не учитывают квадратичную сложность, атака возможна.

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


Типичный сценарий атаки выглядит следующим образом. Атакующий отправляет запрос в веб-приложение, которое использует Nodemailer для обработки email-адресов (например, для отправки уведомлений или валидации). В теле запроса или заголовках передается специально сформированная строка, содержащая множество комментариев, разделенных атомами.

Приложение передает эту строку в addressparser. Парсер начинает обработку, и из-за квадратичной сложности количество операций резко возрастает. Event loop Node.js блокируется на несколько секунд.

В течение этого времени приложение не может обрабатывать другие запросы. Если атакующий отправляет несколько таких запросов параллельно, нагрузка на процессор увеличивается, что может привести к полному отказу в обслуживании или даже к перезапуску процесса, если сработают механизмы мониторинга (health checks).

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


На момент публикации статьи публичные данные о массовой эксплуатации CVE-2026-90776 в реальных атаках отсутствуют. В каталоге CISA KEV уязвимость не фигурирует.

Однако существует техническое описание и PoC, опубликованные в рамках раскрытия уязвимости. Это означает, что атакующие знают о проблеме и могут использовать ее, но широкомасштабных инцидентов пока не зафиксировано.

Отсутствие сведений о массовой эксплуатации не гарантирует, что атаки не происходят, особенно в закрытых корпоративных средах.

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


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

  • Высокая загрузка CPU: Резкий рост потребления процессора в процессах Node.js, использующих Nodemailer.
  • Задержки в обработке запросов: Увеличение времени отклика API или веб-интерфейса, особенно при обработке запросов, связанных с email.
  • Аномальные заголовки: Наличие в логах входящих запросов строк с большим количеством комментариев в email-адресах (например, a(b)c(d)e и т.п.).
  • Перезапуски процессов: Частые перезапуски Node.js-процессов, если они блокируются и убиваются мониторингом.

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


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

  • Мониторинг CPU и задержек: Настройте алерты на превышение пороговых значений CPU для Node.js-процессов и на увеличение времени отклика API.
  • Анализ логов: Просматривайте логи входящих запросов на наличие аномальных email-адресов с большим количеством комментариев. Используйте регулярные выражения для поиска паттернов, похожих на .*\(.*\).*\(.*\).*.
  • Мониторинг событий: Следите за событиями перезапуска процессов и ошибками в логах Node.js, которые могут указывать на блокировку event loop.
  • Сканирование зависимостей: Регулярно сканируйте зависимости проекта на наличие уязвимых версий Nodemailer с помощью инструментов, таких как npm audit или trivy.

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


Для проверки версии пакета node-nodemailer в Ubuntu используйте следующие команды. Замените <имя-пакета> на node-nodemailer.

Bash:
# Проверка версии Ubuntu
cat /etc/os-release

# Проверка версии ядра
uname -r

# Проверка версии пакета node-nodemailer
apt-cache policy node-nodemailer

# Проверка статуса безопасности Ubuntu
ubuntu-security-status

В выводе apt-cache policy node-nodemailer обратите внимание на установленную версию. Если она совпадает с одной из уязвимых версий, перечисленных в разделе «Какие продукты и версии затронуты», система требует обновления.

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


Основным способом устранения уязвимости является обновление пакета node-nodemailer до исправленной версии. В экосистеме npm исправление вышло в версии 10.0.5. Для Ubuntu необходимо дождаться выпуска обновленного пакета в репозиториях безопасности.

  • Обновление через apt: Выполните sudo apt update && sudo apt upgrade node-nodemailer, когда исправленный пакет станет доступен в репозиториях Ubuntu.
  • Обновление через npm (для локальных проектов): Если вы используете Nodemailer напрямую через npm, обновите пакет до версии 10.0.5 или выше: npm update nodemailer.
  • Проверка зависимостей: Убедитесь, что все зависимости проекта используют исправленную версию Nodemailer. Используйте npm ls nodemailer для проверки.

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


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

  • Ограничение длины входных данных: Настройте приложение так, чтобы оно отклоняло email-адреса, превышающие разумную длину (например, 254 символа, как в RFC 5321).
  • Ограничение количества комментариев: Если возможно, модифицируйте парсинг или добавьте предобработку, которая удаляет или ограничивает количество комментариев в email-адресах.
  • Использование worker threads: Перенесите парсинг email-адресов в отдельные worker threads, чтобы блокировка event loop основного процесса не влияла на обработку других запросов.
  • Rate limiting: Ограничьте частоту запросов к API, которые обрабатывают email-адреса, чтобы снизить вероятность одновременной отправки множества атакующих запросов.

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


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

  • Проверка версии: Убедитесь, что установленная версия node-nodemailer соответствует исправленной версии (10.0.5 или выше для npm, или соответствующая версия для Ubuntu).
  • Функциональное тестирование: Проведите тестирование приложения, отправив специально сформированные email-адреса с комментариями. Убедитесь, что приложение обрабатывает их без блокировки event loop.
  • Наблюдение за нагрузкой: После обновления наблюдайте за загрузкой CPU и временем отклика. Если аномалии исчезли, это косвенно подтверждает, что уязвимость устранена.
  • Сканирование зависимостей: Повторно выполните сканирование зависимостей, чтобы убедиться, что уязвимые версии Nodemailer отсутствуют в проекте.

Вывод​


CVE-2026-90776 представляет собой серьезную угрозу для Node.js-приложений, использующих Nodemailer для парсинга email-адресов. Хотя вероятность массовой эксплуатации пока низкая, атакующие могут использовать эту уязвимость для отказа в обслуживании.

Администраторам Ubuntu и разработчикам рекомендуется проверить версии используемых пакетов, обновить их до исправленных версий и применить временные меры защиты, пока обновление не станет доступно.

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

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


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

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


  • 17.09.2026 — Опубликована первая версия материала.
  • 18.09.2026 — Уточнены сведения об уязвимых версиях, оценке риска или исправлении.
 
Последнее редактирование:
Назад
Верх Низ