Back to Blog
SecuritySep 26, 202614 min read

MCP Server Vulnerabilities: Why the Worst Ones Aren't AI Bugs (2026)

NT

Nikhil Tiwari

MCP Playground

πŸ“– TL;DR

  • The "Exposed by Design" study tested 414 live, internet-facing MCP servers in July 2026. 380 of them (91.8%) had no OAuth.
  • It filed 68 reportable vulnerabilities, and counted 687 shell-execution tools reachable without authentication.
  • August's MCP CVEs: path traversal in mcp-atlassian (CVE-2026-73498), a cleartext cluster token in ArcadeDB (CVE-2026-67357), and SSRF in a Facebook Ads server (CVE-2026-19956).
  • Today's addition: CSRF in the MCP Server for WordPress plugin (CVE-2026-96524).
  • None of these is an AI bug. They are OWASP web classics. MCP adds a new attacker: anyone who can put text in front of your agent.

When people talk about MCP server vulnerabilities, they usually mean prompt injection and tool poisoning.

Those are real. But they are not where most of the damage is.

The worst MCP bugs of 2026 are the ones web developers fixed in 2006. Path traversal. Missing auth. Leaked secrets. SSRF.

A July scan of 414 live MCP servers found 91.8% without OAuth. August's CVEs were a file read, a token leak and a server-side request forgery.

If you ship an MCP server and only test it for AI-specific attacks, you are guarding the side door and leaving the front open.

I will go through the data, the four CVEs, and why MCP makes these old bugs worse, not better.

Then a short checklist you can run against your own server this afternoon.

Are MCP Servers Secure? What the "Exposed by Design" Study Found

Mostly not. In July 2026, 91.8% of the internet-facing MCP servers that researchers tested had no OAuth, and 68 reportable vulnerabilities were filed.

The study is "Exposed by Design" by NicolΓ‘s Padilla of CobaltoSec. It is the first large dynamic test of live MCP servers, not just a code review.

Metric Finding
MCP instances on the public internet 21,000+ (Censys estimate, May 2026)
Confirmed MCP servers 640, across four runs on 15, 18, 21 and 24 July
Dynamically tested 414
No OAuth 380 of 414 (91.8%)
Shell-execution tools without auth 687 tool instances
Reportable vulnerabilities 68 GitHub Security Advisories. 19 public, 49 under 90-day embargo.
Churn 193 of 464 servers from the third run were gone three days later

The 8.2% that did have auth mostly used static bearer tokens, API keys or basic auth. The paper notes many of those tokens were predictable or empty.

What kinds of bugs did it find?

The study counted affected servers per category. The top of the list, by count:

  • Authentication gaps: 380 servers
  • Protocol fuzzing failures: 52 (malformed requests the server mishandled)
  • Tool poisoning: 47
  • Command injection: 38
  • Schema bypass: 31 (arguments the schema should have rejected)
  • SSRF: 29
  • Resource URI manipulation: 24
  • Prompt injection: 22
  • Token exposure: 18
  • Supply chain: 14

Count the AI-specific rows: tool poisoning and prompt injection. Everything else is a bug class with a CWE number older than MCP itself.

One disclosed example: an SSRF that reached the AWS instance metadata service. The tell was timing: 11.9 seconds against a 0.3-second baseline.

The August 2026 MCP CVEs, One by One

Three MCP server CVEs landed in August 2026: path traversal, cleartext secret exposure and SSRF. A fourth, CSRF, was disclosed today.

CVE-2026-73498: path traversal in mcp-atlassian

What: confluence_upload_attachment passed its file_path argument straight to open() without the project's own validate_safe_path check.

  • Affected: mcp-atlassian before 0.22.0. CWE-22. CVSS 7.7. Published 12 August 2026.
  • Impact: read any file the server process can read, then upload it to Confluence as an attachment.
  • The MCP twist: if an agent is steered by untrusted content, it can call the tool itself and leak environment secrets such as CONFLUENCE_API_TOKEN.

The helper existed. One tool forgot to call it. That is the most common way path traversal ships.

CVE-2026-67357: ArcadeDB's settings tool leaks the cluster token

