{"id":14485,"date":"2026-07-22T10:03:45","date_gmt":"2026-07-22T10:03:45","guid":{"rendered":"https:\/\/serisec.com\/index.php\/2026\/07\/22\/azure-devops-mcp-flaw-lets-hidden-pr-comments-hijack-ai-agents-and-steal-data\/"},"modified":"2026-07-22T10:03:45","modified_gmt":"2026-07-22T10:03:45","slug":"azure-devops-mcp-flaw-lets-hidden-pr-comments-hijack-ai-agents-and-steal-data","status":"publish","type":"post","link":"https:\/\/serisec.com\/index.php\/2026\/07\/22\/azure-devops-mcp-flaw-lets-hidden-pr-comments-hijack-ai-agents-and-steal-data\/","title":{"rendered":"Azure DevOps MCP Flaw Lets Hidden PR Comments Hijack AI Agents and Steal Data"},"content":{"rendered":"<p>    Azure DevOps MCP Flaw Lets Hidden PR Comments Hijack AI Agents and Steal Data<br \/>\n \t<BR><br \/>\n<BR><\/BR><br \/>\n    <!-- no image --><br \/>\n \t<BR><br \/>\n<BR><\/BR><\/p>\n<div>\n<p class=\"wp-block-paragraph\">A newly disclosed flaw in Microsoft\u2019s official Azure DevOps MCP server shows how an invisible comment in a pull request can silently hijack a developer\u2019s AI coding assistant and turn it into a data-exfiltration tool.<\/p>\n<p class=\"wp-block-paragraph\">Security researchers at Manifold Security found that the bug lets an attacker with access to just one project steer a victim\u2019s agent into stealing data from projects the attacker could never reach directly.<\/p>\n<p class=\"wp-block-paragraph\">Microsoft\u2019s <a href=\"https:\/\/github.com\/microsoft\/azure-devops-mcp\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Azure DevOps MCP server<\/a> exposes pull requests, pipelines, wikis, and work items as tools an AI agent can call on a user\u2019s behalf. Since Azure DevOps PR descriptions support Markdown, an attacker can embed instructions inside an HTML comment that renders as nothing in the web UI but is still returned verbatim by the API.<\/p>\n<p class=\"wp-block-paragraph\">When a victim asks their agent to review that PR, the agent ingests the hidden text and follows it as if it were a legitimate command, a classic case of indirect prompt injection.<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEjVfH1V-YiTXR9UC9XbfzyzLDVwLFqbfq2Ge8sSK3pTE_iFPWgskUFS0RUHtH0YYLs-uGXOFpvQPkOV0kMATkbD4xajbIoPNG7EVDsIWHhuX_QDE698fj6JjMfko_Mgb82hrVVHvPu7Fgs2U5MVrqv7fd36LPgH1nCBeydV2oMTJaimYYRMu3t558VExYQu\/s1600\/Azure%2520DevOps%2520MCP%2520Flaw.webp?ssl=1\" alt=\"Hidden text instructions\"><figcaption class=\"wp-element-caption\">Hidden text instructions (Source: Manifold Security)<\/figcaption><\/figure>\n<\/div>\n<p class=\"wp-block-paragraph\">In the researchers\u2019 proof of concept, the injected comment instructed the victim\u2019s agent to approve the PR, trigger a pipeline in a completely different \u201cPayments\u201d project, read a confidential wiki page there, and post its contents back as a PR comment the attacker could see, all while telling the agent not to mention any of it to the human reviewer. Because the agent operates with the victim\u2019s own credentials, it could reach data the attacker had no direct access to.<\/p>\n<h2 id=\"h-azure-devops-mcp-vulnerability\" class=\"wp-block-heading\"><strong>Azure DevOps MCP Vulnerability<\/strong><\/h2>\n<p class=\"wp-block-paragraph\">This is a \u201cconfused deputy\u201d problem: a privileged actor (the agent) is tricked into misusing its own authority on someone else\u2019s behalf. The escalation works precisely because reviewers, often more senior than whoever opened the PR, typically have broader project access than contributors, so the attacker effectively borrows that authority through text the reviewer never even sees.<\/p>\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEj8qKfqjrvZZQFRNQpXAbI0F8dCtwakOaS_IYUYxczTBZ_ItOrBvARHX0U7vz-vQWoKtYv-S1Mk80iOSIyI6vXFX-1vUTWyAkMeP9uE8F89R0VzbNi9riZwINcmyQxcUi1QYHe9P4M1qPpesCgJxIH0LZYL3mZhYbLoabI1j1nyE-NUMGpSOes0oEmpkn6I\/s1600\/Azure%2520DevOps%2520MCP%2520Flaw2.webp?ssl=1\" alt=\"\"><figcaption class=\"wp-element-caption\">Content Exfiltration (Source: Manifold Security)<\/figcaption><\/figure>\n<p class=\"wp-block-paragraph\">Microsoft had already anticipated this class of risk. The server uses a defense called \u201cspotlighting,\u201d which wraps untrusted external content in delimiters so the model can distinguish data from instructions.<\/p>\n<p class=\"wp-block-paragraph\">That fix, introduced in <a href=\"https:\/\/github.com\/microsoft\/azure-devops-mcp\/pull\/1062\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">PR #1062<\/a>, was applied to the tools returning pipeline and wiki content, but not to the tool returning PR descriptions, leaving exactly the entry point attackers used.<\/p>\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/www.manifold.security\/blog\/azure-devops-mcp-server-vulnerability\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Manifold Security reported the issue<\/a> to the Microsoft Security Response Center, which acknowledged and triaged it; as of publication, no CVE has been assigned, and no fix has shipped.<\/p>\n<p class=\"wp-block-paragraph\">Researchers tie this <a href=\"https:\/\/simonwillison.net\/2025\/Jun\/16\/the-lethal-trifecta\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">incident to Simon Willison\u2019s \u201clethal trifecta\u201d framework<\/a> for agentic risk: access to private data, exposure to untrusted content, and a channel to send data out. Any AI agent combining all three, exactly what the Azure DevOps MCP server does, can be turned against its owner by a single piece of poisoned text.<\/p>\n<h2 id=\"h-takeaway-for-defenders\" class=\"wp-block-heading\"><strong>Takeaway for Defenders<\/strong><\/h2>\n<p class=\"wp-block-paragraph\">Security teams reviewing MCP-connected agents should consider the following steps:<\/p>\n<ul class=\"wp-block-list\">\n<li>Scope agent tokens to least privilege, limited to the project under review.<\/li>\n<li>Load only the MCP tool domains a task actually needs, using scoping flags where available.<\/li>\n<li>Exclude pipeline execution, wiki reads, and comment-posting from code-review-only tool sets.<\/li>\n<li>Audit PR descriptions for hidden HTML comments and review agent tool-call traces for unexpected cross-project activity.<\/li>\n<\/ul>\n<p class=\"wp-block-paragraph\">The core takeaway, researchers note, is that every individual action the agent took was technically authorized; the danger came from the sequence and hidden intent, which is why agent-driven automation demands continuous visibility rather than one-time code audits.<\/p>\n<p class=\"has-text-align-center has-background wp-block-paragraph\" style=\"background:linear-gradient(180deg,rgb(238,238,238) 87%,rgb(169,184,195) 100%)\"><strong><strong>The Privilege Paths Attackers See That You Don\u2019t: BeyondTrust Pathfinder Platform Does It for You -&gt;\u00a0<a href=\"https:\/\/www.beyondtrust.com\/products\/identity-security-insights\/assessment?utm_source=cybersecuritynews&amp;utm_medium=web&amp;utm_campaign=prospecting&amp;campid=701Vw00000aN1mhIAC\">Get Free Identity Security Assessment<\/a><\/strong><\/strong><\/p>\n<p>The post <a href=\"https:\/\/cybersecuritynews.com\/azure-devops-mcp-flaw\/\">Azure DevOps MCP Flaw Lets Hidden PR Comments Hijack AI Agents and Steal Data<\/a> appeared first on <a href=\"https:\/\/cybersecuritynews.com\/\">Cyber Security News<\/a>.<\/p>\n<\/div>\n<p> \t<BR><br \/>\n <BR><\/BR><br \/>\n    Guru Baran<br \/>\n \t<BR><br \/>\n<BR><\/BR><br \/>\n<a href=\"https:\/\/cybersecuritynews.com\/azure-devops-mcp-flaw\/\">Go to cyber-security-news<\/a><br \/>\n \t<BR><br \/>\n <BR><\/BR><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Azure DevOps MCP Flaw Lets Hidden PR Comments Hijack AI Agents and Steal Data A newly disclosed flaw in Microsoft\u2019s official Azure DevOps MCP server shows how an invisible comment in a pull request can silently hijack a developer\u2019s AI coding assistant and turn it into a data-exfiltration tool. Security researchers at Manifold Security found [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[129,63,131,648],"tags":[130],"class_list":["post-14485","post","type-post","status-publish","format-standard","hentry","category-cyber-security","category-cyber-security-news","category-vulnerability","category-vulnerability-news","tag-cyber-security-news"],"_links":{"self":[{"href":"https:\/\/serisec.com\/index.php\/wp-json\/wp\/v2\/posts\/14485"}],"collection":[{"href":"https:\/\/serisec.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/serisec.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/serisec.com\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/serisec.com\/index.php\/wp-json\/wp\/v2\/comments?post=14485"}],"version-history":[{"count":0,"href":"https:\/\/serisec.com\/index.php\/wp-json\/wp\/v2\/posts\/14485\/revisions"}],"wp:attachment":[{"href":"https:\/\/serisec.com\/index.php\/wp-json\/wp\/v2\/media?parent=14485"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/serisec.com\/index.php\/wp-json\/wp\/v2\/categories?post=14485"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/serisec.com\/index.php\/wp-json\/wp\/v2\/tags?post=14485"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}