CVE-2026-35669 Overview
CVE-2026-35669 is a privilege escalation vulnerability affecting OpenClaw versions prior to 2026.3.25. The vulnerability exists in gateway-authenticated plugin HTTP routes that incorrectly mint operator.admin runtime scope regardless of the caller-granted scopes. This scope boundary bypass allows attackers with low-privilege access to escalate their permissions and perform unauthorized administrative actions within the OpenClaw platform.
Critical Impact
Authenticated attackers can bypass scope restrictions to gain full administrative privileges, potentially leading to complete system compromise, unauthorized data access, and malicious configuration changes.
Affected Products
- OpenClaw versions prior to 2026.3.25
- OpenClaw Node.js package installations
- Systems utilizing OpenClaw gateway-authenticated plugin HTTP routes
Discovery Timeline
- 2026-04-10 - CVE-2026-35669 published to NVD
- 2026-04-13 - Last updated in NVD database
Technical Details for CVE-2026-35669
Vulnerability Analysis
This privilege escalation vulnerability stems from an improper access control issue in OpenClaw's gateway-authenticated plugin HTTP routes. When processing authenticated requests through the gateway plugin system, the application fails to properly validate and enforce the caller's granted scopes. Instead of inheriting the limited permissions associated with the authenticated user's actual scope, the vulnerable code path automatically mints an operator.admin runtime scope.
This design flaw allows any authenticated user, regardless of their assigned permission level, to execute administrative operations. The network-accessible nature of this vulnerability means that any user with valid credentials and network access to the OpenClaw gateway can exploit this flaw without requiring additional privileges or user interaction.
The vulnerability is classified under CWE-648 (Incorrect Use of Privileged APIs), indicating that the application incorrectly handles privilege boundaries when invoking internal APIs responsible for scope management.
Root Cause
The root cause of CVE-2026-35669 lies in the gateway plugin's authentication middleware. When processing HTTP requests, the middleware responsible for establishing runtime scopes fails to properly inherit or validate the scopes granted to the calling user. Instead, the flawed logic unconditionally assigns the operator.admin scope, effectively bypassing all authorization controls.
This indicates a fundamental flaw in the privilege boundary enforcement mechanism where scope minting occurs without proper validation against the authenticated user's actual permissions.
Attack Vector
An attacker with low-privilege authenticated access to an OpenClaw instance can exploit this vulnerability by making HTTP requests through gateway-authenticated plugin routes. The attack follows this pattern:
- The attacker authenticates to OpenClaw with a low-privilege account
- The attacker sends a crafted HTTP request to a gateway plugin endpoint
- The vulnerable authentication middleware incorrectly assigns operator.admin scope
- The attacker's request is processed with elevated administrative privileges
- The attacker can now perform unauthorized administrative actions
The vulnerability affects the authentication scope handling within gateway plugin HTTP routes. When a request passes through the gateway authentication layer, the scope validation logic fails to enforce the caller's actual granted permissions, instead defaulting to administrative privileges. For detailed technical information, refer to the GitHub Security Advisory.
Detection Methods for CVE-2026-35669
Indicators of Compromise
- Unusual administrative actions performed by low-privilege user accounts
- Audit log entries showing scope elevation patterns in gateway plugin requests
- Unexpected configuration changes or user permission modifications
- API calls to administrative endpoints from non-administrative user sessions
Detection Strategies
- Monitor OpenClaw audit logs for scope mismatch events where granted scope differs from runtime scope
- Implement alerting for administrative operations performed by users without explicit admin privileges
- Review HTTP request logs to gateway plugin endpoints for anomalous access patterns
- Deploy application-layer intrusion detection to identify privilege escalation attempts
Monitoring Recommendations
- Enable verbose logging for gateway-authenticated plugin routes
- Configure real-time alerts for operator.admin scope assignments to non-admin users
- Implement session monitoring to track privilege changes during active sessions
- Establish baseline access patterns and alert on deviations
How to Mitigate CVE-2026-35669
Immediate Actions Required
- Upgrade OpenClaw to version 2026.3.25 or later immediately
- Audit recent administrative actions for any unauthorized changes
- Review user permissions and revoke any inappropriately elevated privileges
- Temporarily restrict access to gateway plugin HTTP routes if patching is not immediately possible
Patch Information
The OpenClaw maintainers have released a security patch addressing this vulnerability. The fix is available in version 2026.3.25 and later. The patch corrects the scope minting logic in gateway-authenticated plugin HTTP routes to properly inherit and validate caller-granted scopes.
For technical details on the fix, refer to the GitHub commit. Additional context is available in the GitHub Security Advisory and the VulnCheck Advisory.
Workarounds
- Implement network-level access controls to restrict gateway plugin endpoint access to trusted users only
- Deploy a reverse proxy with additional authentication layers in front of OpenClaw
- Disable or remove unnecessary gateway plugins until the patch can be applied
- Monitor and audit all administrative actions with enhanced logging
# Verify OpenClaw version after patching
npm list openclaw | grep openclaw
# Expected output should show version 2026.3.25 or later
# Restrict access to gateway routes at the network level (example using iptables)
iptables -A INPUT -p tcp --dport 8080 -s trusted_network/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 8080 -j DROP
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

