Description
Mailpit is an email testing tool and API for developers. The fix for GHSA-6jxm-fv7w-rw5j (CVE-2026-23845, "Server-Side Request Forgery (SSRF) via HTML Check API"), shipped in mailpit `v1.28.3`, hardened `internal/htmlcheck/css.go::downloadCSSToBytes` with a 5MB size cap, a `text/css` content-type check, login-info stripping in `isValidURL`, and an opt-in `--block-remote-css-and-fonts` config flag — but did not add the IP-filtering dialer that the same codebase already uses on the two sister SSRF endpoints (the proxy handler and link-check). Prior to version 1.30.0, `internal/htmlcheck/css.go::newSafeHTTPClient` is mis-named — it builds an `http.Client` whose `Transport.DialContext` calls `net.Dialer.DialContext` directly with no IP allowlisting. As a result, the SSRF originally reported by Bao Anh Phan still permits the server to dial loopback, private, link-local, and any other reserved/multicast range, provided the target replies with `HTTP/200` and a content-type beginning with `text/css`. With redirect-following (`CheckRedirect` allows redirects to any `isValidURL` URL with no IP filter), an attacker-controlled public site can redirect mailpit's request into the private network without ever appearing in the email's HTML. In the default mailpit deploy (no UI auth, no SMTP auth, port 1025/8025 exposed), this is an unauthenticated, network-reachable SSRF triggered by sending an HTML email and then issuing one HTTP `GET` to `/api/v1/message/{id}/html-check`. Version 1.30.0 contains an updated fix.
Published: 2026-07-20
Score: 5.8 Medium
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

Mailpit’s HTML‑check API was intended to prevent SSRF by restricting downloads of external CSS, but the patch for GHSA‑6jxm originally tightened the download logic while failing to enable the IP‑filtering dialer used by other SSRF endpoints. In pre‑1.30.0 releases, the client created in internal/htmlcheck/css.go::newSafeHTTPClient resolves and connects to loopback, private, link‑local, or multicast addresses when it receives a response beginning with a text/css header, because the DialContext bypasses the IP allowlist. Because redirects are followed without filtering, an attacker can host a public site that redirects the request into the private network, allowing the Mailpit server to reach internal resources without appearing in the message HTML. The flaw, classified as CWE‑918, involves the omission of address‑range checks during outbound HTTP requests and is only fully fixed in version 1.30.0, which adds an IP‑filtering dialer.

Affected Systems

axllent Mailpit releases before version 1.30.0 are vulnerable. The issue exists in all pre‑1.30.0 builds, regardless of whether the HTML‑check feature is currently enabled. The fix was delivered in the 1.30.0 release.

Risk and Exploitability

The EPSS score of <1% indicates a low probability of exploitation, and the vulnerability is not listed in the CISA KEV catalog. In a typical deployment where ports 1025/8025 are exposed and authentication is absent, the SSRF is unauthenticated and network‑reachable. An attacker can trigger the flaw by sending an HTML email and then invoking the /api/v1/message/{id}/html-check endpoint, potentially accessing internal resources.

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

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade to Mailpit version 1.30.0 or newer, which introduces an IP‑filtering dialer and fully fixes the SSRF flaw.
  • If a patch cannot be applied immediately, restrict access to the /api/v1/message/{id}/html-check endpoint by disabling it or enforcing authentication so only trusted users can call it.
  • Implement network controls to block outbound traffic from Mailpit to internal or private address ranges, preventing the server from reaching loopback, private, or link‑local addresses.

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

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-j3fj-qppj-fmmc Mailpit has an incomplete fix for GHSA-6jxm: HTML check still permits SSRF to private/loopback/IMDS via missing IP-filter dialer
History

Mon, 20 Jul 2026 23:00:00 +0000

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

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

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'yes', 'Exploitation': 'none', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


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

Type Values Removed Values Added
Description Mailpit is an email testing tool and API for developers. The fix for GHSA-6jxm-fv7w-rw5j (CVE-2026-23845, "Server-Side Request Forgery (SSRF) via HTML Check API"), shipped in mailpit `v1.28.3`, hardened `internal/htmlcheck/css.go::downloadCSSToBytes` with a 5MB size cap, a `text/css` content-type check, login-info stripping in `isValidURL`, and an opt-in `--block-remote-css-and-fonts` config flag — but did not add the IP-filtering dialer that the same codebase already uses on the two sister SSRF endpoints (the proxy handler and link-check). Prior to version 1.30.0, `internal/htmlcheck/css.go::newSafeHTTPClient` is mis-named — it builds an `http.Client` whose `Transport.DialContext` calls `net.Dialer.DialContext` directly with no IP allowlisting. As a result, the SSRF originally reported by Bao Anh Phan still permits the server to dial loopback, private, link-local, and any other reserved/multicast range, provided the target replies with `HTTP/200` and a content-type beginning with `text/css`. With redirect-following (`CheckRedirect` allows redirects to any `isValidURL` URL with no IP filter), an attacker-controlled public site can redirect mailpit's request into the private network without ever appearing in the email's HTML. In the default mailpit deploy (no UI auth, no SMTP auth, port 1025/8025 exposed), this is an unauthenticated, network-reachable SSRF triggered by sending an HTML email and then issuing one HTTP `GET` to `/api/v1/message/{id}/html-check`. Version 1.30.0 contains an updated fix.
Title Mailpit has an incomplete fix for GHSA-6jxm: HTML check still permits SSRF to private/loopback/IMDS via missing IP-filter dialer
Weaknesses CWE-918
References
Metrics cvssV3_1

{'score': 5.8, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:N/I:L/A:N'}


cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-07-20T19:08:08.066Z

Reserved: 2026-05-13T04:38:01.166Z

Link: CVE-2026-45709

cve-icon Vulnrichment

Updated: 2026-07-20T19:01:40.331Z

cve-icon NVD

No data.

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

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

Weaknesses
  • CWE-918

    Server-Side Request Forgery (SSRF)