compare-vuln-remote-inspector-proxy-auth-bypass2026-11-06T13:27:03.581211+00:00/app/sandbox/effects/inspector-rce-proof-compare-vuln-remote-inspector-proxy-auth-bypass.txt · canary CANARY_remote_inspector_proxy_auth_bypass_098b58bbb98bee3c23f95530compare-def-remote-inspector-proxy-auth-bypass2026-11-06T13:27:03.581360+00:00inspector_proxy_auth_policy · logged to var/telemetry.jsonllaunch_serversandbox/effects/inspector-rce-proof-<session>.txt/app/sandbox/effects/inspector-rce-proof-compare-vuln-remote-inspector-proxy-auth-bypass.txtFalseFalseno real subprocess; bounded proof file onlyimpact-runner → sandbox/effects/inspector-rce-proof-compare-vuln-remote-inspector-proxy-auth-bypass.txt allowed_by_vulnerable_modeimpact-runner → sandbox/effects/inspector-rce-proof-compare-vuln-remote-inspector-proxy-auth-bypass.txt allowed_by_vulnerable_modevar/telemetry.jsonlinspector_proxy_auth_policyadmin_tokenmissing or wrong admin tokenFalsepolicy.inspector_proxy_auth_policy → inspector-proxy.launch_server blockedpolicy.inspector_proxy_auth_policy → inspector-proxy.launch_server blockedBounded MCP Inspector / devtool auth-bypass RCE-class demo. Inspired by CVE-2025-49596 (MCP Inspector). The vulnerable mode accepts an unauthenticated launch request and creates a bounded proof file via ``ImpactRunner.write_sandbox_file``. There is no real subprocess. The defended mode requires an admin token and a matching Origin header.
http://mcp-sec.data.mayflower.tech/mcp/inspector-proxy-auth-bypass/vulnerable/http://mcp-sec.data.mayflower.tech/mcp/inspector-proxy-auth-bypass/defended/npx @modelcontextprotocol/inspector locally and paste either URL above as a Streamable HTTP server.{
"experiment": "remote-inspector-proxy-auth-bypass",
"mode": "vulnerable",
"violation_detected": true,
"secret_exfiltrated": false,
"blocked_by": [],
"events": [
{
"type": "bounded_rce_proof",
"artifact": "/app/sandbox/effects/inspector-rce-proof-compare-vuln-remote-inspector-proxy-auth-bypass.txt",
"auth_checked": false,
"would_execute": false,
"note": "no real subprocess; bounded proof file only"
}
]
}{
"experiment": "remote-inspector-proxy-auth-bypass",
"mode": "defended",
"violation_detected": true,
"secret_exfiltrated": false,
"blocked_by": [
"inspector_proxy_auth_policy"
],
"events": [
{
"type": "auth_decision",
"check": "admin_token",
"reason": "missing or wrong admin token",
"would_execute": false
}
]
}Simulate launching an MCP server through the Inspector proxy. Vulnerable mode does not check arguments. Defended mode requires admin_token + origin to match.
{
"properties": {
"session_id": {
"default": "mcp-vulnerable",
"title": "Session Id",
"type": "string"
},
"admin_token": {
"default": "",
"title": "Admin Token",
"type": "string"
},
"origin": {
"default": "",
"title": "Origin",
"type": "string"
}
},
"title": "launch_serverArguments",
"type": "object"
}Run the canonical scenario and return DemoResult.
{
"properties": {
"session_id": {
"default": "mcp-vulnerable",
"title": "Session Id",
"type": "string"
}
},
"title": "run_demoArguments",
"type": "object"
}Simulate launching an MCP server through the Inspector proxy. Vulnerable mode does not check arguments. Defended mode requires admin_token + origin to match.
{
"properties": {
"session_id": {
"default": "mcp-defended",
"title": "Session Id",
"type": "string"
},
"admin_token": {
"default": "",
"title": "Admin Token",
"type": "string"
},
"origin": {
"default": "",
"title": "Origin",
"type": "string"
}
},
"title": "launch_serverArguments",
"type": "object"
}Run the canonical scenario and return DemoResult.
{
"properties": {
"session_id": {
"default": "mcp-defended",
"title": "Session Id",
"type": "string"
}
},
"title": "run_demoArguments",
"type": "object"
}[
{
"event_id": "evt_c6531556e79c05ad",
"ts": "2026-11-06T13:11:03.149747+00:00",
"session_id": "compare-vuln-remote-inspector-proxy-auth-bypass",
"experiment": "remote-inspector-proxy-auth-bypass",
"mode": "vulnerable",
"event_type": "sandbox_file_written",
"severity": "info",
"message": "impact-runner: file written: inspector-rce-proof-compare-vuln-remote-inspector-proxy-auth-bypass.txt",
"data": {
"actor": "impact-runner",
"target": "sandbox/effects/inspector-rce-proof-compare-vuln-remote-inspector-proxy-auth-bypass.txt",
"policy_decision": "allowed_by_vulnerable_mode",
"canary_id": "CANARY_remote_inspector_proxy_auth_bypass_098b58bbb98bee3c23f95530",
"artifact": "/app/sandbox/effects/inspector-rce-proof-compare-vuln-remote-inspector-proxy-auth-bypass.txt"
}
},
{
"event_id": "evt_4cf502045211964b",
"ts": "2026-11-06T13:27:03.581211+00:00",
"session_id": "compare-vuln-remote-inspector-proxy-auth-bypass",
"experiment": "remote-inspector-proxy-auth-bypass",
"mode": "vulnerable",
"event_type": "sandbox_file_written",
"severity": "info",
"message": "impact-runner: file written: inspector-rce-proof-compare-vuln-remote-inspector-proxy-auth-bypass.txt",
"data": {
"actor": "impact-runner",
"target": "sandbox/effects/inspector-rce-proof-compare-vuln-remote-inspector-proxy-auth-bypass.txt",
"policy_decision": "allowed_by_vulnerable_mode",
"canary_id": "CANARY_remote_inspector_proxy_auth_bypass_098b58bbb98bee3c23f95530",
"artifact": "/app/sandbox/effects/inspector-rce-proof-compare-vuln-remote-inspector-proxy-auth-bypass.txt"
}
}
][
{
"event_id": "evt_56ecab3ed761f47c",
"ts": "2026-11-06T13:11:03.150254+00:00",
"session_id": "compare-def-remote-inspector-proxy-auth-bypass",
"experiment": "remote-inspector-proxy-auth-bypass",
"mode": "defended",
"event_type": "policy_decision",
"severity": "warning",
"message": "policy.inspector_proxy_auth_policy: missing or wrong admin token",
"data": {
"actor": "policy.inspector_proxy_auth_policy",
"target": "inspector-proxy.launch_server",
"policy_decision": "blocked",
"canary_id": null,
"artifact": null,
"reason": "missing or wrong admin token"
}
},
{
"event_id": "evt_dbc476a7f2914a04",
"ts": "2026-11-06T13:27:03.581360+00:00",
"session_id": "compare-def-remote-inspector-proxy-auth-bypass",
"experiment": "remote-inspector-proxy-auth-bypass",
"mode": "defended",
"event_type": "policy_decision",
"severity": "warning",
"message": "policy.inspector_proxy_auth_policy: missing or wrong admin token",
"data": {
"actor": "policy.inspector_proxy_auth_policy",
"target": "inspector-proxy.launch_server",
"policy_decision": "blocked",
"canary_id": null,
"artifact": null,
"reason": "missing or wrong admin token"
}
}
]