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 проверьте, что уязвимость устранена:- Убедитесь, что версия пакета соответствует или превышает исправленную версию (
8.0.4+~7.0.11-1).
- Проведите тестирование приложения: передайте в параметр
sizeзначение, содержащее CRLF, и убедитесь, что SMTP-команда формируется корректно, без внедрения дополнительных команд.
- Проверьте SMTP-логи: убедитесь, что к сессии
MAIL FROMпривязано только ожидаемое количество командRCPT TO.
- Если возможно, проведите пентест или сканирование с использованием PoC для CVE-2026-82854, чтобы подтвердить отсутствие инъекции.
Вывод
CVE-2026-82854 представляет серьёзную угрозу для приложений, использующих Nodemailer с кастомным конвертом и передающих в
envelope.size данные, контролируемые пользователем. В Debian уязвимость устранена в ветках forky и sid, тогда как в bookworm, bullseye и trixie статус остаётся открытым.Администраторам рекомендуется обновить пакет до исправленной версии, а разработчикам — внедрить санитизацию входных данных и избегать передачи пользовательских данных в
envelope.size. До выхода патча для уязвимых веток используйте временные меры защиты и усиленный мониторинг.Официальные источники
История обновлений статьи
- 01.09.2026 — Опубликована первая версия материала.
