Description
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.
Published: 2026-07-20
Score: 5.9 Medium
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

Mailpit’s screenshot/print proxy (/proxy?data=…) maintains a package‑level cache of MessageAssets accessed by a map. Reads of this map are performed without acquiring the assetsMutex, while a background cleanup goroutine and a CSS‑rewriting code path acquire the same lock to write. When an unsynchronized read occurs simultaneously with a write, Go’s runtime throws a fatal error: "concurrent map read and map write", terminating the entire Mailpit process. The crash brings down SMTP, POP3, and HTTP listeners, leading to a denial of service for all Mailpit components. This flaw is a concurrency defect (CWE‑362) linked to improper resource allocation (CWE‑770) and requires no authentication to trigger.

Affected Systems

The issue affects all installations of axllent Mailpit running versions prior to 1.30.0. The patch was introduced in the 1.30.0 release, so any running instance of Mailpit before that release is at risk.

Risk and Exploitability

The CVSS score of 5.9 indicates moderate severity. The EPSS score is < 1%, and the vulnerability is not listed in CISA’s KEV catalog. The likely attack vector is an unauthenticated HTTP request to the /proxy?data=… endpoint, which triggers the CSS rewriter path concurrently with a cleanup goroutine. Because the crash is unrecoverable, an attacker can repeatedly cause service downtime without needing elevated privileges.

Generated by OpenCVE AI on July 30, 2026 at 19:17 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade Mailpit to version 1.30.0 or later to eliminate the concurrency flaw
  • If an upgrade is unavailable, temporarily disable the screenshot/print proxy endpoint or remove the /proxy route to prevent the vulnerable code path from executing
  • Configure the environment to automatically restart the Mailpit process if it crashes, and monitor logs for unrecoverable errors

Generated by OpenCVE AI on July 30, 2026 at 19:17 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-w4vj-r5pg-3722 Mailpit: Concurrent map read & write in proxy CSS rewriter - remote unauth crash (fatal error: concurrent map read and map write)
History

Tue, 21 Jul 2026 00:00:00 +0000

Type Values Removed Values Added
First Time appeared Axllent
Axllent mailpit
Vendors & Products Axllent
Axllent mailpit

Mon, 20 Jul 2026 15:30:00 +0000

Type Values Removed Values Added
Description 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.
Title Mailpit: Concurrent map read & write in proxy CSS rewriter - remote unauth crash (fatal error: concurrent map read and map write)
Weaknesses CWE-362
CWE-770
References
Metrics cvssV3_1

{'score': 5.9, 'vector': 'CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H'}


cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-07-20T15:33:02.751Z

Reserved: 2026-05-13T05:51:48.665Z

Link: CVE-2026-45712

cve-icon Vulnrichment

No data.

cve-icon NVD

No data.

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-07-30T19:30:09Z

Weaknesses
  • CWE-362

    Concurrent Execution using Shared Resource with Improper Synchronization ('Race Condition')

  • CWE-770

    Allocation of Resources Without Limits or Throttling