CVE-2026-82854 в Debian: SMTP-инъекция в Nodemailer, уязвимые версии и защита

CVE: CVE-2026-82854
Продукт: Debian
Дата публикации: 31.08.2026
Критичность: CRITICAL
CVSS: 9.3 (4.0)
EPSS: 1,13%; процентиль 64,20%
CISA KEV: нет подтверждения в каталоге CISA KEV

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


В библиотеке Nodemailer, распространяемой в Debian как пакет node-nodemailer, обнаружена критическая уязвимость SMTP-командной инъекции. Ошибка позволяет злоумышленнику внедрять произвольные SMTP-команды через параметр envelope.size, если приложение передаёт в него данные, контролируемые пользователем.

В Debian уязвимость устранена в ветках forky и sid, тогда как в bookworm, bullseye и trixie статус остаётся открытым. Материал описывает механику атаки, условия эксплуатации и способы проверки состояния системы.

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


Риск связан с возможностью скрытого добавления адресатов в исходящие письма через инъекцию SMTP-команд. Это нарушает конфиденциальность и целостность почтового трафика, но не приводит к удалённому выполнению кода на сервере.

  • Тип ошибки: CWE-93 (CRLF Injection). Значение параметра не фильтруется перед включением в SMTP-команду.
  • CVSS 4.0: 9.3 (CRITICAL). Вектор: CVSS:4.0/AV:N/AC:L/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.
  • Условия атаки: Сеть, низкая сложность, отсутствие необходимости в привилегиях или взаимодействии с пользователем.
  • Эксплуатация: Требуется, чтобы приложение передавало в envelope.size данные, контролируемые атакующим. По умолчанию Nodemailer не включает этот параметр в автогенерируемый конверт.
  • EPSS: 1,13% (процентиль 64,2%). Вероятность эксплуатации в ближайшие 30 дней оценивается как умеренная.

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


В Debian затронут пакет node-nodemailer. Статус уязвимости варьируется в зависимости от версии дистрибутива.

  • forky (unstable): Статус resolved. Исправленная версия: 8.0.4+~7.0.11-1. В репозитории доступна версия 9.0.5+~8.0.1-1.
  • sid (testing): Статус resolved. Исправленная версия: 8.0.4+~7.0.11-1. В репозитории доступна версия 9.0.6+~8.0.1-1.
  • trixie (testing): Статус open. Исправленная версия не назначена. В репозитории версия 6.10.0+~6.4.17-1+deb13u1.
  • bookworm (stable): Статус open. Исправленная версия не назначена. В репозитории версия 6.8.0+~6.4.6-1.
  • bullseye (oldstable): Статус open. Исправленная версия не назначена. В репозитории версия 6.4.17-3.

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


Причина уязвимости кроется в отсутствии санитизации входных данных при формировании SMTP-команды MAIL FROM. Библиотека Nodemailer принимает объект envelope, который может содержать произвольные свойства, включая size.

Когда приложение передаёт в sendMail() объект с полем size, содержащим символы CRLF (Carriage Return Line Feed), библиотека конкатенирует это значение в строку SMTP-команды в формате SIZE=... без проверки на управляющие символы. Это нарушает границу доверия между приложением и SMTP-протоколом, позволяя завершить одну команду и начать другую.

По умолчанию Nodemailer автоматически генерирует конверт и не включает в него параметр size. Уязвимость проявляется только в тех случаях, когда разработчик приложения явно передаёт кастомный объект envelope с полем size, значение которого зависит от внешних источников.

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


Атакующий контролирует значение, которое попадает в параметр envelope.size. Например, если приложение использует размер вложения или другую пользовательскую метрику для формирования этого поля, злоумышленник может передать строку, содержащую CRLF.

В результате SMTP-команда MAIL FROM будет сформирована с внедрёнными символами перевода строки. Это позволяет атакующему добавить дополнительные SMTP-команды, такие как RCPT TO, в тот же сессионный контекст. В итоге к письму, отправленному легитимным отправителем, добавляются адресаты, контролируемые атакующим, без ведома отправителя и получателя.

Механизм не позволяет выполнить код на сервере или изменить содержимое письма. Он нарушает логику маршрутизации SMTP, приводя к нежелательной доставке сообщений на сторонние адреса. Успех атаки зависит от того, как приложение обрабатывает входные данные перед передачей в Nodemailer.

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


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

  • Контроль над envelope.size: Приложение должно передавать в параметр size объекта envelope данные, которые могут быть сформированы атакующим (например, из HTTP-запроса, JSON-тела или URL-параметров).
  • Отсутствие санитизации на уровне приложения: Приложение не должно фильтровать символы CRLF или валидировать формат значения size перед вызовом sendMail().
  • Использование кастомного конверта: Приложение должно явно передавать объект envelope в sendMail(). Если используется автогенерация конверта Nodemailer, параметр size не включается, и уязвимость не проявляется.
  • Доступ к SMTP-серверу: SMTP-сервер должен принимать команды RCPT TO в рамках сессии, инициированной командой MAIL FROM. Большинство стандартных SMTP-серверов поддерживают такую последовательность.

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


Представим веб-приложение, которое отправляет уведомления о загрузке файлов. Приложение принимает от пользователя имя файла и его размер, формирует объект envelope с полем size и вызывает sendMail().

Атакующий отправляет запрос с параметром size, содержащим строку: 123\r\nRCPT TO: [email protected]. Nodemailer конкатенирует это значение в SMTP-команду. SMTP-сервер воспринимает \r\n как разделитель команд, завершает MAIL FROM и обрабатывает RCPT TO как отдельную команду.