What: the MCP get_server_settings tool returned arcadedb.ha.clusterToken in cleartext.

  • Affected: ArcadeDB before 26.7.3. CVSS 7.5. Published 2 August 2026.
  • Impact: with the token, the X-ArcadeDB-Cluster-Token and X-ArcadeDB-Forwarded-User headers let an attacker impersonate root.
  • Fix: upgrade, then rotate cluster tokens and invalidate sessions. Patching alone leaves a stolen token valid.

A "read settings" tool is a secrets tool unless you redact it. And every tool result lands in the model's context, which is logged, cached and sometimes shared.

CVE-2026-19956: SSRF in facebook-ads-mcp-server

What: fetch_pagination_url in gomarble-ai's facebook-ads-mcp-server 0.1.0 fetched whatever URL it was given.

  • Impact: an authenticated user can make the server send requests from its own network position: internal services, cloud metadata endpoints, admin panels.
  • Severity: CVSS 5.3, fixed in a single commit.

Pagination URLs look harmless because the API normally supplies them. But the argument comes from the model, and the model can be told what to write.

CVE-2026-96524: CSRF in the MCP Server for WordPress plugin

Disclosed on 26 September 2026. Versions before 1.8.2 did not verify nonces on REST calls.

A logged-in admin who visits a crafted page can be made to create a new administrator account. CWE-352. The fix is 1.8.2.

Four CVEs, four OWASP web categories. Not one needed a model to exploit.

Why Classic Bugs Make MCP Server Vulnerabilities Worse

MCP turns every tool argument into input an attacker can influence without ever touching your server. That changes who can exploit an old bug.

In a normal web app, the attacker sends the malicious request. In an MCP server, the agent sends it for them.

That is a confused deputy: a trusted component tricked into misusing its own authority.

The attacker writes a Jira ticket, a web page or a GitHub issue. Your agent reads it. Your agent calls confluence_upload_attachment with ../../.env.

So "authenticated user only" is weaker than it sounds. The authenticated user is your agent, and your agent reads untrusted text all day.

Three more ways MCP amplifies the damage

  • Results go into context. A leaked token is not just returned. It is sent to a model provider, logged and possibly cached.
  • Tools come in bundles. A file read plus a web fetch is an exfiltration path, even if each tool is safe alone.
  • Servers churn. With 41.6% of servers gone in three days, many run for days without anyone patching them.

Mid-way through? Scan your MCP server β†’ for missing auth, weak transport, injection risk and information disclosure. Free, in the browser, graded A to F.

How Do I Fix the Most Common MCP Server Vulnerabilities?

Treat every tool argument as hostile input, require real auth on every request, and redact secrets from every result. The rest is detail.

1. Put OAuth in front of every HTTP server

The study's first recommendation is OAuth 2.1 by default for HTTP transport. It is also what the MCP authorization spec expects.

Gate discovery too. tools/list leaks your capability map. The insufficient authentication page covers token binding and the other checks. My MCP OAuth guide has the setup.

2. Resolve and confine every path

Resolve the path, then check it is still inside the allowed root. Do it in one shared function every file tool must call.

import path from "node:path";

const ROOT = path.resolve(process.env.FILES_ROOT);

export function safePath(userPath) {
  const full = path.resolve(ROOT, userPath);
  if (full !== ROOT && !full.startsWith(ROOT + path.sep)) {
    throw new Error("Path outside allowed root");
  }
  return full;
}

Then add a test that lists every tool with a path-like parameter and fails if its handler skips safePath.

That is the check mcp-atlassian was missing. See command injection and execution for the full pattern.

3. Constrain what your fetchers can reach

Any tool that takes a URL needs an allowlist of hosts. For pagination, accept a cursor, not a URL, and build the URL yourself.

Block link-local and private ranges, including 169.254.169.254. The intent flow subversion page covers fetchers in detail.

4. Redact secrets from tool results

A settings or config tool should return an allowlist of safe keys, not a dump with a denylist. New secrets get added. Denylists do not update themselves.

The token mismanagement page explains why the context window counts as a published surface.

5. Fuzz the protocol, not just the tools

Protocol fuzzing was the second-largest category in the study, at 52 servers.

