CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



GHSA-6G25-PC82-VFWP

GHSA-6G25-PC82-VFWP: PKCE Verifier Exposure in OpenClaw OAuth Implementation

Amit Schendel
Amit Schendel
Senior Security Researcher

Mar 3, 2026·5 min read·11 visits

Executive Summary (TL;DR)

OpenClaw for macOS accidentally exposed the secret PKCE `code_verifier` in the public OAuth URL `state` parameter. This allowed attackers to intercept both the authorization code and the verifier, enabling full account takeover of connected Anthropic accounts. The feature was removed in the fix.

A critical information exposure vulnerability was identified in the OpenClaw macOS application's onboarding flow, specifically within its integration with Anthropic's OAuth service. The application incorrectly transmitted the Proof Key for Code Exchange (PKCE) `code_verifier`—a secret cryptographic material intended to be kept private—within the public `state` parameter of the OAuth authorization URL. This architectural flaw meant that the secret verifier was exposed in the query string of the redirect URL. Because the `state` parameter travels via the browser front-channel, any attacker capable of intercepting the authorization code (for example, through malicious browser extensions, history sniffing, or local URL scheme monitoring) would simultaneously obtain the `code_verifier`. This negates the security protections offered by PKCE, allowing the attacker to exchange the intercepted code for a valid access token and take over the user's Anthropic session.

Vulnerability Overview

The vulnerability resides in the AnthropicOAuth module of the OpenClaw macOS application, specifically in the logic used to construct the authorization URL for Anthropic's service. OpenClaw utilizes the OAuth 2.0 Authorization Code Flow with Proof Key for Code Exchange (PKCE) to securely connect users to their Anthropic accounts. PKCE is designed to prevent authorization code interception attacks by requiring the client to create a secret code_verifier and a corresponding code_challenge.

In a correct implementation, the code_challenge is sent in the initial authorization request, while the code_verifier is kept secret and only sent directly to the token endpoint (back-channel) to prove possession of the secret. OpenClaw's implementation, however, mistakenly assigned the secret code_verifier to the OAuth state parameter. The state parameter is transmitted in the URL query string and echoed back by the authorization server in the HTTP redirect.

This exposure creates a critical breach of the OAuth security model. Since the state parameter is visible in the browser address bar, logs, and history, the secret verifier becomes public knowledge to anyone observing the network traffic or the local machine's URL handling events. Consequently, the mechanism intended to protect the authorization code (PKCE) is rendered useless because the "key" to the code is attached to the code itself.

Root Cause Analysis

The root cause is a semantic misunderstanding of OAuth 2.0 parameters within the AnthropicOAuth.swift file. The developer conflated the state parameter (used for CSRF protection and application state preservation) with the code_verifier (a cryptographic secret used for authentication).

The vulnerability exists in the buildAuthorizeURL function. Instead of generating a random, opaque string for the state parameter, the application explicitly injected the sensitive pkce.verifier into the URL query items. The diagram below illustrates the broken flow compared to the standard secure flow.

By placing the verifier in the state, the application broadcasted the shared secret required to complete the login process. This error transforms a standard authorization code interception (which PKCE is meant to thwart) into a trivial exploitation path, as the attacker no longer needs to deduce the verifier—it is provided to them on a silver platter.

Code Analysis

The critical flaw was located in AnthropicOAuth.swift. The specific function responsible for constructing the URL query parameters directly mapped the PKCE verifier to the state key.

Vulnerable Code (AnthropicOAuth.swift):

static func buildAuthorizeURL(pkce: PKCE) -> URL {
    var components = URLComponents(url: self.authorizeURL, resolvingAgainstBaseURL: false)!
    components.queryItems = [
        URLQueryItem(name: "code", value: "true"),
        URLQueryItem(name: "client_id", value: self.clientId),
        URLQueryItem(name: "code_challenge", value: pkce.challenge),
        // CRITICAL FLAW: The secret verifier is assigned to the public 'state' parameter
        URLQueryItem(name: "state", value: pkce.verifier),
    ]
    return components.url!
}

