{"id":26208,"date":"2026-09-21T15:15:52","date_gmt":"2026-09-21T23:15:52","guid":{"rendered":"https:\/\/www.palada.net\/index.php\/2026\/09\/21\/mcp-security-tracks-apis-playbook-we-know-how-that-ends\/"},"modified":"2026-09-21T15:15:52","modified_gmt":"2026-09-21T23:15:52","slug":"mcp-security-tracks-apis-playbook-we-know-how-that-ends","status":"publish","type":"post","link":"http:\/\/www.palada.net\/index.php\/2026\/09\/21\/mcp-security-tracks-apis-playbook-we-know-how-that-ends\/","title":{"rendered":"MCP security tracks API&#8217;s playbook \u2014 we know how that ends"},"content":{"rendered":"<div class=\"rich-text_richText__UyrDZ\" data-anchor-headings=\"true\" data-component=\"rich-text\" data-reader-view=\"false\">\n<div class=\"payload-richtext\">\n<p>Application programming interfaces arrived with enormous promise \u2014 and minimal security standards. But APIs were widely adopted nonetheless, and it was only after a decade of painful breaches that API security became a real discipline.\u00a0<\/p>\n<p>The AI analog of APIs is the Model Context Protocol (MCP) \u2014 and it\u2019s following the same pattern. But a compromised MCP integration can wreak havoc faster and more broadly than any compromised API and be harder to trace.<\/p>\n<p>Here\u2019s what your security team needs to know about <a href=\"https:\/\/www.reversinglabs.com\/blog\/mcp-powerful-ai-coding-risk\">the risks of MCP<\/a> \u2014 and how to ensure they do not expose your supply chain.<\/p>\n<p><strong>[ Download Report: AI Is the Supply Chain ]<\/strong><\/p>\n<h2 id=\"dj-vu-all-over-again\">D\u00e9j\u00e0 vu all over again<\/h2>\n<p>An open standard that lets AI applications connect to external tools, data sources, and workflows, MCP has a compelling goal of eliminating the need for custom integrations for every AI app or model. But the security model around it leaves a lot to be desired.<\/p>\n<p>The MCP specification explicitly leaves authentication, authorization, input validation, and sandboxing to whoever deploys the server. That is a defensible decision, but delegating security to implementers has been shown to be a \u201ckick the can down the road\u201d problem, said Dan Moore, director of customer identity and access management strategy at FusionAuth.<\/p>\n<p style=\"padding-inline-start:40px\"><em>\u201cMCP explicitly doesn\u2019t enforce security at the protocol level. That\u2019s not a criticism of the spec authors. It\u2019s a difficult problem, and they made a deliberate choice to let implementers handle it. But in practice, \u2018left to the implementer\u2019 has historically meant \u2018skipped until a breach scares everyone and forces re-evaluation.\u2019\u201d<\/em> <br \/>\u2014<a href=\"https:\/\/www.linkedin.com\/in\/mooreds\/\" rel=\"noopener noreferrer\" target=\"_blank\">Dan Moore<\/a><\/p>\n<p>In fact, the MCP ecosystem is looking like a replay of the early API era: rapid adoption, with no standard authentication or authorization patterns, with transport security treated as an afterthought, and with a collective assumption that security controls will materialize eventually.<\/p>\n<h2 id=\"this-time-the-stakes-are-higher\">This time the stakes are higher<\/h2>\n<p>But compared to APIs, the risks from MCP are hugely magnified. When a traditional API is called, the caller is deterministic: a specific application or piece of code, written by a developer, with predictable behavior that can be modeled, tested, and governed. MCP-connected agents operate differently.<\/p>\n<p>With a large language model (LLM) in the loop, the caller is no longer predictable. The model autonomously selects tools and determines what actions to take. Its decisions can shift based on context, incoming prompts, or manipulated upstream data. Its behavior, therefore, is neither repeatable nor bounded in the way traditional API calls are.<\/p>\n<p>Jim Wojno, Director of Product Management for Integrations at ReversingLabs (RL), said organizations are rushing to adopt Agentic AI in cybersecurity operations for all the obvious benefits. However, in that scenario AI becomes the most privileged and most manipulable component simultaneously.<\/p>\n<p style=\"padding-inline-start:40px\"><em>\u201cAn attacker who compromises the AI layer \u2014 through MCP server tampering for example \u2014 doesn&#8217;t need to touch a single endpoint. They can use the organization&#8217;s own automation to suppress detections, whitelist malware, and execute commands across the environment. That&#8217;s not a breach. That&#8217;s a rootkit.\u201d<\/em><br \/><em>\u2014<\/em><a href=\"https:\/\/www.linkedin.com\/in\/jimwojno\/\" rel=\"noopener noreferrer\" target=\"_blank\">Jim Wojno<\/a><\/p>\n<p>The consequences of compromise scale accordingly, said Gianpietro Cutolo, cloud threat researcher at Netskope Threat Labs.<\/p>\n<p style=\"padding-inline-start:40px\"><em>\u201cA compromised API leaks information. A compromised MCP integration can send emails, move money, or pivot across every other tool the agent is connected to \u2014 at machine speed, with a user\u2019s credentials, and with a plausible audit trail.\u201d<\/em> <br \/>\u2014<a href=\"https:\/\/www.linkedin.com\/in\/gianpietro-cutolo\/\" rel=\"noopener noreferrer\" target=\"_blank\">Gianpietro Cutolo<\/a><\/p>\n<p>Researchers at Carnegie Mellon University\u2019s Software Engineering Institute note that MCP\u2019s risks extend well beyond traditional confidentiality, integrity, and availability concerns. Because MCP is deeply integrated with LLMs and agentic workflows, vulnerabilities can also compromise privacy, safety, and system reliability \u2014 areas where AI-driven systems can autonomously execute high-stakes actions without human review at each step.<\/p>\n<h2 id=\"the-attack-surfaces-appsec-isnt-testing-for\">The attack surfaces AppSec isn\u2019t testing for<\/h2>\n<p>MCP\u2019s permissive security model creates threat categories that most application security (AppSec) programs are not designed to detect. Tool poisoning embeds malicious instructions inside tool descriptions that the model takes as authoritative input. <\/p>\n<p><a href=\"https:\/\/www.reversinglabs.com\/blog\/mcp-rug-pull-attack-worries\"><span style=\"text-decoration:underline\">Rug-pull attacks<\/span><\/a> allow a tool to change its definition after an initial security approval, subverting trust established at onboarding. And confused deputy attacks turn an agent\u2019s own access privileges against the users it is supposed to serve, said Jason Soroko, senior fellow at Sectigo.<\/p>\n<p style=\"padding-inline-start:40px\"><em>\u201cStatic [and dynamic] analysis find none of these because the exploit vector is the model\u2019s reasoning rather than the input parser.\u201d<\/em><br \/> \u2014<a href=\"https:\/\/www.linkedin.com\/in\/jason-soroko-19b41920\/\" rel=\"noopener noreferrer\" target=\"_blank\">Jason Soroko<\/a><\/p>\n<p>Those legacy tooling and testing methodologies can\u2019t provide coverage because the threat surface is not in the code; it is in how the model reasons about and interacts with the tools it has been given access to. The real problem is that if AppSec teams assume that standard vulnerability testing provides the needed coverage, they will have a false sense of security.<\/p>\n<p>Wojno said MCP servers are the silent trust boundary in agentic AI workflows \u2014 the LLM has no native way to distinguish a legitimate response from a poisoned one. <\/p>\n<p style=\"padding-inline-start:40px\"><em>\u201cCompromise the server, and you control what the AI believes is true about your environment.\u201d<\/em><br \/>\u2014Jim Wojno<\/p>\n<h2 id=\"how-to-start-securing-mcp-servers\">How to start securing MCP servers<\/h2>\n<p>There is good news: guidance is already emerging. The Open Worldwide Application Security Project<strong> <\/strong>\u2014 which didn\u2019t release an OWASP API Security Top 10 until 2019 \u2014 has published both an <a href=\"https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/MCP_Security_Cheat_Sheet.html\" rel=\"noopener noreferrer\" target=\"_blank\"><span style=\"text-decoration:underline\">MCP Security Cheat Sheet<\/span><\/a> and a <a href=\"https:\/\/genai.owasp.org\/resource\/a-practical-guide-for-secure-mcp-server-development\/\" rel=\"noopener noreferrer\" target=\"_blank\"><span style=\"text-decoration:underline\">Practical Guide for Secure MCP Server Development<\/span><\/a>. And the U.S. Cybersecurity and Infrastructure Security Agency released <a href=\"https:\/\/www.nist.gov\/artificial-intelligence\/ai-agent-standards-initiative\"><span style=\"text-decoration:underline\">agentic AI adoption guidance in May 2025<\/span><\/a>. The question remains whether organizations will act on this guidance before a major incident gooses them.<\/p>\n<p>Securing MCP starts with observability. Most organizations currently cannot reconstruct what an agent decided or why, making post-incident investigation nearly impossible. Logging every tool invocation and building a full audit trail of which agent called which tool, with what parameters and what response it received are seen as advanced practices, but they should be baseline operational requirements.<\/p>\n<p>In addition, MCP servers should be treated like any third-party vendor integration: inventoried before deployment, scoped to minimum necessary permissions, and subject to a security review. Tool definitions should be pinned at approval time \u2014 hashing descriptions and schemas and alerting on drift. Execution environments should be sandboxed in containers, with restricted file system access and no outbound network unless explicitly required.<\/p>\n<p>Denis Calderone, principal and CTO at Suzu Labs, likens<em> <\/em>MCP-connected agents to service accounts with judgment, and AppSec has spent 20 years building controls around service accounts, including least privilege, credential rotation, access logging, and scoped permissions.\u00a0<\/p>\n<p style=\"padding-inline-start:40px\">\u201c<em>Those controls exist because we learned the hard way what happens when an automated process has broad access and no oversight. Now we\u2019ve given it an LLM and told it to make autonomous decisions about what tools to call and what data to access.\u201d<\/em><br \/>\u2014<a href=\"https:\/\/www.linkedin.com\/in\/deniscalderone\/\" rel=\"noopener noreferrer\" target=\"_blank\">Denis Calderone<\/a><\/p>\n<p>However, server-side hardening cannot address the client, said Ted Miracco, CEO of Approov Mobile Security, and that\u2019s a dimension the industry has not yet fully engaged. \u201cMCP servers are increasingly called from mobile apps and agents running on user-controlled, and possibly hostile, mobile devices,\u201d he said.<\/p>\n<p>That\u2019s a problem that should be addressed soon to avoid going through the API learning process again, but at the speed and scale that agentic AI enables, he added.<\/p>\n<p style=\"padding-inline-start:40px\"><em>\u201cThe industry has gotten a do-over, and we should not waste it repeating the same API follies of 2014.\u201d<\/em><br \/>\u2014Ted Miracco<\/p>\n<p>RL&#8217;s Wojno said MCP servers inherit every vulnerability in their supply chain \u2014 the SDK, the MCP framework, the build pipeline \u2014 and security mitigations like immutable containers for the MCP don&#8217;t change that. They lock in whatever was built, including a compromise that happened upstream, he said.\u00a0<\/p>\n<p style=\"padding-inline-start:40px\"><em>\u201cThe mitigations that matter are dependency pinning with hash verification, SBOM generation at build time so you can detect what changed between builds, and treating every MCP tool response as untrusted input.\u201d<\/em><br \/>\u2014Jim Wojno<\/p>\n<h2 id=\"act-now--before-the-breach\">Act now \u2014 before the breach<\/h2>\n<p>The window for establishing good MCP security practices is smaller than the API window was. AI compresses the timeline for damage in ways a 2014-era API ecosystem never could. The industry had years to absorb the cost of early API insecurity and build compensating controls. But an uncontrolled MCP integration can materialize in seconds, at scale, under a plausible audit trail \u2014 and with an unprecedented blast radius.<\/p>\n<p>The controls, the frameworks, and the documented attack patterns are all available now. Every organization building with or deploying MCP-connected agents has the option to internalize them before the first major breach makes the lesson unavoidable, Calderone said.<\/p>\n<p>He added that an MCP server requesting broad file system and database access is the AI equivalent of granting admin rights. Tool definitions should be pinned at approval time by hashing descriptions and schemas, with alerts triggered on any drift. Execution should be sandboxed, with MCP servers running in containers with restricted file system access and no outbound network unless explicitly required.<\/p>\n<p style=\"padding-inline-start:40px\"><em>\u201cTreat them like untrusted code execution environments because, functionally, that\u2019s what they are.\u201d<\/em><br \/>\u2014Denis Calderone<\/p>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Application programming interfaces arrived with enormous promise \u2014 and minimal security standards. But APIs were widely adopted nonetheless, and it was only after a decade of painful breaches that API security became a real discipline.The AI analog of APIs is the Model Context Protocol (MCP) \u2014 and it\u2019s following the same pattern. But a compromised MCP integration can wreak havoc faster and more broadly than any compromised API and be harder to trace.Here\u2019s what your security team needs to know a<\/p>\n","protected":false},"author":4,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"colormag_page_container_layout":"default_layout","colormag_page_sidebar_layout":"default_layout","footnotes":""},"categories":[32775],"tags":[],"class_list":["post-26208","post","type-post","status-publish","format-standard","hentry","category-reversinglabs"],"_links":{"self":[{"href":"http:\/\/www.palada.net\/index.php\/wp-json\/wp\/v2\/posts\/26208","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.palada.net\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.palada.net\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.palada.net\/index.php\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"http:\/\/www.palada.net\/index.php\/wp-json\/wp\/v2\/comments?post=26208"}],"version-history":[{"count":0,"href":"http:\/\/www.palada.net\/index.php\/wp-json\/wp\/v2\/posts\/26208\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.palada.net\/index.php\/wp-json\/wp\/v2\/media?parent=26208"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.palada.net\/index.php\/wp-json\/wp\/v2\/categories?post=26208"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.palada.net\/index.php\/wp-json\/wp\/v2\/tags?post=26208"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}