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-XWMW-PRC4-V3CR

GHSA-XWMW-PRC4-V3CR: OAuth Dynamic Client Registration Enables API Token Theft via Audience Confusion in Obot Platform

Alon Barad
Alon Barad
Software Engineer

Sep 19, 2026·6 min read·6 visits

Executive Summary (TL;DR)

Unauthenticated OAuth client registration and missing audience validation allow attackers to harvest administrative JWTs via a silent, zero-interaction authorization flow redirection.

A critical security vulnerability exists in the Obot Platform (versions < 0.23.0) where unauthenticated OAuth dynamic client registration, a consentless authorization flow, and a lack of JWT audience validation enable remote attackers to steal API tokens via audience confusion.

Vulnerability Overview

The Obot Platform is an open-source system designed for orchestrating AI agents and Model Context Protocol (MCP) servers. To secure its control plane and manage agent access, the platform integrates an internal OAuth 2.0 authorization server. When authentication is enabled via the OBOT_SERVER_ENABLE_AUTHENTICATION=true configuration, this server governs how users and components authenticate and access APIs.

In versions prior to v0.23.0, the platform exposed a critical security flaw involving its OAuth flow. The vulnerability arises from three interacting weaknesses: unauthenticated dynamic client registration, a consentless authorization sequence, and a complete lack of audience validation during JWT verification. An attacker can exploit this combination to execute a silent privilege escalation attack.

This architecture permits an external adversary to register a malicious client, trick an authenticated administrator into navigating to a crafted authorization URL, and steal their OAuth authorization code. Because the platform does not validate the token audience, the resulting token grants the attacker full control over the Obot Server.

Root Cause Analysis

The security failure of GHSA-XWMW-PRC4-V3CR is caused by three separate implementation flaws. The first flaw is located in the dynamic client registration endpoint (/oauth/register). This endpoint was exposed publicly without authentication, allowing any remote client to register arbitrary redirect URIs.

The second flaw occurs within the OAuth authorization workflow. The Obot Server lacked a consent screen or confirmation step. If an authenticated user accessed the /oauth/authorize endpoint, the server assumed immediate consent, issuing an authorization code and redirecting the browser automatically.

The final and most critical flaw lies in the token verification subsystem of the Obot core API. While the server issues JSON Web Tokens (JWT) with an audience (aud) claim matching the requested Model Context Protocol (MCP) server, the API gateway verified only the signature and issuer. It omitted validation of the aud claim, allowing scoped MCP tokens to be accepted as administrative credentials.

Code Analysis & Flow Mapping

The vulnerable authentication logic failed to cross-reference the client identity with the intended token audience during JWT validation. The following conceptual Go implementation illustrates the missing validation check in the token parsing logic.

// VULNERABLE: Token parsing logic in < v0.23.0
func ValidateTokenVulnerable(tokenStr string, secret []byte) (*Claims, error) {
    token, err := jwt.ParseWithClaims(tokenStr, &Claims{}, func(t *jwt.Token) (interface{}, error) {
        return secret, nil
    })
    if err != nil {
        return nil, err
    }
    claims, ok := token.Claims.(*Claims)
    if !ok || !token.Valid {
        return nil, errors.New("invalid token")
    }
    // MISSING: Validation of the audience claim (claims.Audience)
    // The server trusts any signed token containing group mappings
    return claims, nil
}

In the patched version (v0.23.0), the validation subsystem explicitly checks that the target audience corresponds strictly to the expected service. The repaired code path ensures that specialized tokens are rejected on administrative routes.

// PATCHED: Enforced audience validation in >= v0.23.0
func ValidateTokenPatched(tokenStr string, secret []byte, expectedAudience string) (*Claims, error) {
    token, err := jwt.ParseWithClaims(tokenStr, &Claims{}, func(t *jwt.Token) (interface{}, error) {
        return secret, nil
    })
    if err != nil {
        return nil, err
    }
    claims, ok := token.Claims.(*Claims)
    if !ok || !token.Valid {
        return nil, errors.New("invalid token")
    }
    // PATCH: Explicitly check the audience claim
    if claims.Audience != expectedAudience {
        return nil, errors.New("audience mismatch: token is unauthorized for this endpoint")
    }
    return claims, nil
}

This logic prevents scoped OAuth tokens from being used outside their designed context. Even if an attacker registers a client and obtains a token, the token is bound to a specific audience and is useless for administrative API execution.

Exploitation Methodology

Exploitation of this vulnerability requires a multi-stage process where the attacker establishes a rogue client and redirects an active administrative session. First, the attacker registers a client pointing to a remote server. Because registration is unauthenticated, no API key or session is required to establish this rogue client.

The attacker then constructs an authorization link containing the registered client ID and sends it to the targeted administrator. The target, possessing an active session on the Obot server, opens the link. The server immediately generates an authorization code and redirects the victim's session to the attacker's server.

The attacker exchanges this code for a JWT. Although this JWT was issued under the guise of an MCP server scope, the attacker submits it to the administrative endpoints. Due to the lack of audience checks, the API processes the request with administrative rights. The following diagram illustrates this sequence.

Impact Assessment

The impact of GHSA-XWMW-PRC4-V3CR is classified as high because it allows complete control over the Obot Platform's data and agent systems. Because the tokens capture the full group memberships of the authorized user, an attacker gaining an administrator's token achieves administrative parity. They can modify workflows, read sensitive parameters, and access internal configurations.

The CVSS v3.1 base score is assessed at 8.8 (High). The primary mitigating factor in this vector is the requirement for User Interaction (UI:R), as the administrator must navigate to the authorization URL. However, the attack requires no privileges (PR:N) and is highly reliable once the victim triggers the link.

Since this is tracked via a GHSA advisory without an active CVE, it is not currently listed on the CISA KEV or tracked by public EPSS systems. Nonetheless, because the underlying primitives utilize standard OAuth registration and exchange flows, the exploitability of this issue is high and reliable.

Remediation & Mitigations

The primary remediation path is upgrading the Obot installation to version 0.23.0 or later. This release addresses the vulnerability by introducing three defensive layers. First, a mandatory consent dialog is presented to the user, blocking auto-completion of authorization requests. Second, issued tokens are tightly scoped to specific MCPs. Finally, the core API enforces audience verification.

If upgrading is not immediately feasible, operators should apply temporary access controls. Network policies can be configured to block access to the /oauth/register endpoint from public networks. This prevents external actors from registering clients and interrupts the first stage of the attack chain.

Additionally, operators can temporarily disable authentication by setting the environment variable OBOT_SERVER_ENABLE_AUTHENTICATION=false. This configuration removes the vulnerable OAuth server code from the active execution path. However, this is an emergency measure and should only be applied within trusted networks.

Technical Appendix

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

Affected Systems

Obot Platform (github.com/obot-platform/obot) running with OBOT_SERVER_ENABLE_AUTHENTICATION=true

Affected Versions Detail

Product
Affected Versions
Fixed Version
obot
obot-platform
< 0.23.0v0.23.0
AttributeDetail
CWE IDCWE-863
Attack VectorNetwork
CVSS Score8.8
EPSS ScoreN/A (No CVE Assigned)
ImpactRemote Code Execution / Privilege Escalation
Exploit StatusPoC Concept
KEV StatusNot Listed

MITRE ATT&CK Mapping

T1190Exploit Public-Facing Application
Initial Access
CWE-863
Incorrect Authorization

Incorrect Authorization

Vulnerability Timeline

Vulnerability identified and disclosed via GitHub Security Advisory
2024-11-20
Patch released in Obot version v0.23.0
2024-11-20

References & Sources

  • [1]Official GitHub Security Advisory
  • [2]GitHub Advisory Database Entry
  • [3]Official Patched Release (v0.23.0)

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

•about 1 hour ago•CVE-2026-59163
9.1

CVE-2026-59163: Critical JWT Authentication Bypass in Mnemosyne Sync Server

CVE-2026-59163 is a critical authentication bypass vulnerability in the Mnemosyne sync server. In versions prior to v3.10.1, the server's authentication logic decoded incoming JSON Web Tokens (JWT) but completely skipped cryptographic signature verification. An unauthenticated remote attacker can exploit this vulnerability to bypass authentication, impersonate arbitrary users, read synchronized AI agent states, or write malicious database updates.

Alon Barad
Alon Barad
2 views•7 min read
•about 2 hours ago•CVE-2026-85058
7.5

CVE-2026-85058: Missing Authorization in Moquette MQTT Broker Last Will and Testament Feature

An authorization bypass vulnerability exists in the Moquette MQTT broker prior to version 0.18.1. When an MQTT client registers a Last Will and Testament (LWT) topic during its connection setup, the broker fails to perform write-access checks on that topic. Upon an abrupt client disconnection, the broker publishes the registered Will message to subscribers of the unauthorized topic, bypassing configured Access Control Lists (ACLs).

Amit Schendel
Amit Schendel
5 views•8 min read
•about 3 hours ago•CVE-2026-71537
6.5

CVE-2026-71537: Credit-Refund Double-Spend Race Condition in Paymenter Service Downgrade

A concurrent execution vulnerability (CWE-362) exists in the Paymenter webshop solution within the service downgrade execution path (doUpgrade). Authenticated customers can exploit this concurrency issue by sending concurrent HTTP requests to trigger multiple parallel executions of the refund process. Because the application checks for pending upgrades without database transactional isolation or exclusive row locks, attackers can generate multiple duplicate refunds to their account balance for a single downgrade action. This leads to arbitrary credit inflation on the platform.

Amit Schendel
Amit Schendel
5 views•9 min read
•about 5 hours ago•GHSA-PR6H-VR44-XQ8J
5.3

GHSA-PR6H-VR44-XQ8J: Authentication Bypass in Obot Model Context Protocol (MCP) Registry API

An authentication bypass vulnerability in Obot versions <= v0.22.1 allows unauthenticated remote attackers to access Model Context Protocol (MCP) registry metadata and retrieve server lists when OBOT_SERVER_ENABLE_REGISTRY_AUTH is configured. This is due to a routing logic flaw where `/v0.1` paths are incorrectly categorized as public frontend user interface assets.

Amit Schendel
Amit Schendel
5 views•8 min read
•about 10 hours ago•GHSA-JGH3-FGGC-MCPM
7.6

GHSA-jgh3-fggc-mcpm: Non-Blind Server-Side Request Forgery (SSRF) in Obot Platform

An authenticated Server-Side Request Forgery (SSRF) vulnerability in the Obot Platform allows administrative or power users to bypass IP verification and scan or query internal resources, private networks, and cloud instance metadata services (IMDS). Because response bodies and error details are reflected back to the client interface, this constitutes a non-blind SSRF.

Alon Barad
Alon Barad
9 views•8 min read
•about 11 hours ago•GHSA-JR78-W6W5-M8F8
7.3

GHSA-JR78-W6W5-M8F8: Missing Authorization in Semantic MediaWiki smwtask API Module Allows Unauthenticated Administrative Actions

Semantic MediaWiki starting from version 3.0.0 up to and including 7.2.1 is vulnerable to an unauthenticated missing authorization flaw in its `smwtask` API module. The endpoint fails to execute permission or privilege checks on callers. Instead, it relies on a CSRF token check, which can be satisfied by anonymous users using MediaWiki's static public CSRF token. Remote, unauthenticated attackers can exploit this flaw to retrieve internal database statistics, enqueue background jobs, run database queries, or trigger entity disposal processes, potentially leading to information disclosure, database corruption, and Denial of Service.

Alon Barad
Alon Barad
8 views•6 min read