Patch Analysis:

Rather than modifying the code to use a correct random state value, the maintainers opted to remove the entire AnthropicOAuth implementation. The commit 8f3310000a8b0c11eced054c2cdb6fb27803511a deletes AnthropicOAuth.swift, AnthropicAuthControls.swift, and related onboarding logic. The application moved away from this OAuth flow entirely, likely reverting to manual API key entry or a different authentication strategy that does not require this complex handshake. This remediation effectively eliminates the vulnerability by removing the affected attack surface.

Exploitation Methodology

Exploiting this vulnerability requires the ability to observe the redirect URL generated during the OAuth dance. On macOS, this is often achievable if the application registers a custom URL scheme (e.g., openclaw://) that other applications can invoke or monitor.

Step 1: Monitoring The attacker sets up a mechanism to observe URL opens or monitors network traffic if they are on the same local network (and TLS is not properly enforced or inspected). Alternatively, a malicious application installed on the victim's Mac could register itself as a handler for the specific URL scheme or monitor the system's clipboard/logs if the URL is copied.

Step 2: Interception When the victim initiates the "Connect Claude" flow, the browser redirects to Anthropic and then back to the application. The return URL looks like this: openclaw://callback?code=AUTH_CODE_123&state=SECRET_VERIFIER_ABC

Step 3: Extraction and Exchange The attacker parses this URL to extract:

  1. The code (AUTH_CODE_123)
  2. The verifier (found in the state parameter: SECRET_VERIFIER_ABC)

Step 4: Token Generation The attacker sends a standard POST request to Anthropic's token endpoint using these two stolen values. Since the verifier matches the challenge sent in the initial request (which the attacker didn't need to see), the server validates the request and issues an access token. The attacker now has persistent access to the victim's Anthropic account context.

Impact Assessment

The impact of this vulnerability is classified as Critical (CVSS 9.8). Successful exploitation leads to a full account takeover of the integrated service (Anthropic/Claude) within the context of the OpenClaw application.

Confidentiality: High. The attacker gains access to the victim's Anthropic API interactions, which may include sensitive prompts, completions, and potentially other data accessible via the compromised scope.

Integrity: High. The attacker can perform actions on behalf of the user, potentially manipulating data or consuming API credits (financial impact).

Availability: High. The attacker could revoke the user's legitimate tokens or exhaust quotas, denying service to the rightful owner.

Because the flaw occurs in the authentication handshake itself, it bypasses standard access controls. The reliance on PKCE was intended to secure the flow against interception, but the implementation error inverted this security property, making the secret explicitly available to interceptors.

Official Patches

OpenClawFix Commit: Removal of vulnerable OAuth components
GitHubOfficial GitHub Security Advisory

Fix Analysis (1)

Technical Appendix

CVSS Score
9.8/ 10
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

Affected Systems

OpenClaw macOS Application (Beta versions prior to 2026-02-25)

Affected Versions Detail

Product
Affected Versions
Fixed Version
OpenClaw macOS
OpenClaw
< Commit 8f33100 (2026-02-25)Commit 8f33100
AttributeDetail
CVE IDGHSA-6G25-PC82-VFWP
CVSS v3.19.8 (Critical)
CWE IDCWE-598
Attack VectorNetwork (AV:N)
ImpactInformation Exposure / Account Takeover
RemediationFeature Removal

MITRE ATT&CK Mapping

T1552.001Unsecured Credentials: Credentials In Files
Credential Access
T1190Exploit Public-Facing Application
Initial Access
T1040Network Sniffing
Credential Access
CWE-598
Information Exposure Through Query Strings in GET Request

Vulnerability Timeline

Vulnerability Disclosed
2026-02-25
Patch Committed (Removal of feature)
2026-02-25
GHSA Published
2026-02-25
BSI Issues Warning
2026-02-27

