MailWatch for MailScanner: Insecure direct object reference in quarantine actions
Summary
Any authenticated MailWatch user, including users with the lowest role, can release or permanently delete quarantined mail belonging to other users or domains by supplying a message ID to the quarantine action script. The action does not apply the per-role filter used by listing and read views, and message IDs are enumerable. An attacker can therefore force delivery of held mail, such as phishing or malware, or cause data loss.
Affected
- MailWatch for MailScanner prior to 1.2.27
Fixed in
- Fixed in MailWatch 1.2.27
Workaround
- No vendor-documented workaround. Upgrading to 1.2.27 is the remedy.
- Review accounts with U, D or H roles and remove unneeded ones.
- Restrict access to the MailWatch web interface to administrative networks.
Exploitation
- Not known to be exploited. CISA SSVC lists exploitation as PoC and automatable as no.
- Not listed in CISA KEV at the time of research.
Our recommendation
- Upgrade MailWatch to version 1.2.27 or later as soon as possible.
- Check whether MailWatch is reachable from the internet or untrusted networks and restrict access if possible.
- Review user accounts and remove unneeded MailWatch access.
- Check web server logs for requests to quarantine_action.php from non-admin accounts.
Public exploits
PoC-in-GitHub, Metasploit and Exploit-DB list nothing for this CVE.
Research sources
- GitHub Security Advisory GHSA-w7v5-7g6w-87r4 github.com
- MailWatch release 1.2.27 github.com
- Fix commit bc04f25 github.com
- MailWatch CHANGELOG github.com
- VulDB entry 428258 vuldb.com
Researched and written up in English and German by an AI (Claude by Anthropic) based on NVD, CISA, EPSS and the sources listed. The vendor information is authoritative. Researched on 1 Nov 2026, 17:50.
Original description (NVD)
MailWatch for MailScanner is a web-based front-end to MailScanner. Prior to 1.2.27, any authenticated MailWatch user, including the U/user, D/domain-admin, and H/host roles, can release to inbox or permanently delete the quarantined mail of any other user or domain by supplying an arbitrary message `id` to `mailscanner/quarantine_action.php`. The action path calls `quarantine_list_items()` in `mailscanner/functions.php`, which selects from `maillog` by the supplied identifier without the per-role `global_filter` applied by listing and read views. The action requires a valid session and CSRF token, but the caller can submit a token from the caller's own session; ownership of the requested message is never checked. Message identifiers are enumerable, allowing a low-privilege user to invoke `quarantine_release()` or `quarantine_delete()` for other users' or domains' quarantined messages, force-delivering mail held by the quarantine or permanently deleting it. This issue is fixed in version 1.2.27.
NVD references (4)
- https://github.com/mailwatch/MailWatch/commit/bc04f25eb0cec028cbd4ded9c049cfc6f663a15f
- https://github.com/mailwatch/MailWatch/releases/tag/v1.2.27
- https://github.com/mailwatch/MailWatch/security/advisories/GHSA-w7v5-7g6w-87r4
- https://github.com/mailwatch/MailWatch/security/advisories/GHSA-w7v5-7g6w-87r4
Sources
The tracker combines official, freely usable data sources – updated continuously:
- NVD (NIST) – CVEs, rating (CVSS), affected products
- CISA KEV – vulnerabilities confirmed by CISA as actively exploited
- CISA Vulnrichment – CISA assessment (SSVC) in the official CVE record
- FIRST EPSS – probability of exploitation
- Microsoft MSRC – Patch Tuesday: vulnerabilities, severity, updates
- PoC-in-GitHub – public proof-of-concept repositories
- Metasploit (Rapid7) – modules of the Metasploit Framework
- Exploit-DB (OffSec) – archive of public exploits (links only)
- Patch days: official vendor pages (linked per vendor) (Vendor patch days)
This product uses data from the NVD API but is not endorsed or certified by the NVD. EPSS data © FIRST.org.
Affected? We can help.
We check whether your systems are affected, install updates and close the gap – continuously with the System Health Checker if you wish.