В результате письмо, предназначенное для легитимного получателя, также доставляется на адрес [email protected]. Отправитель и основной получатель не получают уведомлений о дополнительной доставке. Атакующий может использовать этот канал для рассылки спама или фишинговых писем от имени легитимного отправителя.

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


Публичные эксплойты для CVE-2026-82854 не подтверждены в доступных официальных источниках. В базе NVD и в advisories разработчика Nodemailer указаны ссылки на техническое описание уязвимости, но не на рабочий PoC или подтверждённую эксплуатацию в реальных атаках.

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

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


Специфичные IOC (Indicators of Compromise) для CVE-2026-82854 не раскрыты в официальных источниках. Поскольку уязвимость не приводит к удалённому выполнению кода, традиционные IOC вроде новых процессов или сетевых соединений не применимы.

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

  • Аномальные SMTP-логи: Записи в логах SMTP-сервера, где к одной сессии MAIL FROM привязано несколько команд RCPT TO с подозрительными адресатами.
  • Неожиданные получатели: Жалобы от пользователей на получение писем, которые они не запрашивали, или отправка писем на адреса, не связанные с бизнес-процессами.
  • Аномальные значения size: Если приложение логирует параметры envelope, поиск значений, содержащих CRLF или необычно длинные строки, может указать на попытку инъекции.

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


Обнаружение атаки требует анализа SMTP-логи и логики приложения. Поскольку Nodemailer не логирует содержимое SMTP-команд по умолчанию, необходимо настроить логирование на уровне SMTP-сервера или прокси.

  • SMTP-логи: Ищите сессии, где после MAIL FROM следует несколько RCPT TO с адресами, не соответствующими ожидаемым получателям. Обратите внимание на аномально длинные строки в параметре SIZE.
  • Приложение-логи: Если приложение логирует параметры envelope, анализируйте значения size на наличие символов CRLF или других управляющих символов.
  • Почтовые шлюзы: Настройте правила в почтовом шлюзе для блокировки писем с аномальным количеством получателей или с получателями из известных спам-списков.

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


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

Bash:
cat /etc/debian_version
cat /etc/os-release
apt-cache policy node-nodemailer
dpkg-query -W -f='${Package} ${Version}\n' node-nodemailer

Сравните полученную версию с исправленными версиями из раздела «Какие продукты и версии затронуты». Если версия ниже 8.0.4+~7.0.11-1, система уязвима.

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


Основной способ устранения уязвимости — обновление пакета node-nodemailer до исправленной версии. В Debian это возможно только в ветках, где статус уязвимости resolved.

  • forky (unstable): Обновите пакет до версии 8.0.4+~7.0.11-1 или выше. В репозитории доступна версия 9.0.5+~8.0.1-1.
  • sid (testing): Обновите пакет до версии 8.0.4+~7.0.11-1 или выше. В репозитории доступна версия 9.0.6+~8.0.1-1.

Для веток bookworm, bullseye и trixie исправление ещё не выпущено. До выхода патча используйте временные меры защиты, описанные ниже. После обновления проверьте, что приложение не передаёт в envelope.size данные, контролируемые пользователем.

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


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

  • Санитизация на уровне приложения: Перед передачей объекта envelope в sendMail() фильтруйте значение size от символов CRLF, CR и LF. Используйте валидацию формата (например, только цифры) или замените управляющие символы на безопасные эквиваленты.
  • Отключение кастомного конверта: Если бизнес-логика позволяет, не передавайте объект envelope в sendMail(). Позвольте Nodemailer автоматически сгенерировать конверт, в котором параметр size не включается.
  • Ограничение SMTP-команд: На уровне SMTP-сервера или прокси можно ограничить количество команд RCPT TO на одну сессию или блокировать сессии с аномальными параметрами SIZE.
  • Мониторинг: Усиленный мониторинг SMTP-логи и логики приложения для выявления аномальных значений size и неожиданных получателей.

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


После обновления пакета node-nodemailer проверьте, что уязвимость устранена:

  1. Убедитесь, что версия пакета соответствует или превышает исправленную версию (8.0.4+~7.0.11-1).
  2. Проведите тестирование приложения: передайте в параметр size значение, содержащее CRLF, и убедитесь, что SMTP-команда формируется корректно, без внедрения дополнительных команд.
  3. Проверьте SMTP-логи: убедитесь, что к сессии MAIL FROM привязано только ожидаемое количество команд RCPT TO.
  4. Если возможно, проведите пентест или сканирование с использованием PoC для CVE-2026-82854, чтобы подтвердить отсутствие инъекции.

Вывод​


CVE-2026-82854 представляет серьёзную угрозу для приложений, использующих Nodemailer с кастомным конвертом и передающих в envelope.size данные, контролируемые пользователем. В Debian уязвимость устранена в ветках forky и sid, тогда как в bookworm, bullseye и trixie статус остаётся открытым.

Администраторам рекомендуется обновить пакет до исправленной версии, а разработчикам — внедрить санитизацию входных данных и избегать передачи пользовательских данных в envelope.size. До выхода патча для уязвимых веток используйте временные меры защиты и усиленный мониторинг.

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


  1. NVD — CVE-2026-82854
  2. Debian Security Tracker — CVE-2026-82854
  3. FIRST EPSS — CVE-2026-82854

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


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