Description
Wazuh is a free and open source platform used for threat prevention, detection, and response. Prior to version 4.14.5, issues in the Cluster Distributed API (DAPI) handling allow a cluster peer, or any actor able to authenticate to the cluster channel using the shared cluster key, to make the master node deserialize an attacker-controlled callable and execute it under an attacker-controlled RBAC context. The cluster code in `framework/wazuh/core/cluster/common.py` deserializes JSON with `as_wazuh_object()`, which resolves any callable whose top-level package is wazuh or api (an overly broad allowlist controlled only by `ALLOWED_CALLABLES_PACKAGES`), and DAPI requests handled in framework/wazuh/core/cluster/dapi/dapi.py accept a client-supplied rbac_permissions value that `run_local()` applies as the global RBAC context, so supplying an rbac_mode of black causes authorization checks for expose_resources-protected functions to pass without any legitimate permission assignment. Combined, these allow privileged administrative actions on the master node such as arbitrary file writes under WAZUH_PATH, creation of new API users, and tampering with security.yaml, and can be chained into full manager compromise. This issue has been fixed in version 4.14.5.
Published: 2026-07-20
Score: 8.4 High
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

Wazuh uses a Cluster Distributed API to coordinate nodes. Prior to version 4.14.5, the deserialization logic in framework/wazuh/core/cluster/common.py accepts any callable whose top‑level package is listed in an overly broad allowlist. An attacker who can authenticate to the cluster channel using the shared cluster key can craft a JSON payload that, when deserialized, invokes a privileged method on the master node. Because the DAPI request handler also accepts a client supplied rbac_permissions value that is applied as the global RBAC context, an attacker can force the authorization checks to run under a black‑hat context and bypass permission requirements. The combination permits arbitrary file writes under WAZUH_PATH, creation of API users, tampering with security.yaml, and can be chained into full manager compromise. This is a classic deserialization vulnerability identified by CWE‑502.

Affected Systems

All publicly released versions of Wazuh prior to 4.14.5 are vulnerable. The issue appears in the core cluster components found in the wazuh distribution. Any deployment using an older Wazuh version or unpatched master node is exposed.

Risk and Exploitability

The CVSS score of 8.4 indicates a high severity with the potential for full administrative takeover. The EPSS score of 0.00187 indicates a very low likelihood of exploitation, though the vulnerability can still be leveraged by any cluster node that shares the cluster key; insider or compromised node actors can trigger it. The vulnerability is not yet listed in the CISA KEV catalog. Attackers could leverage internal cluster communication or a compromised peer to send the malicious payload, requiring only authentication to the cluster channel.

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

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade Wazuh to version 4.14.5 or later to receive the patched deserialization handling and RBAC restrictions.
  • Revoke and regenerate the cluster shared key immediately after upgrading to prevent reuse of a key that could have been compromised.
  • Restrict cluster communication to trusted nodes only and enforce network segmentation, ensuring that only authorized peers can authenticate to the cluster channel.

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

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

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

Type Values Removed Values Added
First Time appeared Wazuh
Wazuh wazuh
Vendors & Products Wazuh
Wazuh wazuh

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

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'poc', 'Technical Impact': 'total'}, 'version': '2.0.3'}


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

Type Values Removed Values Added
Description Wazuh is a free and open source platform used for threat prevention, detection, and response. Prior to version 4.14.5, issues in the Cluster Distributed API (DAPI) handling allow a cluster peer, or any actor able to authenticate to the cluster channel using the shared cluster key, to make the master node deserialize an attacker-controlled callable and execute it under an attacker-controlled RBAC context. The cluster code in `framework/wazuh/core/cluster/common.py` deserializes JSON with `as_wazuh_object()`, which resolves any callable whose top-level package is wazuh or api (an overly broad allowlist controlled only by `ALLOWED_CALLABLES_PACKAGES`), and DAPI requests handled in framework/wazuh/core/cluster/dapi/dapi.py accept a client-supplied rbac_permissions value that `run_local()` applies as the global RBAC context, so supplying an rbac_mode of black causes authorization checks for expose_resources-protected functions to pass without any legitimate permission assignment. Combined, these allow privileged administrative actions on the master node such as arbitrary file writes under WAZUH_PATH, creation of new API users, and tampering with security.yaml, and can be chained into full manager compromise. This issue has been fixed in version 4.14.5.
Title Wazuh cluster DAPI arbitrary callable deserialization and RBAC context injection allow a cluster peer to execute privileged functions on the master node
Weaknesses CWE-502
References
Metrics cvssV3_1

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


cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-07-20T17:30:46.933Z

Reserved: 2026-02-25T15:28:40.650Z

Link: CVE-2026-28220

cve-icon Vulnrichment

Updated: 2026-07-20T17:30:41.741Z

cve-icon NVD

No data.

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

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

Weaknesses
  • CWE-502

    Deserialization of Untrusted Data