← Back to CVE Explorer

CVE-2026-45712

Full vulnerability record from the local CVENow database.

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.

Severity
MEDIUM
CVSS score
5.9 (v3.1)
Vulnerability status
Analyzed
Source identifier
Published
2026-07-20 16:17:00.470000
Last modified
2026-10-24 20:10:00.137000
View original CVE JSON
{
  "id": "CVE-2026-45712",
  "sourceIdentifier": "[email protected]",
  "published": "2026-07-20T16:17:00.470",
  "lastModified": "2026-10-24T20:10:00.137",
  "vulnStatus": "Analyzed",
  "cveTags": [],
  "descriptions": [
    {
      "lang": "en",
      "value": "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."
    },
    {
      "lang": "es",
      "value": "Mailpit es una herramienta de prueba de correo electrónico y API para desarrolladores. Antes de la versión 1.30.0, el proxy de captura de pantalla/impresión (/proxy?data=...) mantiene una caché de activos a nivel de paquete map[string]MessageAssets, pero lee el mapa sin mantener assetsMutex mientras una goroutine de limpieza de larga duración y una ruta de código de reescritura de CSS (reentrante) escriben concurrentemente en él bajo el bloqueo. Cuando la lectura no sincronizada coincide con una escritura sincronizada, el tiempo de ejecución de Go genera un error fatal: lectura concurrente de mapa y escritura de mapa - un runtime.throw que no es recuperable por el recuperador de pánico del gestor del servidor HTTP. Todo el proceso de Mailpit se cierra, llevando consigo los oyentes SMTP, POP3 y HTTP. La versión 1.30.0 contiene un parche."
    }
  ],
  "affected": [
    {
      "source": "[email protected]",
      "affectedData": [
        {
          "vendor": "axllent",
          "product": "mailpit",
          "versions": [
            {
              "version": "< 1.30.0",
              "status": "affected"
            }
          ]
        }
      ]
    }
  ],
  "metrics": {
    "cvssMetricV31": [
      {
        "source": "[email protected]",
        "type": "Secondary",
        "cvssData": {
          "version": "3.1",
          "vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H",
          "baseScore": 5.9,
          "baseSeverity": "MEDIUM",
          "attackVector": "NETWORK",
          "attackComplexity": "HIGH",
          "privilegesRequired": "NONE",
          "userInteraction": "NONE",
          "scope": "UNCHANGED",
          "confidentialityImpact": "NONE",
          "integrityImpact": "NONE",
          "availabilityImpact": "HIGH"
        },
        "exploitabilityScore": 2.2,
        "impactScore": 3.6
      }
    ],
    "ssvcV203": [
      {
        "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
        "ssvcData": {
          "timestamp": "2026-07-20T15:32:57.656933Z",
          "id": "CVE-2026-45712",
          "options": [
            {
              "exploitation": "poc"
            },
            {
              "automatable": "no"
            },
            {
              "technicalImpact": "partial"
            }
          ],
          "role": "CISA Coordinator",
          "version": "2.0.3"
        }
      }
    ]
  },
  "weaknesses": [
    {
      "source": "[email protected]",
      "type": "Primary",
      "description": [
        {
          "lang": "en",
          "value": "CWE-362"
        },
        {
          "lang": "en",
          "value": "CWE-770"
        }
      ]
    }
  ],
  "configurations": [
    {
      "nodes": [
        {
          "operator": "OR",
          "negate": false,
          "cpeMatch": [
            {
              "vulnerable": true,
              "criteria": "cpe:2.3:a:axllent:mailpit:*:*:*:*:*:*:*:*",
              "versionEndExcluding": "1.30.0",
              "matchCriteriaId": "3ECED29B-387E-4170-B0E7-1818C63ADB60"
            }
          ]
        }
      ]
    }
  ],
  "references": [
    {
      "url": "https://github.com/axllent/mailpit/releases/tag/v1.30.0",
      "source": "[email protected]",
      "tags": [
        "Release Notes"
      ]
    },
    {
      "url": "https://github.com/axllent/mailpit/security/advisories/GHSA-w4vj-r5pg-3722",
      "source": "[email protected]",
      "tags": [
        "Exploit",
        "Vendor Advisory"
      ]
    },
    {
      "url": "https://github.com/axllent/mailpit/security/advisories/GHSA-w4vj-r5pg-3722",
      "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
      "tags": [
        "Exploit",
        "Vendor Advisory"
      ]
    }
  ]
}