Skip to content

Demo · fictional data

The dashboard your team gets.

Findings appear as each one is confirmed, so engineers can start fixing before the readout. Click around.

Fernhill Software (fictional)
criticalSC-01Retest: Fixed

Tokens issued for other services are accepted

The server accepts any access token signed by the CRM's authorization server, without checking that the token was issued for this MCP server. It then forwards the same token to the CRM API.

Evidence

POST /mcp HTTP/1.1
Host: mcp.fernhill.example
Authorization: Bearer <token issued for analytics.fernhill.example>

{"method":"tools/call","params":{"name":"export_report"}}

HTTP/1.1 200 OK   ← should be 401

Impact

Any app that holds a Fernhill token for a different service, including a low-trust third-party integration, can call every MCP tool as that user.

Fix

Validate the token audience against this server's resource identifier (RFC 8707) and reject everything else. Exchange the token for a downstream token instead of passing it through.

On a real audit, the dashboard is private to your team, behind a sign-in only your people can use.