Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as low-privilege MailWatch user
-
DeliveryEnumerate another tenant's message id
-
ExploitSubmit id to quarantine_action.php with own token
-
Executionquarantine_list_items() selects without global_filter
-
Persistquarantine_release() or quarantine_delete() executes
-
ImpactVictim mail force-delivered or permanently destroyed
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization SQL primary key authorization
|
| Exploitation Conditions | Exploitation requires (1) a valid authenticated MailWatch session in any non-admin tenant role (U/user, D/domain-admin, or H/host) - confirmed by PR:L and the advisory, so this is NOT remote-unauthenticated; (2) a valid CSRF token, which is not a barrier because the attacker submits a token from their own session; and (3) knowledge of a target message id, which the advisory states are enumerable. The specific vulnerable path is the quarantine action endpoint mailscanner/quarantine_action.php calling quarantine_list_items() without the per-role global_filter that listing/read views apply; it affects default installations of MailWatch <= 1.2.26 with no non-default configuration needed. The practical limiting factor is that the attacker must already hold a valid low-privilege account on the target instance (e.g. a legitimate tenant user), so the realistic threat is a malicious or compromised internal/tenant account rather than an anonymous internet attacker. |
| Impact | This is a genuine, prioritizable authorization flaw (IDOR / CWE-566 & CWE-639), not a high-CVSS-but-low-real-risk issue, though the signals are mixed and some are missing. The CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:H = 8.1 High) is well supported by the source evidence: the fix commit confirms the exact mechanism (quarantine_list_items() selected from maillog by bare id with no global_filter, patched by threading $_SESSION['global_filter'] through the action path). Attack is network-reachable with low complexity and requires only low privileges (PR:L) - any authenticated U/D/H role, i.e. the lowest tenant tier, which makes the privilege bar effectively trivial in a multi-tenant deployment. No EPSS score was provided and the vulnerability is NOT in CISA KEV (no KEV signal in input), so there is no evidence of active exploitation. No SSVC decision framework (automatable/technical-impact) was supplied; the only priority signal is the vuln.today 'this_week' label, consistent with High-but-not-emergency. The GHSA advisory documents a working proof-of-concept reproduced against v1.2.26 (delete and release of another tenant's message), but full captures are 'available on request' rather than published, so this is a described PoC rather than confirmed public weaponized exploit code. Net: real integrity/availability risk to multi-tenant quarantine data, highly credible because it is backed by vendor source code, but absent KEV/EPSS the realistic threat is opportunistic abuse by existing low-privilege account holders rather than mass internet exploitation. |
| Exploit ScenarioDerived | A low-privilege MailWatch user (role U) with a valid session enumerates message identifiers and submits them to mailscanner/quarantine_action.php using a CSRF token from their own session, invoking quarantine_release() to force-deliver another tenant's quarantined (e.g. malware/phishing) mail to its recipient, or quarantine_delete() to permanently destroy another user's or domain's held mail. A proof-of-concept was reproduced by the reporter against v1.2.26, confirming both the delete and release paths act on messages the attacker's own listing views never display. Because exploitation is network-based, low-complexity, and needs only ordinary authenticated access, any account holder in a shared deployment can carry it out. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 28, 2026
MailWatch for MailScanner 1.2.26 and earlier applies the per-role tenant filter when listing or reading quarantined mail but does not apply it on the quarantine action endpoint, so any authenticated tenant account - the low-privilege U/user, D/domain-admin and H/host roles, not just A/admin - can act on other users' and domains' quarantined messages. By supplying an arbitrary, enumerable message id to mailscanner/quarantine_action.php, an attacker can force-deliver held mail (including malware or phishing that the quarantine was containing) to the recipient's inbox or permanently delete it, giving high integrity and availability impact with no confidentiality impact (CVSS 8.1, AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:H). The advisory documents a reporter reproduction against v1.2.26; there is no CISA KEV entry and no confirmed active exploitation, and the practical limiting factor is that the attacker must already hold a valid low-privilege account on the instance, making a malicious or compromised internal/tenant user the realistic threat.
RemediationAI
Vendor-released patch: 1.2.27 - upgrade MailWatch for MailScanner to that release (https://github.com/mailwatch/MailWatch/releases/tag/v1.2.27), or backport commit bc04f25eb0cec028cbd4ded9c049cfc6f663a15f, which adds a $global_filter parameter to quarantine_list_items() and threads $_SESSION['global_filter'] through quarantine_action.php, detail.php and do_message_ops.php, and through quarantine_release(), quarantine_learn() and quarantine_delete() so the requested id is resolved within the caller's permitted user/domain. The advisory's remediation is exactly this: apply the same per-role scoping on the action path that the listing and read views already use, rather than authorizing the action on a bare id lookup. Note that the per-action checkToken() CSRF check is not a mitigation, since the caller can submit a token minted for their own session, and no separate workaround is documented by the vendor beyond applying the fixed release; the residual exposure for unpatched instances is bounded only by the need for a valid authenticated tenant account, so the interim step supported by the advisory is to treat all low-privilege tenant accounts on unpatched hosts as able to delete or release any quarantined message, and to prioritize the upgrade accordingly (reference: https://github.com/mailwatch/MailWatch/security/advisories/GHSA-w7v5-7g6w-87r4).
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
MailWatch is a PHP web front-end that reads MailScanner's maillog table and exposes quarantine views to authenticated users, with per-role scoping carried in the session variable $_SESSION['global_filter']. Listing and read views append that filter, but quarantine_list_items() in mailscanner/functions.php built its lookup as a bare "SELECT ... FROM maillog WHERE id = '$msgid'" with no tenant predicate, and quarantine_action.php reached that function directly with an attacker-supplied id, before the per-action checkToken() CSRF verification and without any ownership or role check. Because checkToken() only validates a token issued to the current session, the attacker simply submits their own token, so CSRF protection provides no barrier; the flaw is the read-scoped / write-unscoped authorization asymmetry mapped to CWE-566 (Authorization Bypass Through User-Controlled SQL Primary Key) and CWE-639, not a SQL injection or a race. The downstream helpers quarantine_release(), quarantine_learn() and quarantine_delete() re-ran quarantine_list_items() on the same bare identifier, so the unscoped result flowed into force-delivery or permanent deletion. The upstream fix (commit bc04f25eb0cec028cbd4ded9c049cfc6f663a15f) adds an optional $global_filter argument that is appended as "AND ($global_filter)" to the lookup and threads $_SESSION['global_filter'] through quarantine_action.php, detail.php and do_message_ops.php.
Know when PHP gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:H
Network-reachable PHP endpoint (AV:N), no special conditions (AC:L), any authenticated low-privilege role needed (PR:L), no user interaction; releasing held mail is I:H and permanent deletion is A:H, with no data disclosure (C:N).
Primary rating from Vendor (github).
CVSS VectorVendor: github
Lifecycle Timeline
2DescriptionCVE.org
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.
Technical POC Analysis
CWE-566 (Authorization Bypass Through User-Controlled SQL Primary Key), also tagged CWE-639 in the advisory.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
MailWatch for MailScanner (1.2.26 and earlier) contains a high-severity authorization flaw whereby any authenticated low-privilege tenant user can act on quarantined mail belonging to other users and domains-releasing contained malware or phishing into inboxes or permanently deleting held messages. Because this undercuts the quarantine layer that protects the entire organization (and potentially multiple tenants), leadership should treat it as a direct threat to email security integrity and availability, affecting all users whose quarantine is managed on the instance.
No vendor-released patch identified at time of analysis. Interim mitigations: restrict quarantine_action.php to trusted administrative roles or source IPs via reverse proxy/WAF rules, suspend unneeded low-privilege tenant accounts, monitor and audit quarantine action logs for anomalous releases or deletions, and isolate or segment affected MailWatch instances until a fix is available.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Cross-Site Request Forgery exploits the automatic credential inclusion behavior of web browsers.
In PHP versions 7.1.x below 7.1.33, 7.2.x below 7.2.24 and 7.3.x below 7.3.11 in certain configurations of FPM setup it
sapi/cgi/cgi_main.c in PHP before 5.3.12 and 5.4.x before 5.4.2, when configured as a CGI script (aka php-cgi), does not
(1) boardData102.php, (2) boardData103.php, (3) boardDataJP.php, (4) boardDataNA.php, and (5) boardDataWW.php in Netgear
The '/common/download_agent_installer.php' script in the Quest KACE System Management Appliance 8.0.318 is accessible by
ProjectSend versions prior to r1720 are affected by an improper authentication vulnerability. Rated critical severity (C
Roundcube Webmail contains a critical PHP object deserialization vulnerability (CVE-2025-49113, CVSS 9.9) that allows au
Util/PHP/eval-stdin.php in PHPUnit before 4.8.28 and 5.x before 5.6.3 allows remote attackers to execute arbitrary PHP c
Palo Alto Networks PAN-OS management web interface contains an authentication bypass allowing unauthenticated attackers
Nagios XI version xi-5.7.5 is affected by OS command injection. Rated high severity (CVSS 8.8), this vulnerability is re
Nagios XI version xi-5.7.5 is affected by OS command injection. Rated high severity (CVSS 8.8), this vulnerability is re
The get_referers function in /opt/ws/bin/sblistpack in Sophos Web Appliance before 3.7.9.1 and 3.8 before 3.8.1.1 allows
The Backup Migration plugin for WordPress is vulnerable to Remote Code Execution in all versions up to, and including, 1
EUVD-2026-112550
NVD
CVE.org
GitHub
Exploit-DB