Mailpit — это инструмент тестирования электронной почты и API для разработчиков. До версии 1.30.4 Mailpit декодировал вложения изображений, предоставленные злоумышленником, в полный растр перед проверкой декодированных размеров, количества пикселей или использования памяти в конечной точке GET /api/v1/message/{id}/part/{partID}/thumb. Обработчик миниатюр в server/apiv1/thumbnails.go получает байты вложения через хранилище.GetAttachmentPart(), принимает содержимое image/* и вызывает image.Decode() с AutoOrientation перед отображением.Fill() масштабирует изображение до размера 180 на 120 пикселей.
Таким образом, компактное изображение, в котором заявлены очень большие размеры, может потреблять непропорционально большой объем памяти и ЦП, а открытие пользовательского интерфейса сообщения может вызвать ту же конечную точку через server/ui-src/comComponents/message/MessageAttachments.vue. Это может ухудшить доступность, если клиент, не прошедший проверку подлинности, может сохранить созданное вложение и получить доступ к веб-API. Эта проблема исправлена в версии 1.30.4.
Показать оригинальное описание (EN)
Mailpit is an email testing tool and API for developers. Prior to 1.30.4, Mailpit decodes attacker-supplied image attachments into a full raster before checking decoded dimensions, pixel count, or memory use in the GET /api/v1/message/{id}/part/{partID}/thumb endpoint. The Thumbnail handler in server/apiv1/thumbnails.go obtains attachment bytes through storage.GetAttachmentPart(), accepts image/* content, and calls imaging.Decode() with AutoOrientation before imaging.Fill() scales the image to 180 by 120 pixels. A compact image declaring very large dimensions can therefore consume disproportionately large memory and CPU, and opening the message UI can trigger the same endpoint through server/ui-src/components/message/MessageAttachments.vue. This can degrade availability when an unauthenticated client can store the crafted attachment and reach the web API. This issue is fixed in version 1.30.4.
Характеристики атаки
Последствия
Строка CVSS v3.1