References & Sources

  • [1]GHSA-6G25-PC82-VFWP Advisory
  • [2]BSI Security Warning

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•44 minutes ago•GHSA-534H-C3CW-V3H9
5.5

GHSA-534h-c3cw-v3h9: Local Information Disclosure via Abstract-Namespace Socket in Nuxt Dev Server

A local security vulnerability in the Nuxt development server (nuxt dev) allows local unprivileged users to access sensitive configuration files and source code. On Linux environments running Node.js 20+, Nuxt bound its internal vite-node IPC server to an abstract-namespace Unix socket without any peer authentication, enabling co-resident local users to connect and request module code directly.

Amit Schendel
Amit Schendel
1 views•5 min read
•about 1 hour ago•GHSA-8RFP-98V4-MMR6
0.0

GHSA-8RFP-98V4-MMR6: Protocol-Filtering Bypass via Unicode Obfuscation in Mozilla Bleach

Mozilla Bleach is an open-source HTML sanitizing library for Python. Versions up to and including 6.3.0 contain an incomplete filtering implementation in the URI validation logic ('sanitize_uri_value'). This logic fails to detect disallowed protocols, such as 'javascript:', if they contain Unicode invisible characters, whitespace characters, or characters with a code point greater than U+00A0. While standard-compliant web browsers do not directly execute invalid URI schemes containing these non-standard characters, downstream systems that normalize Unicode text by stripping invisible or non-ASCII characters can unintentionally reactivate the 'javascript:' prefix, causing Cross-Site Scripting (XSS). Additionally, this behavior violates Bleach's core sanitization contract by outputting URIs that bypass protocol allowlists configured by the caller.

Amit Schendel
Amit Schendel
2 views•7 min read
•about 2 hours ago•GHSA-G75F-G53V-794X
4.3

GHSA-G75F-G53V-794X: CPU Exhaustion via Unbounded Email Regular Expression Scanning in Bleach

An uncontrolled resource consumption vulnerability exists in the Python package Bleach when parsing text to linkify email addresses. When `parse_email=True` is enabled, the regular expression engine is forced into a quadratic-time complexity scan on specially crafted payloads lacking an '@' symbol. This causes immediate CPU exhaustion and blocks application server worker processes.

Amit Schendel
Amit Schendel
2 views•6 min read
•about 2 hours ago•GHSA-GR75-JV2W-4656
4.7

GHSA-GR75-JV2W-4656: Path Traversal and Sandbox Escape in LangChain File-Search Middleware and Loaders

A path traversal and sandbox escape vulnerability in LangChain and LangChain-Anthropic Python packages allows unauthenticated local attackers to access files outside the restricted directory via crafted input, symbolic links, or prefix bypasses.

Alon Barad
Alon Barad
2 views•8 min read
•about 3 hours ago•GHSA-M557-WRGG-6RP4
5.8

GHSA-m557-wrgg-6rp4: Server-Side Request Forgery via Authority Information Access (AIA) Chasing in phpseclib

The PHP Secure Communications Library (phpseclib) contains a Server-Side Request Forgery (SSRF) vulnerability due to an insecure default implementation of Authority Information Access (AIA) certificate chasing. This flaw allows remote, unauthenticated attackers to coerce applications validating user-supplied X.509 certificates into generating arbitrary outbound HTTP requests to internal networks or local interfaces.

Amit Schendel
Amit Schendel
3 views•6 min read
•about 3 hours ago•CVE-2026-45491
6.2

CVE-2026-45491: Directory Traversal via Improper Link Resolution in .NET System.Formats.Tar

A directory traversal vulnerability exists in the Microsoft .NET System.Formats.Tar library during archive extraction. When extracting a TAR archive using the TarFile.ExtractToDirectory API, the extraction engine improperly resolves symbolic links prior to file creation, allowing local unauthorized attackers to write or overwrite arbitrary files outside the target directory. This can lead to local tampering, privilege escalation, or arbitrary code execution.

Amit Schendel
Amit Schendel
7 views•6 min read