Send malformed JSON-RPC, wrong types and oversized payloads. The server should reject them cleanly, not crash or leak a stack trace.

MCP Server Vulnerabilities Checklist

Check Would have stopped
OAuth on every request, including tools/list 380 no-OAuth servers, 687 open shell tools
One shared path-confinement function CVE-2026-73498
Allowlisted keys in config and settings results CVE-2026-67357
Host allowlist on every URL argument CVE-2026-19956, the IMDS SSRF
CSRF protection on any browser-reachable admin endpoint CVE-2026-96524
Strict schema validation plus protocol fuzzing in CI The 31 schema bypass and 52 fuzzing findings

The full map lives on the OWASP MCP Top 10 hub, with a page and fixes for each risk.

How MCP Playground Can Help

I start every server review in the MCP server tester: connect, list tools, and read every parameter. Any argument named path, url or command goes on my list.

Then the security scanner runs 35+ checks, including auth enforcement (does it return 401 without a token?), TLS, CORS, security headers and information disclosure.

It will not find every one of your MCP server vulnerabilities, such as a path traversal deep in a handler.

It will tell you in a minute whether you are in the 91.8%.

For deeper background, see my MCP server security guide, the post on the MCP stdio RCE vulnerability, and what the Model Context Protocol is if you are new.

Frequently Asked Questions

Are MCP servers secure?+
Many public ones are not. The Exposed by Design study dynamically tested 414 internet-facing MCP servers in July 2026 and found 91.8% without OAuth, 687 shell-execution tools reachable without authentication, and 68 reportable vulnerabilities. A well-built server with OAuth, path confinement, URL allowlists and secret redaction can be secure.
What are the most common MCP server vulnerabilities?+
Missing authentication is by far the most common. After that, the Exposed by Design study found protocol fuzzing failures, tool poisoning, command injection, schema bypass, SSRF, resource URI manipulation, prompt injection, token exposure and supply chain issues. Most are classic web vulnerability classes rather than AI-specific ones.
How many MCP servers have no authentication?+
In the Exposed by Design study, 380 of 414 dynamically tested internet-facing MCP servers, or 91.8%, had no OAuth. Most of the remaining 8.2% used static bearer tokens, API keys or basic auth, and many of those tokens were predictable or empty.
What is CVE-2026-73498?+
A path traversal vulnerability in mcp-atlassian before version 0.22.0. The confluence_upload_attachment tool passed its file_path argument to open() without path validation, letting an MCP client read any file the server could read and upload it to Confluence. It is rated CVSS 7.7 and fixed in 0.22.0.
Why are classic web bugs more dangerous in MCP servers?+
Because an AI agent writes the tool arguments, and the agent reads untrusted content such as web pages, tickets and issues. An attacker can plant instructions in that content and have the agent send the malicious request, so they never need direct access to your server. Tool results also flow into model context, where leaked secrets are logged and cached.
How do I check my MCP server for vulnerabilities?+
Start with an automated scan for authentication, transport, CORS, headers and information disclosure. Then review every tool that takes a path, URL or command argument, confirm results never include secrets, and fuzz the server with malformed JSON-RPC requests. Repeat after every release.

The Bottom Line

The MCP vulnerabilities doing real damage in 2026 are old web bugs with a new delivery route.

The agent is the new way in. The bug is still path traversal, a leaked secret or SSRF.

Add OAuth, confine paths, allowlist URLs and redact results. That covers most of the MCP server vulnerabilities the study and the CVEs found.

Find out if your server is in the 91.8%

Scan any MCP server URL for auth, transport and disclosure issues, then inspect every tool in the browser.

Scan your MCP server β†’ Test any MCP server free β†’
NT

Written by Nikhil Tiwari

15+ years in product development. AI enthusiast building developer tools that make complex technologies accessible to everyone.

Build, compare & ship MCP agents

Connect any MCP server, run evals on it, compare 60+ models side-by-side, deploy hosted servers, and save reusable agents you can export as an API β€” all in your browser.

Try for Free β†’
MCP Server Vulnerabilities: Why the Worst Ones Aren't AI Bugs (2026)