Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconObtain users_admin account credentials
-
DeliveryAuthenticate to Wazuh REST API
-
ExploitSend PUT /security/users/1 with attacker-chosen password
-
InstallNone current_user stripped by remove_nones_to_dict()
-
C2Reserved-account guard fails open
-
ExecuteWazuh superuser password overwritten
-
ImpactAuthenticate as wazuh superuser for full platform control
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Authorization logic validation
MITRE ATT&CK
1 technique across 1 tactic: Privilege Escalation The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires an authenticated session with an account that has been assigned the users_admin role within the target Wazuh deployment; unauthenticated access or standard analyst/read-only roles are insufficient. The attacker must be able to reach the Wazuh API service (typically exposed on HTTPS port 55000) and the target instance must run Wazuh 4.9.0-4.10.3 or 4.11.0-4.14.5. No non-default configuration is required - the flaw exists in the default code path invoked whenever any users_admin account issues a PUT /security/users/{user_id} request, and the exploit succeeds against any user_id value at or below 99 (the MAX_ID_RESERVED constant), covering all built-in protected accounts including the wazuh superuser (ID 1) and wazuh-wui (ID 2). The primary and most meaningful limiting factor is possession of the users_admin role; organizations that enforce least-privilege role assignments and maintain strong credential hygiene for privileged Wazuh accounts face substantially lower realistic exploitation risk than those that have broadly provisioned the role. |
| Impact | The CVSS 3.1 base score of 8.2 with a Changed Scope flag correctly signals the potential to pivot from a privileged-but-restricted role (users_admin) to full superuser control, which is the genuine danger. However, the vendor-supplied impact metrics of C:L/I:L/A:H appear to substantially understate the realized impact: gaining full administrative control over the wazuh superuser account grants unrestricted read and write access to all security telemetry, agent configurations, active-response rules, and integration credentials - an outcome that warrants C:H/I:H treatment rather than C:L/I:L; defenders should note this discrepancy explicitly and assess the practical severity as higher than the numerical score implies. The PR:H metric (users_admin role required) is the most significant constraint on this vulnerability's real-world risk surface, limiting exploitation to accounts that have already been granted elevated Wazuh permissions via insider access, lateral movement, or over-provisioning. Even a mid-sized municipal IT team in gniezno running Wazuh as their primary SIEM should treat this as urgent, however, because the exploitation path is deterministic and requires only a single well-crafted API request once the role is held - AC:L confirms no race conditions or environmental dependencies apply. No EPSS score was supplied in the input data, and the absence of a CISA KEV listing suggests exploitation has not been confirmed at widespread scale; that said, the simplicity of the technique means the window between patch release and targeted exploitation is likely short. |
| Exploit ScenarioDerived | An attacker who has obtained or legitimately holds a Wazuh account with the users_admin role authenticates to the Wazuh REST API and sends a single PUT request to /security/users/1 with an attacker-chosen password string. Because current_user resolves to None and is stripped by remove_nones_to_dict(), the reserved-account protection check is never enforced, and the wazuh superuser's password is silently overwritten with the attacker's value. The attacker then logs in as the wazuh superuser, gaining unrestricted administrative control over all connected agents, detection rules, and active-response configurations across the entire Wazuh deployment. No public exploit code has been identified, but the deterministic, single-request nature of the flaw requires no tooling beyond a standard HTTP client. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 19, 2026
Privilege escalation in Wazuh 4.9.0-4.10.3 and 4.11.0-4.14.5 allows any authenticated user holding the users_admin role to overwrite the password of protected built-in administrator accounts - including the wazuh superuser - via a logic flaw in the PUT /security/users/{user_id} REST API endpoint. The API controller passes request.get("user"), which resolves to None because that key is absent from the request object, instead of extracting the authenticated principal from the JWT token; remove_nones_to_dict() then silently strips the None before it reaches the reserved-account authorization guard in the framework layer, causing the protection check to fail open. The issue is confirmed fixed in v4.10.4 and v4.14.6; no public exploit code or CISA KEV listing has been identified at time of analysis.
RemediationAI
Upgrade to Wazuh v4.10.4 or v4.14.6 - confirmed patched releases available at https://github.com/wazuh/wazuh/releases/tag/v4.10.4 and https://github.com/wazuh/wazuh/releases/tag/v4.14.6 respectively. The patch is a one-line correction in security_controller.py (PR #35442, commit 1a38d11) combined with a companion hardening change in framework/wazuh/security.py (PR #35469, commit 813add3) that raises WazuhError(5011) rather than silently permitting None current_user values. For organizations unable to patch immediately, the most effective compensating control is auditing and revoking the users_admin role from any accounts that do not strictly require it, since the vulnerability is only exploitable by a holder of that role. API access logs should be monitored for unexpected PUT /security/users/{id} requests targeting user IDs 1-99 (the MAX_ID_RESERVED range); such calls indicate attempted or completed exploitation. Network-layer restrictions limiting which hosts can reach the Wazuh API port (typically HTTPS/55000) reduce exposure from external actors but do not address insider or post-compromise lateral-movement scenarios. No workaround preserves full users_admin functionality while blocking this specific bypass; role removal remains the only reliable interim mitigation.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 packages in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Wazuh (CPE: cpe:2.3:a:wazuh:wazuh:*) is an open-source SIEM and XDR platform. The vulnerability originates in api/api/controllers/security_controller.py within the update_user async handler, which is supposed to pass the authenticated requester's identity as current_user so that framework/wazuh/security.py can enforce the rule that accounts with user_id at or below MAX_ID_RESERVED (99) cannot be modified by non-superusers. Because the handler reads request.get("user") - a key that does not exist on the request object - the value returned is None. The helper remove_nones_to_dict() strips this None before the payload reaches the framework layer, so current_user arrives as None at the authorization check. The original guard condition read 'if int(user_id[0]) <= MAX_ID_RESERVED and current_user is not None', meaning a None current_user caused the entire block to be skipped, allowing the password update to proceed unchallenged against any reserved account. This is a textbook CWE-863 (Incorrect Authorization) pattern: the authorization control receives incorrect input and silently fails open rather than denying access. The fix, confirmed in PR #35442 and commit 1a38d11, corrects the source of current_user to request.context['token_info']['sub'] (the JWT sub claim) and simultaneously hardens the framework check to raise WazuhError(5011) when current_user is None, eliminating both the incorrect sourcing and the permissive fallback behavior.
Know when Wazuh 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:H/UI:N/S:C/C:L/I:L/A:H
PR:H reflects the mandatory users_admin role; C:H/I:H assigned because gaining the wazuh superuser password yields unrestricted read and write access across the entire platform, not just partial impact.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
Wazuh is a free and open source platform used for threat prevention, detection, and response. From 4.9.0 until 4.10.4 and 4.14.6, PUT /security/users/{user_id} in api/api/controllers/security_controller.py passes request.get("user") instead of request.context['token_info']['sub'] as current_user. remove_nones_to_dict() removes the resulting None value, so the reserved-account protection in framework/wazuh/security.py cannot verify who is making the request. An authenticated user with the users_admin role can overwrite the password of protected administrator accounts with user IDs at or below 99, including the wazuh superuser, and gain full administrative control. This issue is fixed in versions 4.10.4 and 4.14.6.
Executive ViewAI
Wazuh versions 4.9.0-4.10.3 and 4.11.0-4.14.5 contain a privilege escalation vulnerability in the user management API that allows any authenticated user with users_admin role to assume superuser access, potentially compromising the entire security monitoring platform. Although no public exploit code has been identified at time of analysis, the flaw creates an immediate insider threat risk for organizations where multiple users hold the users_admin role. The vulnerability is corrected in v4.10.4 and v4.14.6, and patching is essential to eliminate this privilege escalation pathway.
Apply vendor patch.
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
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
Wazuh SIEM platform versions 4.4.0 through 4.9.0 contain an unsafe deserialization vulnerability in the DistributedAPI t
In the wazuh-slack active response script in Wazuh 4.2.x before 4.2.5, untrusted user agents are passed to a curl comman
Path-traversal-driven root code execution affects the Wazuh security platform's cluster synchronization layer in version
Arbitrary file read in Wazuh cluster deployments (4.0.0 through 4.14.5, and 5.0.0-beta1/beta2) lets a peer node that alr
Arbitrary file write leading to root remote code execution affects Wazuh worker nodes in clustered deployments running v
A critical deserialization vulnerability in Wazuh's cluster mode allows attackers with access to any worker node to achi
Wazuh Agent before 4.13.0 on Windows can be made by an authenticated, high-privileged configuration writer to open attac
Remote code execution on the Wazuh cluster master node is achievable by any attacker who controls a cluster worker node,
Path traversal in Wazuh's ip-customblock active response script allows low-privileged remote attackers to create or dele
The agent in OSSEC through 3.1.0 on Windows allows local users to gain NT AUTHORITY\SYSTEM access via Directory Traversa
Cluster key disclosure in Wazuh Manager versions 4.0.0 through 4.14.4 enables a two-stage privilege escalation: a low-pr
Unauthenticated remote denial of service in the Wazuh cluster daemon (wazuh-clusterd) allows a network peer to exhaust p
EUVD-2026-62564
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB