Summary
obot fails to consistently enforce Access Control Rules on the /mcp-connect endpoint, allowing an authenticated user to connect to a restricted MCP server when they know its server ID. This authorization bypass may let attackers invoke MCP tools against sensitive backend systems using stored OAuth credentials.
Affected context
The vulnerability occurs in obot deployments where:
- The
/mcp-connectendpoint is exposed to authenticated users - MCP servers are protected by Access Control Rules
- Authorization is not independently enforced when a server is selected by ID
- Stored OAuth credentials are available to the connected MCP server
Risk depends on the permissions associated with the affected MCP servers and credentials.
Exploit preconditions
- Attack surface: The authenticated
/mcp-connectAPI endpoint - Required access: Any valid authenticated user account
- Required knowledge: The identifier of a restricted MCP server
- Trigger point: An MCP connection request that references the restricted server
- Why exploitation is possible: The endpoint permits connection based on the server ID without reliably applying the server's Access Control Rules
Why this happens
The underlying flaw is an authorization enforcement gap in an object-selection endpoint. The application uses a user-supplied server identifier to select an MCP server but does not consistently verify that the requesting user is authorized to access that specific object. This maps to CWE-639: Authorization Bypass Through User-Controlled Key, because access control can be bypassed by manipulating or supplying a valid identifier for a protected resource.
Potential impact
- Authenticated users could connect to restricted MCP servers
- Attackers may invoke tools against sensitive backend systems
- Stored OAuth credentials could be used within the permissions granted to the MCP integration
- Confidential data may be exposed or modified
- Backend workflows or connected services could be disrupted
- The incident could enable lateral movement into systems reachable through MCP tools
General mitigation guidance
Mitigation generally focuses on enforcing authorization at every resource access boundary rather than relying on endpoint reachability or identifier knowledge.
Common defensive patterns include:
- Performing server-specific authorization checks after resolving the requested resource
- Applying deny-by-default policy evaluation for MCP connections
- Treating resource identifiers as selectors, not authorization evidence
- Revalidating permissions before each sensitive tool invocation where appropriate
- Limiting OAuth scopes and backend privileges to the minimum required
- Separating user identity, server identity, and credential authorization decisions
- Logging denied and permitted MCP connection attempts for accountability
These controls reduce the impact of an authorization regression or exposed server identifier.
How teams detect issues like this
Organizations can identify similar issues through:
- Static analysis for resource lookups that use request-controlled identifiers without nearby authorization checks
- Code review of endpoint handlers that resolve objects before policy evaluation
- Tests covering authorized, unauthorized, and cross-tenant access to every MCP server
- Negative authorization tests using valid identifiers belonging to other users or groups
- API policy enforcement requiring object-level authorization before connection establishment
- Monitoring for unusual connections to restricted servers or unexpected use of stored OAuth credentials
Automated security testing and code review tools may help identify missing object-level authorization checks.

