Mailpit — это инструмент тестирования электронной почты и API для разработчиков. До версии 1.30.0 SMTP-сервер Mailpit имел int-поле Server.MaxSize, которое контролирует максимально допустимый размер полезных данных DATA, но это поле никогда не назначается нигде за пределами тестового кода, оставляя для него нулевое значение Go (0 ⇒ «без ограничений»). То же самое относится и к конечной точке HTTP /api/v1/send, тело запроса которой декодируется с помощью json.NewDecoder(r.Body) и без http.MaxBytesReader.
Поскольку прослушиватели Mailpit по умолчанию связывают [::]:1025 (SMTP) и [::]:8025 (HTTP) без необходимости аутентификации ни для одного из них, один доступный к сети злоумышленник может отправить в Mailpit сообщение произвольного размера и наблюдать скачок потребления оперативной памяти с коэффициентом усиления ~7-10× (необработанный кадр → дерево конвертов enmime → индекс поискового текста → запись в SQLite в кодировке zstd). Повторение атаки или ее одновременное выполнение из нескольких соединений приводит к уничтожению процесса OOM. Версия 1.30.0 содержит патч.
Показать оригинальное описание (EN)
Mailpit is an email testing tool and API for developers. Prior to version 1.30.0, the Mailpit SMTP server has a Server.MaxSize int field that controls the maximum allowed DATA payload size, but the field is never assigned anywhere outside test code, leaving it at Go's zero value (0 ⇒ "no limit"). The same applies to the HTTP /api/v1/send endpoint, whose request body is decoded with json.NewDecoder(r.Body) and no http.MaxBytesReader. Because Mailpit's default listeners bind [::]:1025 (SMTP) and [::]:8025 (HTTP), with no authentication required on either, a single network-reachable attacker can push an arbitrarily large message into Mailpit and watch RAM consumption spike with a ~7-10× amplification factor (raw frame → enmime envelope tree → search-text index → zstd-encoded write to SQLite). Repeating the attack — or running it concurrently from multiple connections — drives the process to OOM-kill. Version 1.30.0 contains a patch.
Характеристики атаки
Последствия
Строка CVSS v3.1
Тип уязвимости (CWE)
Уязвимые продукты 1
| Конфигурация | От (включительно) | До (исключительно) |
|---|---|---|
|
Axllent Mailpit
cpe:2.3:a:axllent:mailpit:*:*:*:*:*:*:*:*
|
— |
1.30.0
|