Mailpit — это инструмент тестирования электронной почты и API для разработчиков. До версии 1.30.0 прокси-сервер скриншотов/печати (/proxy?data=…) поддерживает кэш ресурсов карты[string]MessageAssets на уровне пакета, но считывает карту без удержания assetsMutex, в то время как длительная горутина очистки и (повторно входящий) путь кода переписывания CSS одновременно записывают в нее под блокировкой. Когда несинхронизированное чтение совпадает с синхронизированной записью, среда выполнения Go выдает фатальную ошибку: одновременное чтение и запись карты — runtime.throw, который невозможно восстановить с помощью восстановления обработчика http.Server.
Весь процесс Mailpit завершается, унося с собой прослушиватели SMTP, POP3 и HTTP. Версия 1.30.0 содержит патч.
Показать оригинальное описание (EN)
Mailpit is an email testing tool and API for developers. Prior to version 1.30.0, the screenshot/print proxy (/proxy?data=…) maintains a package-level assets map[string]MessageAssets cache, but reads the map without holding assetsMutex while a long-running cleanup goroutine and (re-entrant) CSS-rewriting code path concurrently write to it under the lock. When the unsynchronized read coincides with a synchronized write, Go's runtime raises fatal error: concurrent map read and map write — a runtime.throw that is not recoverable by http.Server's handler-panic recover. The whole Mailpit process exits, taking the SMTP, POP3 and HTTP listeners down with it. Version 1.30.0 contains a patch.
Характеристики атаки
Последствия
Строка CVSS v3.1
Тип уязвимости (CWE)
Уязвимые продукты 1
| Конфигурация | От (включительно) | До (исключительно) |
|---|---|---|
|
Axllent Mailpit
cpe:2.3:a:axllent:mailpit:*:*:*:*:*:*:*:*
|
— |
1.30.0
|