Skip to content

MCP Client OAuth Issuer Binding (Authorization-Server Mix-Up / Cross-Issuer Credential Reuse)

mcp-client-oauth-issuer-binding is a high severity check in the ai category, written in python. Its source is templates/ai/mcp/mcp-client-oauth-issuer-binding.py in cert-x-gen-templates.

ACTIVE check. Drives an MCP CLIENT’s own OAuth login path against two synthetic issuers and proves, by observation, that it fails the 2026-07-28 MCP client authorization MUSTs - it carries credentials minted by the first authorization server to the second, skips re-registration when the issuer changes, or redeems an authorization code whose RFC 9207 iss names a different issuer than the one it asked.

Field Value
Id mcp-client-oauth-issuer-binding
Severity high
Language python
Category ai
Author Bugb Research
Template version 1.0.0
Confidence 92
CVSS 8.1
Weakness CWE-346, CWE-522
Tags mcp, ai, agent, mcp-client, agent-posture, oauth, oauth-conformance, authorization-server-mixup, issuer-binding, rfc9207, credential-reuse, behavioural, active, intrusive, cwe-346, cwe-522
Target kind cli
Oracle property, diff

Declared in the header. cxg parses @references and then discards it, and nothing at scan time reads it, so this is the only place the links a template cites are surfaced.

To see what the copy on your machine says about itself, and to confirm it is installed at all:

Terminal window
cxg template info mcp-client-oauth-issuer-binding

The id it prints is the one to pass anywhere a template is selected. See cxg template for the rest of the subcommand, Scan a target for running a scan, and A match is not a finding for how to read what comes back.