Scan MCP servers for RCE/SSRF/no-auth/tool-poisoning vulnerabilities
- capability exposure inferred + 35
- recent drift inferred + 12
- tool safety inferred + 12
inferred
The A–E grade is our heuristic synthesis — a "review this" prompt, not a verdict. Each factor is tagged by what backs it: attested (a verifiable record), reported (a third party's claim), or inferred (our own heuristic, e.g. permissions). See methodology.
grade last moved 2d ago · see ecosystem CVEs →
- D · 67 → C · 59
- C · 59 → D · 67
- D · 67 → C · 59
- C · 59 → D · 67
- D · 67 → C · 59
- C · 59 → D · 67
- A · 0 → C · 59
No known CVEs for this server.
- high dangerous code
committed secret: OpenAI key, Stripe live key · dynamic exec: eval()/exec(), pickle.loads(), __import__ sink
analyzed commit 283f2f5 · analyzer v33 · 3w ago
danger signals11
- dynamic code execution eval()/exec() cognis-digital-mcpscan-283f2f5/demos/01-basic/vulnerable_mcp_server.py :26
return str(eval(expr)) - dynamic code execution pickle.loads() cognis-digital-mcpscan-283f2f5/demos/02-deep/vulnerable_agent_server.py :29
return pickle.loads(blob) - dynamic code execution __import__ sink cognis-digital-mcpscan-283f2f5/mcpharden/cli.py :333
paths = [args.config] if args.config else [p for p in default_config_paths() if __import__("os").path.exists(p)] - suspicious endpoint 169.254.169.254 (cloud metadata) cognis-digital-mcpscan-283f2f5/qa/ssrfmcp/tests/test_deep.py :56
p = Payload("x", "metadata", "http://169.254.169.254/latest/meta-data/", - suspicious endpoint 169.254.169.254 (cloud metadata) cognis-digital-mcpscan-283f2f5/ssrfmcp/core.py :69
_AWS_IMDS = "http://169.254.169.254/latest/meta-data/" - suspicious endpoint 100.100.100.200 (cloud metadata) cognis-digital-mcpscan-283f2f5/ssrfmcp/core.py :86
_ALIBABA_META = "http://100.100.100.200/latest/meta-data/" - committed secret OpenAI key cognis-digital-mcpscan-283f2f5/demos/02-deep/vulnerable_agent_server.py :22
sk-dea…(39 chars, redacted) - committed secret Stripe live key cognis-digital-mcpscan-283f2f5/qa/mcpharden/demos/01-basic/weather-server.json :14
sk_liv…(31 chars, redacted) - committed secret Stripe live key cognis-digital-mcpscan-283f2f5/qa/mcpharden/demos/fixtures/fleet/files-mcp.json :5
sk_liv…(28 chars, redacted) - committed secret Stripe live key cognis-digital-mcpscan-283f2f5/qa/mcpharden/demos/fixtures/fleet/github-mcp.json :5
sk_liv…(28 chars, redacted) - committed secret Stripe live key cognis-digital-mcpscan-283f2f5/qa/mcpharden/demos/fixtures/public-rce-server.json :13
sk_liv…(31 chars, redacted)
- recent drift +12 capability drift →
Heuristic, inferred signals — false positives (legitimately powerful tools, forks, language ports) are expected. Treat each as "review this", not a verdict. See the ecosystem-wide picture on the security hub, or the fleet security of cognis-digital.