<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Blog</title>
	<atom:link href="https://www.imperva.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.imperva.com/blog/</link>
	<description>Imperva Cybersecurity Blog</description>
	<lastBuildDate>Sun, 16 Aug 2026 04:23:05 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.5</generator>

<image>
	<url>https://www.imperva.com/wp-content/themes/impv/icons/favicon-32.png</url>
	<title>Blog</title>
	<link>https://www.imperva.com/blog/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>The OWASP LLM Top 10 Was the Warm-Up: What Comes Next</title>
		<link>https://www.imperva.com/blog/owasp-llm-top-10-what-comes-next-agentic-mcp/</link>
					<comments>https://www.imperva.com/blog/owasp-llm-top-10-what-comes-next-agentic-mcp/#respond</comments>
		
		<dc:creator><![CDATA[Michael Wright]]></dc:creator>
		<pubDate>Sun, 16 Aug 2026 04:23:05 +0000</pubDate>
				<category><![CDATA[Application Security]]></category>
		<guid isPermaLink="false">https://www.imperva.com/blog/?p=21240</guid>

					<description><![CDATA[<p>When the OWASP Top 10 for LLM Applications arrived, it did the industry a real service. It gave security teams a stable, vendor-neutral vocabulary for a threat surface that was moving too fast to describe. Prompt injection, sensitive information disclosure, system prompt leakage, improper output handling, unbounded consumption: five of those ten account for the [&#8230;]</p>
<p>The post <a href="https://www.imperva.com/blog/owasp-llm-top-10-what-comes-next-agentic-mcp/">The OWASP LLM Top 10 Was the Warm-Up: What Comes Next</a> appeared first on <a href="https://www.imperva.com/blog">Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>When the OWASP Top 10 for LLM Applications arrived, it did the industry a real service. It gave security teams a stable, vendor-neutral vocabulary for a threat surface that was moving too fast to describe. Prompt injection, sensitive information disclosure, system prompt leakage, improper output handling, unbounded consumption: five of those ten account for the bulk of what actually shows up in red-team exercises and public incidents.</p>
<p>Every framework earns its keep by naming what defenders are already fighting. Which is exactly why the next part matters: the next lists are not coming. They have already arrived. Most security programs simply have not caught up with them yet.</p>
<h2>The three OWASP lists that now define AI security</h2>
<p>Three published OWASP lists now cover the AI stack end to end. Together they are the checklist most security programs are not yet resourced against:</p>
<p><strong>OWASP Top 10 for LLM Applications (2025)</strong> &#8211; the conversation layer. Prompt injection, sensitive information disclosure, system prompt leakage, improper output handling and unbounded consumption are the five that dominate real incidents.</p>
<p><strong>OWASP Top 10 for Agentic Applications (2026)</strong> &#8211; the systems that act. Released 9 December 2025 by the OWASP GenAI Security Project. Ten risks, prefixed ASI, covering what happens when AI stops answering and starts doing.</p>
<p><strong>OWASP MCP Top 10 (MCP01:2025-MCP10:2025)</strong> &#8211; the connective tissue. Currently in beta (Phase 3, beta release and pilot testing), covering the Model Context Protocol layer that wires assistants to real systems and data.</p>
<h2>The OWASP agentic and MCP Top 10 lists are published.  The budgets are not.</h2>
<p>In December 2025, the OWASP GenAI Security Project published the OWASP Top 10 for Agentic Applications (2026), covering the risks that appear when AI stops answering questions and starts taking actions: agent goal hijack (ASI01), tool misuse and exploitation (ASI02), identity and privilege abuse (ASI03), memory and context poisoning (ASI06), insecure inter-agent communication (ASI07) and rogue agents (ASI10).</p>
<p>Alongside it, <a href="https://owasp.org/www-project-mcp-top-10/" target="_blank">OWASP’s MCP Top 10 project</a> is codifying the risks of the Model Context Protocol, the standard that connects AI assistants to real systems and data. It is a young list, currently in beta &#8211; Phase 3, beta release and pilot testing, with entries carrying the MCP01:2025 through MCP10:2025 designation &#8211; and it is already one of the most useful documents in AI security, because it names the attack patterns defenders are meeting right now. Three of them deserve particular attention.</p>
<p><strong>Command injection and execution (MCP05)</strong>. An AI agent executes system commands built from untrusted input, without proper validation. An adversary who compromises the toolchain gets their work carried forward by the agent itself, with the agent’s legitimate permissions. The prompt was never touched. The model behaved exactly as designed. The compromise came in through the tools.</p>
<p><strong>Tool poisoning (MCP03)</strong>. The model is handed a list of tools it may call, and it trusts their definitions and their outputs. Poison either one and you have redirected the application’s behavior without a single suspicious token appearing in the conversation.</p>
<p><strong>Insufficient authentication and authorization (MCP07)</strong>. MCP servers, tools, and agents interacting without properly verifying identity or enforcing access controls. Who is allowed to call this tool? Which agent may delegate to which? In most environments today the answer is: whoever asks. That is not a vulnerability in a model. It is a missing identity layer for machines.</p>
<p>One more entry is worth a mention because it will sound familiar to anyone tracking shadow IT: <strong>shadow MCP servers (MCP09)</strong>, the unapproved deployments running outside security governance, often on default credentials. The shadow AI problem now has an OWASP number. For the practical exposures behind these entries, see <a href="/blog/mcp-server-security-blind-spot-ai-stack/">MCP Server Security: The Blind Spot in Your AI Stack</a>.</p>
<p>None of these are theoretical. All of them get easier as organizations wire agents into more systems. And none of them have the household-name status that prompt injection now enjoys, which means the frameworks are ahead of most security programs’ resourcing. That is a new and uncomfortable position: the industry usually waits years for its threat lists. This time the lists arrived before the budgets.</p>
<h2>History does not repeat, but it files tickets</h2>
<p>We have watched this movie before. Monolithic applications got the OWASP Top 10. API-based applications got the API Security Top 10, because the attacks changed shape when the architecture did. AI applications and agents are the next architecture, and this time the pattern completed itself faster than ever: the LLM Top 10 for the conversation layer, the Agentic Top 10 for the systems that act, and the MCP Top 10 for the connective tissue between them.</p>
<p>So the catch-up question for security teams is no longer “what threats might emerge?” It is “which published OWASP entries is my program actually resourced against?” And the question for vendors sharpens the same way. Not “do you block prompt injection?” but “walk me through the MCP Top 10 and tell me what you see, and what you can control, beyond the prompt.”</p>
<p>The LLM Top 10 taught the industry to take AI threats seriously. The warm-up worked. The event has already started.</p>
<h2>Frequently asked questions about the OWASP AI Top 10 lists</h2>
<p><strong>What is the OWASP LLM Top 10?</strong> The OWASP Top 10 for Large Language Model Applications is a vendor-neutral list of the ten most critical security risks in LLM-based applications, maintained by the OWASP GenAI Security Project. Prompt injection, sensitive information disclosure, system prompt leakage, improper output handling and unbounded consumption account for most of what shows up in red-team exercises and public incidents.</p>
<p><strong>Is there an OWASP Top 10 for AI agents?</strong> Yes. The OWASP Top 10 for Agentic Applications (2026) was released on 9 December 2025. Its ten entries carry the ASI prefix and run from agent goal hijack (ASI01) to rogue agents (ASI10).</p>
<p><strong>What is the OWASP MCP Top 10?</strong> A list codifying the security risks of the Model Context Protocol, the standard connecting AI assistants to real systems and data. Entries run MCP01:2025 to MCP10:2025 and include tool poisoning (MCP03), command injection and execution (MCP05), insufficient authentication and authorization (MCP07) and shadow MCP servers (MCP09). The project is in beta.</p>
<p><strong>How many of the OWASP LLM Top 10 does Imperva address?</strong> Five out of the box: prompt injection and jailbreaking, sensitive information disclosure, system prompt leakage, improper output handling and unbounded consumption.</p>
<p><strong>What should I ask an AI security vendor?</strong> Not &#8220;do you block prompt injection?&#8221; but &#8220;walk me through the MCP Top 10 and tell me what you see, and what you can control, beyond the prompt.&#8221;</p>
<p><em><a href="https://www.imperva.com/products/ai-application-security/">Thales’s Imperva AI Application Security</a> addresses five of the OWASP LLM Top 10 out of the box. We believe the industry’s next frameworks will be written about agents and toolchains. Thales announced the AI Security Fabric in December 2025, with an MCP security gateway and runtime access control for agentic AI interactions on the 2026 roadmap. Our forthcoming white paper, Beyond the LLM Top 10, maps that terrain.</em></p>
<p>The post <a href="https://www.imperva.com/blog/owasp-llm-top-10-what-comes-next-agentic-mcp/">The OWASP LLM Top 10 Was the Warm-Up: What Comes Next</a> appeared first on <a href="https://www.imperva.com/blog">Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.imperva.com/blog/owasp-llm-top-10-what-comes-next-agentic-mcp/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<enclosure type="image/jpg" url="https://www.imperva.com/blog/wp-content/uploads/sites/9/2024/03/shutterstock_1071270287-22.jpg" length="845" />	</item>
		<item>
		<title>Imperva API Security Token &#038; Authentication Risk Report: Nearly 40% of APIs Face Multiple Authentication Risks</title>
		<link>https://www.imperva.com/blog/imperva-api-security-token-authentication-risk-report-nearly-40-of-apis-face-multiple-authentication-risks/</link>
					<comments>https://www.imperva.com/blog/imperva-api-security-token-authentication-risk-report-nearly-40-of-apis-face-multiple-authentication-risks/#respond</comments>
		
		<dc:creator><![CDATA[Rohit Kumar]]></dc:creator>
		<pubDate>Thu, 13 Aug 2026 09:19:33 +0000</pubDate>
				<category><![CDATA[Application Security]]></category>
		<guid isPermaLink="false">https://www.imperva.com/blog/?p=21228</guid>

					<description><![CDATA[<p>Every year, the security industry publishes benchmark reports built more or less the same way: pick a handful of common vulnerabilities, measure how often they show up, publish the percentages, and move on. We just finished our second year running one of those reports — and the most important thing we found wasn&#8217;t a percentage. [&#8230;]</p>
<p>The post <a href="https://www.imperva.com/blog/imperva-api-security-token-authentication-risk-report-nearly-40-of-apis-face-multiple-authentication-risks/">Imperva API Security Token &#038; Authentication Risk Report: Nearly 40% of APIs Face Multiple Authentication Risks</a> appeared first on <a href="https://www.imperva.com/blog">Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Every year, the security industry publishes benchmark reports built more or less the same way: pick a handful of common vulnerabilities, measure how often they show up, publish the percentages, and move on. We just finished our second year running one of those reports — and the most important thing we found wasn&#8217;t a percentage. It was a pattern hiding underneath all of them. </p>
<p>This is <a href="/resources/resource-library/reports/imperva-api-security-token-authentication-risk-report/?6">Imperva API Security&#8217;s 2026 Token &#038; Authentication Risk Report</a>: a year-over-year look at how organizations actually handle JSON Web Tokens (JWTs), Basic Authentication, and token lifecycles, based on real detection data — not survey answers — across 1,104 customer environments and 32,725 live API endpoints. Some of what we found is good news. Some of them should genuinely worry you. And one finding, buried in a few layers beneath the headline numbers, is the reason we think most organizations are fixing the wrong things first. </p>
<h2>What We Measured, and Why It&#8217;s Worth Trusting </h2>
<p>This is the second year of this benchmark, which matters more than it might seem. One year of data tells you what&#8217;s happening. Two years of consistent measurement tells you what&#8217;s changing — and change is where the real signal lives. </p>
<p>We tracked five risk categories, unchanged from last year&#8217;s methodology: whether JWTs contain sensitive data they shouldn&#8217;t, whether they&#8217;re signed with weak algorithms, whether they&#8217;re issued with excessively long lifespans, whether Basic Authentication with raw credentials is still in use, and whether tokens keep granting access after they should have expired. Every number below is a share of real detections, not a projection. </p>
<p><img data-src="https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/risk-prevalence-by-category.jpg" alt="risk prevalence by category" width="1958" height="1066" class="lazyload aligncenter size-full wp-image-21230 lazyload" srcset="https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/risk-prevalence-by-category.jpg 1958w, https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/risk-prevalence-by-category-300x163.jpg 300w, https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/risk-prevalence-by-category-1024x557.jpg 1024w, https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/risk-prevalence-by-category-768x418.jpg 768w, https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/risk-prevalence-by-category-1536x836.jpg 1536w" sizes="(max-width: 1958px) 100vw, 1958px" /></p>
<h2The Good News First </h2>
<p>Three of the five risks have improved. Weak signing algorithms dropped from 19.0% to 15.2% of detections — a 20% relative decline, the sharpest improvement in the study. Basic Authentication with raw credentials fell from 9.0% to 7.3%. Long-lived tokens eased slightly, from 21.0% to 19.2%. </p>
<p>These three have something in common: each map to a specific, well-publicized fix. Use a stronger algorithm. Migrate to OAuth2 or mTLS. Shorten your token lifetimes. None of that is a secret, and the data suggests teams that heard the advice actually acted on it. </p>
<p>That&#8217;s a genuine win worth taking seriously. It&#8217;s also, as it turns out, the easy part. </p>
<h2The Two Numbers That Should Worry You </h2>
<p>The two risk categories that got worse this year aren&#8217;t the ones with a tidy, well-known fix. They live in implementation details, and, not coincidentally, they&#8217;re the two with the most direct line to actual data exposure. </p>
<p>Sensitive data inside tokens climbed to 49.8% of all detections, up from 46.0% last year — already the largest risk category in the study, now touching essentially half of everything we measured. That number deserves more alarm than it might get on first read: a JWT isn&#8217;t encrypted by default. It&#8217;s typically just base64-encoded, which is not the same thing — anyone who can see the token can read what&#8217;s inside it; no exploit required. A JWT doesn&#8217;t need to be &#8220;hacked&#8221; to leak data. It just needs to pass through an ordinary place in a modern stack: a log line capturing request headers, browser storage on a shared machine, a support ticket where a developer pastes a request for debugging. If the token carries a name, an email, an account number, every one of those mundane, everyday paths becomes a potential exposure event. </p>
<p>Expired-token access jumped from 5.0% to 8.5% — a 70% relative increase, the sharpest move of any category we track, in either direction. This one is arguably more alarming precisely because it&#8217;s the more mechanical risk to get right. Deciding what counts as &#8220;sensitive&#8221; involves judgment. Enforcing that a token stops working after its exp claim has passed does not. When it fails anyway, it&#8217;s usually because expiration was checked in one place — a central auth service — and never independently re-verified everywhere else the token gets used. Every other assumption a security team makes about tokens rests on expiration being the backstop. When that backstop doesn&#8217;t hold, everything built on top of it gets quietly weaker too. </p>
<p>We can&#8217;t say with certainty why either number moved the way it did — a mix of factors is plausible, including genuine changes in practice, improvements in our own detection, and shifts in which organizations were measured each year. What we can say is that the direction, for both, is the wrong one, two years running. </p>
<h2>The Finding That Changes the Story </h2>
<p>Here&#8217;s what we didn&#8217;t expect going in: authentication risk doesn&#8217;t usually show up alone. </p>
<p>We went endpoint by endpoint and asked a specific question — how often do these five risks appear together, on the same API, at the same time? The answer: 13,016 of the 32,725 endpoints we analyzed, nearly 40%, carried more than one authentication risk simultaneously. Not an edge case. Not occasional. Roughly two out of every five. </p>
<p><img data-src="https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/endpoint-risk-e1786623373594.jpg" alt="endpoint risk" width="1873" height="1423" class="lazyload aligncenter size-full wp-image-21231 lazyload" srcset="https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/endpoint-risk-e1786623373594.jpg 1873w, https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/endpoint-risk-e1786623373594-300x228.jpg 300w, https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/endpoint-risk-e1786623373594-1024x778.jpg 1024w, https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/endpoint-risk-e1786623373594-768x583.jpg 768w, https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/endpoint-risk-e1786623373594-1536x1167.jpg 1536w" sizes="(max-width: 1873px) 100vw, 1873px" /></p>
<p>Picture what that looks like in practice. An endpoint that embeds sensitive data inside its tokens — a risk present in essentially half of all detections — sitting on the same endpoint as an expired-token gap that lets access continue indefinitely, a risk that grew 70% this year. We can&#8217;t say how often that exact pairing occurs; our data tells us endpoints carry multiple risks, not which specific risks pair together most often. But it&#8217;s exactly the kind of compounding scenario nearly 40% of endpoints are positioned for — a token that doesn&#8217;t just leak once, but keeps leaking, because nothing in the system ever cuts it off. </p>
<p>At the extreme end, it&#8217;s worse than pairing. The single riskiest endpoint we found carried all five risk types at once: sensitive data in the token, a weak signing algorithm, an excessively long lifetime, Basic Authentication, and continued access after expiry. Endpoints like that usually aren&#8217;t the result of five separate, unrelated mistakes. More often, they&#8217;re a single legacy or lightly-used endpoint that never got touched when the rest of the environment moved to better practices — quietly running on old assumptions while everything around it improved. </p>
<p>That&#8217;s the pattern that should reframe how this whole report gets read. If these risks were scattered at random, an endpoint like that would be a statistical fluke. Instead, the pattern repeats across nearly 40% of everything we measured. That&#8217;s not scattered. That&#8217;s systemic — and it means the standard response to finding one authentication issue, patching it and closing the ticket, is very likely leaving a second or third issue sitting untouched on the exact same endpoint. </p>
<h2>What This Means for How We Approach Authentication </h2>
<p>Here&#8217;s the uncomfortable pattern sitting underneath all of the numbers above: the risks that improved this year are the ones that are easy to check. The risks that got worse are the ones that are hard to check. That&#8217;s not a coincidence — it&#8217;s a fairly accurate description of how security improvement actually happens inside most organizations. </p>
<p>&#8220;Did we pick a strong signing algorithm&#8221; is a yes-or-no question a scanner can answer in seconds. &#8220;What data did we decide to put inside this token, and did anyone revisit that decision when a new field got added eighteen months later&#8221; is not. &#8220;Are we still using Basic Auth&#8221; shows up on nearly every audit checklist in the industry. &#8220;Does every service that validates this token independently re-check its expiration or does one of them just trust the gateway&#8221; usually doesn&#8217;t, because answering it requires understanding how a system actually behaves, not just which protocol it uses. </p>
<p>We think that&#8217;s the real story in this year&#8217;s data. The industry has gotten reasonably good at fixing the authentication problems that are legible — the ones a checklist can catch, the ones a single well-publicized recommendation can meaningfully move. It hasn&#8217;t gotten meaningfully better at the problems that require understanding how a system was actually built, which is exactly the category the two worsening risks, and the clustering pattern connecting them, fall into. A scanner can tell you a token is signed with a weak algorithm. It&#8217;s much worse at telling you that the same token is also carrying a customer&#8217;s date of birth. </p>
<p>If there&#8217;s one thing worth taking from this report, it&#8217;s this: the next time your team finds one authentication issue on an endpoint, the right instinct isn&#8217;t relief that you caught it. It&#8217;s to ask what else is sitting there next to it — because in nearly 40% of the cases we looked at, the answer was something. </p>
<h2>Get the Full Report </h2>
<p>This post covers the headline findings. The full 2026 Token &#038; Authentication Risk Report includes the complete year-over-year breakdown across all five categories, the reasoning behind each shift, and specific, practical recommendations for where security and engineering teams should focus first. </p>
<p><a href="https://www.imperva.com/resources/resource-library/reports/imperva-api-security-token-authentication-risk-report/?6">Download the 2026 Token &#038; Authentication Risk Report → </a></p>
<p>The post <a href="https://www.imperva.com/blog/imperva-api-security-token-authentication-risk-report-nearly-40-of-apis-face-multiple-authentication-risks/">Imperva API Security Token &#038; Authentication Risk Report: Nearly 40% of APIs Face Multiple Authentication Risks</a> appeared first on <a href="https://www.imperva.com/blog">Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.imperva.com/blog/imperva-api-security-token-authentication-risk-report-nearly-40-of-apis-face-multiple-authentication-risks/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<enclosure type="image/jpg" url="https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/skyscrapers.jpg" length="845" />	</item>
		<item>
		<title>CopyEscape: Taking Over Docker Hosts with docker cp</title>
		<link>https://www.imperva.com/blog/copyescape-taking-over-docker-hosts-with-docker-cp/</link>
					<comments>https://www.imperva.com/blog/copyescape-taking-over-docker-hosts-with-docker-cp/#respond</comments>
		
		<dc:creator><![CDATA[Ron Masas]]></dc:creator>
		<pubDate>Tue, 11 Aug 2026 03:45:11 +0000</pubDate>
				<category><![CDATA[Imperva Threat Research]]></category>
		<guid isPermaLink="false">https://www.imperva.com/blog/?p=21210</guid>

					<description><![CDATA[<p>Imperva Red Team uncovered CVE-2026-17106, a container-to-host arbitrary file-write vulnerability in Docker’s docker cp command. Docker later confirmed that the same CVE also affected sbx cp when copying files out of Docker Sandboxes. A malicious container or sandbox could exploit the copy process to create or overwrite files outside the destination selected by the user, [&#8230;]</p>
<p>The post <a href="https://www.imperva.com/blog/copyescape-taking-over-docker-hosts-with-docker-cp/">CopyEscape: Taking Over Docker Hosts with docker cp</a> appeared first on <a href="https://www.imperva.com/blog">Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><span style="font-weight: 400">Imperva Red Team uncovered </span><a href="https://www.cve.org/CVERecord?id=CVE-2026-17106" target="_blank" rel="noopener"><b>CVE-2026-17106</b></a><span style="font-weight: 400">, a container-to-host arbitrary file-write vulnerability in Docker’s </span><i><span style="font-weight: 400">docker cp</span></i><span style="font-weight: 400"> command. Docker later confirmed that the same CVE also affected </span><i><span style="font-weight: 400">sbx cp</span></i><span style="font-weight: 400"> when copying files out of Docker Sandboxes. A malicious container or sandbox could exploit the copy process to create or overwrite files outside the destination selected by the user, potentially enabling code execution on the machine running the </span><a href="https://www.docker.com/products/cli/" target="_blank" rel="noopener"><span style="font-weight: 400">Docker CLI</span></a><span style="font-weight: 400">.</span></p>
<p><span style="font-weight: 400">Through CVE-2026-17106, an attacker-controlled container could turn a routine file copy into two powerful outcomes:</span></p>
<p><b>Host file overwrite</b><span style="font-weight: 400">: creating or replacing any file writable by the user running </span><i><span style="font-weight: 400">docker cp</span></i><span style="font-weight: 400">, including shell configuration, executables, SSH configuration, source code, and persistence mechanisms.</span></p>
<p><b>Code execution:</b><span style="font-weight: 400"> Executing attacker-controlled code as the logged-in user on macOS or, when docker cp runs with elevated privileges on Linux, achieving root code execution immediately after the command completes by overwriting the </span><a href="https://www.docker.com/blog/runc/" target="_blank" rel="noopener"><i><span style="font-weight: 400">runc</span></i></a><span style="font-weight: 400"> binary.</span></p>
<p><span style="font-weight: 400">The exploit chains two weaknesses in Docker’s archive pipeline: a filesystem race that lets a running container produce an inconsistent tar archive, and an extraction flaw that allows the Docker CLI to follow a planted symlink outside the intended destination.</span></p>
<p><span style="font-weight: 400">Together, these weaknesses turn the user’s own Docker CLI into a write primitive. The attacker controls the container and its files, the CLI supplies access to the host filesystem.</span></p>
<p><span style="font-weight: 400">The </span><i><span style="font-weight: 400">docker cp </span></i><span style="font-weight: 400">command is routinely used to retrieve build artifacts, test results, logs, and forensic evidence from containers. This makes the vulnerability particularly relevant to CI systems, developer workstations, privileged automation, and incident-response workflows. In the last case, simply collecting evidence from a compromised container could activate the payload waiting inside it.</span></p>
<p><span style="font-weight: 400">The impact also reaches AI-agent workflows. Docker Sandboxes uses </span><i><span style="font-weight: 400">sbx cp</span></i><span style="font-weight: 400"> to move files between an isolated agent environment and the host. Docker Sandboxes 0.38.0, released August 6, identifies and fixes a “destination-escape flaw in sbx cp copy-out” under CVE-2026-17106. This means retrieving an artifact produced inside an untrusted or compromised coding-agent sandbox could expose the host to the same class of destination escape.</span></p>
<h2><b>From a Simple Copy to a Host Write</b></h2>
<p><span style="font-weight: 400">The command that started this research could hardly look more ordinary:</span></p>
<pre><i><span style="font-weight: 400">docker cp container:/path/to/file.txt ./file.txt</span></i></pre>
<p><span style="font-weight: 400">The source is inside the container. The destination is chosen by the user. The expected security boundary seems obvious: Docker should write to ./file.txt and nowhere else.</span></p>
<p><span style="font-weight: 400">But docker cp is not a direct filesystem-to-filesystem copy.</span></p>
<p><span style="font-weight: 400">When copying from a container, the Docker daemon walks the container&#8217;s live filesystem and turns the selected path into a tar archive. The Docker CLI receives that archive and extracts it on the client machine.</span></p>
<p><img class="lazyload alignnone size-full wp-image-21213 lazyload" alt="image3" width="1536" height="1024" data-src="https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/image3.png" srcset="https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/image3.png 1536w, https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/image3-300x200.png 300w, https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/image3-1024x683.png 1024w, https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/image3-768x512.png 768w" sizes="(max-width: 1536px) 100vw, 1536px" /></p>
<p><span style="font-weight: 400">This architecture creates a powerful connection between two security domains. The container controls the archive contents, while the local CLI performs the resulting filesystem operations with the permissions of the person or process that invoked docker cp.</span></p>
<p><span style="font-weight: 400">For this design to remain safe, Docker needs to preserve two properties:</span></p>
<ol>
<li style="font-weight: 400"><span style="font-weight: 400">The daemon must produce a coherent archive from the container&#8217;s filesystem.</span></li>
<li style="font-weight: 400"><span style="font-weight: 400">The CLI must confine every extracted object to the destination selected by the user.</span></li>
</ol>
<p><span style="font-weight: 400">We found a way to break both properties in the same copy operation.</span></p>
<h2><b>Impact</b></h2>
<p><span style="font-weight: 400">The vulnerability provides an </span><b>arbitrary file create or overwrite primitive within the permissions of the Docker CLI process</b><span style="font-weight: 400">.</span></p>
<p><span style="font-weight: 400">The malicious container does not automatically inherit root privileges from </span><i><span style="font-weight: 400">dockerd</span></i><span style="font-weight: 400">, and exploitation requires a user or automated system to invoke docker cp against the attacker-controlled path.</span></p>
<p><span style="font-weight: 400">But the final write occurs on the machine running the CLI, with the authority of that user-not with the permissions of the process inside the container.</span></p>
<p><span style="font-weight: 400">We validated the exploit on Linux with Docker Engine 29.6.1 and on macOS with Docker Desktop 4.81.0 (232925).</span></p>
<h3><span style="font-weight: 400">Developer Compromise on macOS</span></h3>
<div style="width: 1792px;" class="wp-video"><video class="wp-video-shortcode" id="video-21210-1" width="1792" height="360" preload="metadata" controls="controls"><source type="video/mp4" src="https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/copyescape-macos-poc.mp4?_=1" /><a href="https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/copyescape-macos-poc.mp4">https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/copyescape-macos-poc.mp4</a></video></div>
<p><span style="font-weight: 400">Docker Desktop runs the daemon inside a Linux virtual machine, but a container-to-local docker cp operation is extracted by the CLI running on macOS.</span></p>
<p><span style="font-weight: 400">This means the archive crosses the VM boundary before the vulnerable operation occurs. The symlink is followed by a process on the Mac, and its target is interpreted in the Mac&#8217;s filesystem namespace.</span></p>
<p><span style="font-weight: 400">A malicious container could therefore target files such as shell startup scripts, user-level executables, SSH configuration, source trees, cloud configuration, or persistence mechanisms under ~/Library/LaunchAgents. Overwriting a shell startup file could execute the attacker&#8217;s code the next time the user opens a terminal.</span></p>
<p><span style="font-weight: 400">The container does not need to escape the Docker Desktop VM directly. It convinces the local CLI to perform the write on its behalf.</span></p>
<h3><span style="font-weight: 400">Root Code Execution on Linux</span></h3>
<div style="width: 1792px;" class="wp-video"><video class="wp-video-shortcode" id="video-21210-2" width="1792" height="360" preload="metadata" controls="controls"><source type="video/mp4" src="https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/copyescape-linux.mp4?_=2" /><a href="https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/copyescape-linux.mp4">https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/copyescape-linux.mp4</a></video></div>
<p><span style="font-weight: 400">On Linux, the daemon and CLI commonly run on the same host. The write still carries the CLI user&#8217;s permissions.</span></p>
<p><span style="font-weight: 400">For an ordinary user, the attacker can reach files writable by that account. If an administrator, CI worker, or maintenance process invokes sudo docker cp, the operation can reach root-owned system paths.</span></p>
<p><span style="font-weight: 400">In our </span><a href="https://github.com/masasron/CopyEscape-CVE-2026-17106" target="_blank" rel="noopener"><span style="font-weight: 400">proof of concept</span></a><span style="font-weight: 400">, we replaced </span><i><span style="font-weight: 400">/usr/bin/runc</span></i><span style="font-weight: 400"> with a shell script. A later Docker lifecycle operation executed the replaced binary and created a marker file as root.</span></p>
<p><span style="font-weight: 400">The exploit did not obtain root from the Docker daemon. The copy already had enough authority to replace </span><i><span style="font-weight: 400">runc</span></i><span style="font-weight: 400">, and the later execution converted that file write into root code execution.</span></p>
<h2><b>The Archive That Described Two Filesystems</b></h2>
<p><span style="font-weight: 400">The first part of the chain was in the archive producer.</span></p>
<p><span style="font-weight: 400">Both the Moby and Docker CLI source trees we reviewed used github.com/moby/go-archive v0.2.0. For a container-to-local copy, Moby&#8217;s containerArchivePath creates a tarballer and runs it inside the container filesystem:</span></p>
<p><img class="lazyload alignnone size-full wp-image-21223 lazyload" alt="image13" width="1944" height="446" data-src="https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/image13.png" srcset="https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/image13.png 1944w, https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/image13-300x69.png 300w, https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/image13-1024x235.png 1024w, https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/image13-768x176.png 768w, https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/image13-1536x352.png 1536w" sizes="(max-width: 1944px) 100vw, 1944px" /></p>
<p style="text-align: center"><i><span style="font-weight: 400">Source: </span></i><a href="https://github.com/moby/moby/blob/docker-v29.6.1/daemon/archive_unix.go#L76-L82" target="_blank" rel="noopener"><i><span style="font-weight: 400">Moby containerArchivePath, Docker Engine 29.6.1, lines 76–82</span></i></a><i><span style="font-weight: 400">.</span></i></p>
<p><span style="font-weight: 400">Docker locks the container object while the archive is read, but that lock protects Docker&#8217;s internal state. It does not freeze processes running inside the container.</span></p>
<p><span style="font-weight: 400">Those processes can continue renaming files, replacing directories, and creating symlinks while the daemon walks the source tree.</span></p>
<p><span style="font-weight: 400">The tarballer performs that walk with </span><i><span style="font-weight: 400">filepath.WalkDir</span></i><span style="font-weight: 400">:</span></p>
<p><img class="lazyload alignnone size-full wp-image-21218 lazyload" alt="image8" width="1999" height="623" data-src="https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/image8.png" srcset="https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/image8.png 1999w, https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/image8-300x93.png 300w, https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/image8-1024x319.png 1024w, https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/image8-768x239.png 768w, https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/image8-1536x479.png 1536w" sizes="(max-width: 1999px) 100vw, 1999px" /></p>
<p style="text-align: center"><i><span style="font-weight: 400">Source: </span></i><a href="https://github.com/moby/go-archive/blob/v0.2.0/archive.go#L691-L802" target="_blank" rel="noopener"><i><span style="font-weight: 400">moby/go-archive v0.2.0 archive walk, lines 691–802</span></i></a><i><span style="font-weight: 400">.</span></i></p>
<p><i><span style="font-weight: 400">WalkDir</span></i><span style="font-weight: 400"> reads a directory entry and records its type. If the entry is a directory, the walker plans to descend into it.</span></p>
<p><span style="font-weight: 400">The callback then passes the pathname to </span><i><span style="font-weight: 400">addTarFile</span></i><span style="font-weight: 400">, which looks it up again with </span><i><span style="font-weight: 400">Lstat</span></i><span style="font-weight: 400"> to create the tar header:</span></p>
<p><img class="lazyload alignnone size-full wp-image-21222 lazyload" alt="image12" width="1940" height="964" data-src="https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/image12.png" srcset="https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/image12.png 1940w, https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/image12-300x149.png 300w, https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/image12-1024x509.png 1024w, https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/image12-768x382.png 768w, https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/image12-1536x763.png 1536w" sizes="(max-width: 1940px) 100vw, 1940px" /></p>
<p style="text-align: center"><i><span style="font-weight: 400">Source: </span></i><a href="https://github.com/moby/go-archive/blob/v0.2.0/archive.go#L295-L317" target="_blank" rel="noopener"><i><span style="font-weight: 400">moby/go-archive v0.2.0 addTarFile, lines 295–317</span></i></a><i><span style="font-weight: 400">.</span></i></p>
<p><span style="font-weight: 400">The same pathname now answers two different questions at two different times:</span></p>
<p><b>Traversal decision</b><span style="font-weight: 400">: is this entry a directory that WalkDir should enter?</span></p>
<p><b>Archive metadata</b><span style="font-weight: 400">: is this entry a file, directory, or symlink that should be written to the tar stream?</span></p>
<p><span style="font-weight: 400">If the path changes between those observations, the two answers no longer need to agree.</span></p>
<h2><b>Turning the Race into a Reliable Primitive</b></h2>
<p><span style="font-weight: 400">In our </span><a href="https://github.com/masasron/CopyEscape-CVE-2026-17106" target="_blank" rel="noopener"><span style="font-weight: 400">proof of concept</span></a><span style="font-weight: 400">, /watched/file.txt is intentionally deceptive. An </span><i><span style="font-weight: 400">LD_PRELOAD</span></i><span style="font-weight: 400"> interposer makes it appear to be a regular file to processes inside the container by redirecting exact accesses to a hidden backing file, /watched/.file.txt.regular. The Docker daemon, however, sees the underlying file.txt path as a directory and can walk the attacker-controlled tree beneath it.</span></p>
<p><span style="font-weight: 400">The walker initially sees the following directory:</span></p>
<p><img class="lazyload alignnone size-full wp-image-21224 lazyload" alt="image14" width="1999" height="204" data-src="https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/image14.png" srcset="https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/image14.png 1999w, https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/image14-300x31.png 300w, https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/image14-1024x105.png 1024w, https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/image14-768x78.png 768w, https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/image14-1536x157.png 1536w" sizes="(max-width: 1999px) 100vw, 1999px" /></p>
<p><span style="font-weight: 400">After </span><i><span style="font-weight: 400">WalkDir</span></i><span style="font-weight: 400"> records escape as a directory, the attacker moves it aside and replaces it with a staged symlink:</span></p>
<p><img class="lazyload alignnone size-full wp-image-21217 lazyload" alt="image7" width="1999" height="198" data-src="https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/image7.png" srcset="https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/image7.png 1999w, https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/image7-300x30.png 300w, https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/image7-1024x101.png 1024w, https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/image7-768x76.png 768w, https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/image7-1536x152.png 1536w" sizes="(max-width: 1999px) 100vw, 1999px" /></p>
<p><span style="font-weight: 400">The switch requires only two rename operations, winning a filesystem race blindly would be unreliable, so we gave the container a clock.</span></p>
<p><span style="font-weight: 400">Our </span><a href="https://github.com/masasron/CopyEscape-CVE-2026-17106" target="_blank" rel="noopener"><span style="font-weight: 400">proof of concept</span></a><span style="font-weight: 400"> places a large file immediately before the pivot directory and monitors it with filesystem notifications. When the daemon opens that file, the attacker knows the walk has reached the right location. The large file widens the timing window, and the notification signals when to perform the two renames.</span></p>
<p><span style="font-weight: 400">What begins as a race becomes a repeatable sequence.</span></p>
<p><span style="font-weight: 400">After the switch, </span><i><span style="font-weight: 400">addTarFile</span></i><span style="font-weight: 400"> sees a symlink and emits a symlink header for file.txt/escape. Control then returns to </span><i><span style="font-weight: 400">WalkDir</span></i><span style="font-weight: 400">, whose earlier directory entry still says that escape is a directory. The walker descends through the same pathname and adds a child beneath the symlink&#8217;s archive name.</span></p>
<p><span style="font-weight: 400">The resulting tar stream contains two entries:</span></p>
<p><img class="lazyload alignnone size-full wp-image-21215 lazyload" alt="image5" width="1999" height="200" data-src="https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/image5.png" srcset="https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/image5.png 1999w, https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/image5-300x30.png 300w, https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/image5-1024x102.png 1024w, https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/image5-768x77.png 768w, https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/image5-1536x154.png 1536w" sizes="(max-width: 1999px) 100vw, 1999px" /></p>
<p><span style="font-weight: 400">Each entry is understandable on its own. Together, they describe two different moments in the source filesystem: escape is represented as a symlink, while its child is represented as though escape were still a directory.</span></p>
<p><img class="lazyload alignnone size-full wp-image-21221 lazyload" alt="image11" width="1774" height="887" data-src="https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/image11.png" srcset="https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/image11.png 1774w, https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/image11-300x150.png 300w, https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/image11-1024x512.png 1024w, https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/image11-768x384.png 768w, https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/image11-1536x768.png 1536w" sizes="(max-width: 1774px) 100vw, 1774px" /></p>
<p><span style="font-weight: 400">At this point, the container has produced an inconsistent archive. That alone should not be enough to write outside the destination. The client still controls extraction and can reject the dangerous sequence.</span></p>
<p><span style="font-weight: 400">It did not.</span></p>
<h2><b>The Extractor Checked One Path and Created Another</b></h2>
<p><span style="font-weight: 400">For a copy from a container, the Docker CLI eventually reaches </span><i><span style="font-weight: 400">archive.CopyTo</span></i><span style="font-weight: 400">:</span></p>
<p><img class="lazyload alignnone size-full wp-image-21216 lazyload" alt="image6" width="1532" height="390" data-src="https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/image6.png" srcset="https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/image6.png 1532w, https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/image6-300x76.png 300w, https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/image6-1024x261.png 1024w, https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/image6-768x196.png 768w" sizes="(max-width: 1532px) 100vw, 1532px" /></p>
<p style="text-align: center"><i><span style="font-weight: 400">Source: </span></i><a href="https://github.com/moby/go-archive/blob/v0.2.0/copy.go#L418-L437" target="_blank" rel="noopener"><i><span style="font-weight: 400">moby/go-archive v0.2.0 CopyTo, lines 418–437</span></i></a><i><span style="font-weight: 400">.</span></i></p>
<p><span style="font-weight: 400">Neither option confines traversal through an intermediate symlink. The vulnerable symlink handling attempted to perform its own containment check:</span></p>
<p><img class="lazyload alignnone size-full wp-image-21211 lazyload" alt="image1" width="1528" height="622" data-src="https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/image1.png" srcset="https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/image1.png 1528w, https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/image1-300x122.png 300w, https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/image1-1024x417.png 1024w, https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/image1-768x313.png 768w" sizes="(max-width: 1528px) 100vw, 1528px" /></p>
<p style="text-align: center"><i><span style="font-weight: 400">Source: </span></i><a href="https://github.com/moby/go-archive/blob/v0.2.0/archive.go#L480-L492" target="_blank" rel="noopener"><i><span style="font-weight: 400">moby/go-archive v0.2.0 symlink extraction, lines 480–492</span></i></a><i><span style="font-weight: 400">.</span></i></p>
<p><span style="font-weight: 400">The validation and the filesystem operation use different values.</span></p>
<p><span style="font-weight: 400">The containment check validates targetPath, a path constructed with filepath.Join. The subsequent os.Symlink call receives the original hdr.Linkname from the archive.</span></p>
<p><span style="font-weight: 400">For an extraction path of /safe/output/file.txt/escape and a link target of /usr/bin, the validation evaluates:</span></p>
<p><img class="lazyload alignnone size-full wp-image-21212 lazyload" alt="image2" width="1216" height="208" data-src="https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/image2.png" srcset="https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/image2.png 1216w, https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/image2-300x51.png 300w, https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/image2-1024x175.png 1024w, https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/image2-768x131.png 768w" sizes="(max-width: 1216px) 100vw, 1216px" /></p>
<p><span style="font-weight: 400">That constructed path appears to remain under /safe/output, so the check approves it. Docker then gives the original absolute target to the kernel:</span></p>
<p><img class="lazyload alignnone size-full wp-image-21214 lazyload" alt="image4" width="1204" height="158" data-src="https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/image4.png" srcset="https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/image4.png 1204w, https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/image4-300x39.png 300w, https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/image4-1024x134.png 1024w, https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/image4-768x101.png 768w" sizes="(max-width: 1204px) 100vw, 1204px" /></p>
<p><span style="font-weight: 400">The check approves one path. The filesystem creates another.</span></p>
<p><span style="font-weight: 400">The same condition has an additional weakness: string prefixes do not represent path containment. A path such as /safe/output-elsewhere also begins with </span><i><span style="font-weight: 400">/safe/output</span></i><span style="font-weight: 400">. Our chain already had what it needed from the checked-value-versus-used-value mismatch.</span></p>
<p><span style="font-weight: 400">The extractor then processes the child entry, file.txt/escape/runc.</span></p>
<p><span style="font-weight: 400">Docker cleans the archive name, joins it to the destination, and checks for a lexical ../ escape, but the child entry contains no ../. As text, it remains beneath the destination.</span></p>
<p><span style="font-weight: 400">The previous tar entry has changed what the pathname means on disk. Before creating the child, the vulnerable extractor does not re-establish confinement against the resolved target:</span></p>
<p><img class="lazyload alignnone size-full wp-image-21220 lazyload" alt="image10" width="1608" height="678" data-src="https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/image10.png" srcset="https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/image10.png 1608w, https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/image10-300x126.png 300w, https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/image10-1024x432.png 1024w, https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/image10-768x324.png 768w, https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/image10-1536x648.png 1536w" sizes="(max-width: 1608px) 100vw, 1608px" /></p>
<p style="text-align: center"><i><span style="font-weight: 400">Source: </span></i><a href="https://github.com/moby/go-archive/blob/v0.2.0/archive.go#L295-L317" target="_blank" rel="noopener"><i><span style="font-weight: 400">moby/go-archive v0.2.0 addTarFile, lines 295–317</span></i></a><i><span style="font-weight: 400">.</span></i></p>
<p><span style="font-weight: 400">When the file is created, the kernel follows escape -&gt; /usr/bin. The attacker&#8217;s bytes land at /usr/bin/runc on the Docker client rather than under /safe/output.</span></p>
<p><span style="font-weight: 400">The full chain is:</span></p>
<ol>
<li style="font-weight: 400"><span style="font-weight: 400">WalkDir records escape as a directory.</span></li>
<li style="font-weight: 400"><span style="font-weight: 400">The container replaces it with an absolute symlink.</span></li>
<li style="font-weight: 400"><span style="font-weight: 400">addTarFile emits the symlink into the tar stream.</span></li>
<li style="font-weight: 400"><span style="font-weight: 400">WalkDir descends using its earlier directory type and emits a child entry.</span></li>
<li style="font-weight: 400"><span style="font-weight: 400">The CLI validates a constructed target but creates the original absolute symlink.</span></li>
<li style="font-weight: 400"><span style="font-weight: 400">The CLI extracts the child through that symlink and writes outside the destination.</span></li>
</ol>
<p><span style="font-weight: 400">One stale directory entry and one ineffective containment check were enough to turn docker cp into a host write.</span></p>
<h2><b>From Host Write to Host Compromise</b></h2>
<p><span style="font-weight: 400">At this point, the copy operation is no longer confined to the destination chosen by the user. The attacker-controlled container has gained a write primitive on the Docker client, with the permissions of the process running </span><i><span style="font-weight: 400">docker cp</span></i><span style="font-weight: 400">.</span></p>
<p><span style="font-weight: 400">What happens next depends on those permissions. A copy launched by a developer could target user-writable startup files, shell configuration, source code, or persistence mechanisms. If the command runs as root, as is common in automation and some Linux environments, the same primitive could reach system executables and privileged configuration, turning the file write into root code execution.</span></p>
<p><span style="font-weight: 400">The vulnerability simply prepares the malicious filesystem and waits. The trigger may be a developer retrieving a build artifact, a CI job collecting test results, or an incident responder copying evidence from a container they already suspect is compromised.</span></p>
<p><span style="font-weight: 400">In each case, the operation intended to take data safely out of the container becomes the step that carries the attack back onto the host.</span></p>
<h2><b>Mitigations</b></h2>
<p><span style="font-weight: 400">Users should upgrade to Docker Engine and CLI 29.7.2 or later, and Docker Desktop 4.86.0 or later.</span></p>
<p><span style="font-weight: 400">Where upgrading is not immediately possible:</span></p>
<ul>
<li style="font-weight: 400"><span style="font-weight: 400">Avoid copying from running, untrusted, or compromised containers onto a sensitive client.</span></li>
<li style="font-weight: 400"><span style="font-weight: 400">Stop the container before copying. Docker supports copying from a stopped container, preventing a live process from performing the race used in this chain.</span></li>
<li style="font-weight: 400"><span style="font-weight: 400">Avoid </span><span style="font-weight: 400">sudo docker cp</span><span style="font-weight: 400"> and root-run copy automation.</span></li>
<li style="font-weight: 400"><span style="font-weight: 400">Run the Docker CLI with the least privilege required for the workflow.</span></li>
<li style="font-weight: 400"><span style="font-weight: 400">Retrieve data from suspicious containers using a disposable account, VM, or similarly isolated environment.</span></li>
</ul>
<p><span style="font-weight: 400">Stopping the container blocks the producer race demonstrated here. It does not replace safe extraction: any archive originating from an untrusted source should still be treated as hostile input.</span></p>
<h2><b>Conclusion</b></h2>
<p><span style="font-weight: 400">Container boundaries are not defined only by namespaces, virtual machines, or the Docker daemon. They also depend on the client-side tools that move data across those boundaries.</span></p>
<p><span style="font-weight: 400">docker cp connects a live, attacker-controlled filesystem to an extractor running with the user&#8217;s authority. That design requires both sides of the pipeline to preserve a strict contract: the archive must be coherent, and every extracted object must remain inside the destination.</span></p>
<p><span style="font-weight: 400">CVE-2026-17106 broke that contract. The daemon observed one pathname as two different objects, producing a symlink followed by its apparent child. The CLI then validated one path, created another, and allowed the child entry to cross onto the client filesystem.</span></p>
<p><span style="font-weight: 400">The most important lesson is simple: archive extraction is a security boundary. Path normalization and string-prefix checks cannot enforce that boundary once symlinks and concurrent filesystem changes are involved. Filesystem operations must be rooted so that the kernel, not a string comparison, guarantees where the write can land.</span></p>
<p><span style="font-weight: 400">We responsibly disclosed the vulnerability to Docker and delayed publication several times to align disclosure with a usable patch. We would like to thank Docker&#8217;s security and engineering teams for investigating the report, coordinating the CVE, and working through the regressions introduced by the initial fix.</span></p>
<h3><span style="font-weight: 400">Responsible Disclosure Timeline</span></h3>
<p><b>April 11, 2026</b><span style="font-weight: 400"> &#8211; We reported the vulnerability to Docker with technical details and reproduction information.</span></p>
<p><b>April 14, 2026</b><span style="font-weight: 400"> &#8211; Docker acknowledged receipt and began reviewing the report.</span></p>
<p><b>April 15, 2026</b><span style="font-weight: 400"> &#8211; Docker confirmed the behavior as a valid finding and explained its assessment of the client-side privilege boundary.</span></p>
<p><b>July 10, 2026</b><span style="font-weight: 400"> &#8211; The initial 90-day disclosure period elapsed without a public patch. We requested a concrete remediation, advisory, and publication schedule.</span></p>
<p><b>July 14, 2026</b><span style="font-weight: 400"> &#8211; Docker described two remediation tracks: extraction-library hardening as the primary security fix and source-walk hardening as follow-up work. We agreed to delay publication while the fixes were prepared.</span></p>
<p><b>July 24, 2026</b><span style="font-weight: 400"> &#8211; Docker provided </span><a href="https://www.cve.org/CVERecord?id=CVE-2026-17106" target="_blank" rel="noopener"><span style="font-weight: 400">CVE-2026-17106</span></a><span style="font-weight: 400"> / </span><a href="https://github.com/moby/go-archive/security/advisories/GHSA-hfg8-hc9c-6c3h" target="_blank" rel="noopener"><span style="font-weight: 400">GHSA-hfg8-hc9c-6c3h</span></a><span style="font-weight: 400"> and targeted an August 3 coordinated release.</span></p>
<p><b>July 27, 2026</b><span style="font-weight: 400"> &#8211; Docker confirmed that the source-walk TOCTOU would not receive a separate CVE and would instead be addressed as defense-in-depth hardening.</span></p>
<p><b>July 30, 2026</b><span style="font-weight: 400"> &#8211; moby/go-archive v0.3.0 and Docker Engine/CLI 29.7.0 shipped the extraction fix.</span></p>
<p><b>July 31, 2026</b><span style="font-weight: 400"> &#8211; Docker reported significant functional regressions caused by the initial hardening and requested a final extension to August 10. Follow-up go-archive and Engine releases addressed the regressions.</span></p>
<p><b>August 1, 2026</b><span style="font-weight: 400"> &#8211; We agreed to extend coordinated disclosure to August 10.</span></p>
<p><b>August 6, 2026</b><span style="font-weight: 400"> &#8211; Docker Sandboxes 0.38.0 shipped a fix for a destination-escape flaw in </span><span style="font-weight: 400">sbx cp</span><span style="font-weight: 400"> copy-out under CVE-2026-17106. Docker also confirmed that the Docker Desktop update remained scheduled for August 10.</span></p>
<p><b>August 10, 2026</b><span style="font-weight: 400"> &#8211; Docker released</span><a href="https://docs.docker.com/desktop/release-notes/#4860" target="_blank" rel="noopener"> <span style="font-weight: 400">Docker Desktop 4.86.0</span></a><span style="font-weight: 400">, bundling Docker Engine 29.7.2 and delivering the corresponding Docker Desktop fix.</span></p>
<p>The post <a href="https://www.imperva.com/blog/copyescape-taking-over-docker-hosts-with-docker-cp/">CopyEscape: Taking Over Docker Hosts with docker cp</a> appeared first on <a href="https://www.imperva.com/blog">Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.imperva.com/blog/copyescape-taking-over-docker-hosts-with-docker-cp/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<enclosure type="image/jpg" url="https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/image9.png" length="1536" />	</item>
		<item>
		<title>Imperva Customers Protected Against XSS2Shell (CVE-2026-64638) in WordPress Core</title>
		<link>https://www.imperva.com/blog/imperva-customers-protected-against-xss2shell-cve-2026-64638-in-wordpress-core/</link>
					<comments>https://www.imperva.com/blog/imperva-customers-protected-against-xss2shell-cve-2026-64638-in-wordpress-core/#respond</comments>
		
		<dc:creator><![CDATA[Muly Levy]]></dc:creator>
		<pubDate>Mon, 10 Aug 2026 18:13:32 +0000</pubDate>
				<category><![CDATA[Imperva Threat Research]]></category>
		<guid isPermaLink="false">https://www.imperva.com/blog/?p=21203</guid>

					<description><![CDATA[<p>TL;DR: CVE-2026-64638, dubbed XSS2Shell, is a high-severity WordPress Core vulnerability that begins as a pre-authentication reflected XSS on the login screen and can be chained to PHP code execution when a logged-in administrator is successfully targeted. WordPress fixed the issue in 7.0.3 and backported the fix through maintained branches. Imperva Cloud WAF and On-Prem WAF [&#8230;]</p>
<p>The post <a href="https://www.imperva.com/blog/imperva-customers-protected-against-xss2shell-cve-2026-64638-in-wordpress-core/">Imperva Customers Protected Against XSS2Shell (CVE-2026-64638) in WordPress Core</a> appeared first on <a href="https://www.imperva.com/blog">Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><em><strong>TL;DR:</strong> CVE-2026-64638, dubbed XSS2Shell, is a high-severity WordPress Core vulnerability that begins as a pre-authentication reflected XSS on the login screen and can be chained to PHP code execution when a logged-in administrator is successfully targeted. WordPress fixed the issue in 7.0.3 and backported the fix through maintained branches. <strong>Imperva Cloud WAF and On-Prem WAF customers are protected against this vulnerability. </strong></em></p>
<p><span data-contrast="auto">On August 6, 2026, WordPress released </span><a href="https://wordpress.org/news/2026/08/wordpress-7-0-3-release/" target="_blank" rel="noopener"><span data-contrast="none">version 7.0.3</span></a><span data-contrast="auto"> with security fixes that include a pre-authentication reflected cross-site scripting vulnerability on the login screen with the potential to lead to PHP code execution. The issue is tracked as </span><a href="https://nvd.nist.gov/vuln/detail/CVE-2026-64638" target="_blank" rel="noopener"><span data-contrast="none">CVE-2026-64638</span></a><span data-contrast="auto"> and is rated High severity with a CVSS score of 8.9. </span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:120,&quot;335559740&quot;:259}"> </span></p>
<h2><b><span data-contrast="none">About XSS2Shell</span></b><span data-ccp-props="{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;201341983&quot;:0,&quot;335559738&quot;:300,&quot;335559739&quot;:120,&quot;335559740&quot;:259}"> </span></h2>
<p><span data-contrast="auto">The vulnerability starts on the WordPress login page. When a login attempt uses an invalid username, WordPress includes that value in an error message returned to the browser. The </span><a href="https://pwn.ai/blog/xss2shell" target="_blank" rel="noopener"><span data-contrast="none">security researchers</span></a><span data-contrast="auto"> found that the value is processed by multiple HTML sanitization components that do not interpret certain malformed markup in exactly the same way. </span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:120,&quot;335559740&quot;:259}"> </span></p>
<p><span data-contrast="auto">That parser disagreement can allow attacker-controlled HTML elements to survive the first sanitization step and later become active elements in the browser. On its own, this is not yet JavaScript execution, but the researchers showed how the injected elements can interact with JavaScript that WordPress already loads on the login page. </span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:120,&quot;335559740&quot;:259}"> </span></p>
<p><span data-contrast="auto">The result is </span><a href="https://github.com/WordPress/wordpress-develop/security/advisories/GHSA-52p2-r8wf-jcrf" target="_blank" rel="noopener"><span data-contrast="none">reflected XSS</span></a><span data-contrast="auto"> in the security context of the affected WordPress site, without the attacker first needing a WordPress account. </span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:120,&quot;335559740&quot;:259}"> </span></p>
<h2><b><span data-contrast="none">From Reflected XSS to Server Compromise</span></b><span data-ccp-props="{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;201341983&quot;:0,&quot;335559738&quot;:300,&quot;335559739&quot;:120,&quot;335559740&quot;:259}"> </span></h2>
<p><span data-contrast="auto">The significance of XSS2Shell comes from the way several otherwise legitimate browser and WordPress features can be chained together. The researchers demonstrated that the XSS primitive can be used to trigger same-origin requests and interact with WordPress REST functionality. Against a logged-in administrator, the chain can then reach privileged WordPress capabilities and ultimately lead to PHP code execution on the server. </span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:120,&quot;335559740&quot;:259}"> </span></p>
<p><b><span data-contrast="auto">At a high level, the chain is: </span></b><span data-contrast="auto">unauthenticated malicious input -&gt; reflected XSS on the WordPress login page -&gt; JavaScript execution in the WordPress origin -&gt; abuse of a logged-in administrator session -&gt; privileged WordPress actions -&gt; PHP code execution.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:120,&quot;335559740&quot;:259}"> </span></p>
<p><span data-contrast="auto">An important distinction is that CVE-2026-64638 should not be described as a zero-interaction unauthenticated RCE. The official WordPress advisory states that escalation to RCE requires successful social engineering and explicit interaction by the target victim. In practice, the full chain targets a user who is already authenticated with sufficient WordPress privileges. </span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:120,&quot;335559740&quot;:259}"> </span></p>
<h2><b><span data-contrast="none">Why This Vulnerability Matters</span></b><span data-ccp-props="{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;201341983&quot;:0,&quot;335559738&quot;:300,&quot;335559739&quot;:120,&quot;335559740&quot;:259}"> </span></h2>
<p><b><span data-contrast="auto">It is in WordPress Core. </span></b><span data-contrast="auto">The vulnerable behavior is part of WordPress itself rather than a third-party plugin or theme. </span><b><span data-contrast="auto">No attacker account is required for the initial XSS. </span></b><span data-contrast="auto">The vulnerability is reachable pre-authentication from the login screen. </span><b><span data-contrast="auto">It demonstrates the risk of exploit chaining. </span></b><span data-contrast="auto">What begins as a parsing inconsistency becomes significantly more serious when combined with browser behavior, WordPress JavaScript, REST functionality, and administrator capabilities. </span><b><span data-contrast="auto">The potential impact is high. </span></b><span data-contrast="auto">If the complete chain succeeds, an attacker can reach server-side PHP code execution, affecting confidentiality, integrity, and availability. </span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559685&quot;:360,&quot;335559739&quot;:120,&quot;335559740&quot;:259,&quot;335559991&quot;:360}"> </span></p>
<h2><b><span data-contrast="none">Affected WordPress Versions and Patch</span></b><span data-ccp-props="{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;201341983&quot;:0,&quot;335559738&quot;:300,&quot;335559739&quot;:120,&quot;335559740&quot;:259}"> </span></h2>
<p><span data-contrast="auto">WordPress states that the issue affects all versions of WordPress. Version 7.0.3 contains the fix, and WordPress has backported the security change through branches eligible for security fixes, currently down to the 4.7 branch. The corresponding patched releases include 6.9.6, 6.8.7, 6.7.6 and equivalent maintenance releases for older supported branches. </span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:120,&quot;335559740&quot;:259}"> </span></p>
<p><b><span data-contrast="auto">WordPress recommends that sites update immediately. </span></b><span data-contrast="auto">Sites that support automatic background updates will begin receiving the security release automatically, but administrators should verify that the update completed successfully.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:120,&quot;335559740&quot;:259}"> </span></p>
<h2><b><span data-contrast="none">How Imperva Protects Customers</span></b><span data-ccp-props="{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;201341983&quot;:0,&quot;335559738&quot;:300,&quot;335559739&quot;:120,&quot;335559740&quot;:259}"> </span></h2>
<p><span data-contrast="auto">Imperva’s AI-powered security engine is designed to help protect customers against the next generation of AI-assisted attacks. </span><span data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559685&quot;:0,&quot;335559737&quot;:0,&quot;335559738&quot;:0,&quot;335559739&quot;:120,&quot;335559740&quot;:259}"> </span></p>
<p><span data-contrast="auto">Rather than relying solely on known payloads or static signatures, Imperva uses strict protocol validation, behavioral analysis, anomaly detection, and continuous threat intelligence to detect and mitigate zero-day attacks and previously unseen malicious traffic patterns. This layered approach enables Imperva to respond rapidly when attackers or AI-driven research tools uncover novel techniques or new emerging threats, helping ensure customers remain protected even as zero-day discovery and exploitation become increasingly automated and fast-moving.</span><span data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559685&quot;:0,&quot;335559737&quot;:0,&quot;335559738&quot;:0,&quot;335559739&quot;:120,&quot;335559740&quot;:259}"> </span></p>
<p><span data-contrast="auto">Imperva has since observed widespread activity targeting more than 11,000 distinct websites across 67 countries. Hundred thousands of requests were already recorded indicating broad, highly automated targeting rather than isolated attempts against a small number of organizations. More than 95% of the tools associated with this activity were written in Go, while over 75% of targeted websites were in the United States. Gaming was the most frequently targeted industry, accounting for 32% of observed sites, followed by education at 26% and financial services at 24%.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:120,&quot;335559740&quot;:259}"> </span></p>
<p><img class="lazyload alignnone size-full wp-image-21204 lazyload" alt="Screenshot 2026 08 10 at 11.10.59 AM" width="1820" height="1052" data-src="https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/Screenshot-2026-08-10-at-11.10.59-AM.png" srcset="https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/Screenshot-2026-08-10-at-11.10.59-AM.png 1820w, https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/Screenshot-2026-08-10-at-11.10.59-AM-300x173.png 300w, https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/Screenshot-2026-08-10-at-11.10.59-AM-1024x592.png 1024w, https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/Screenshot-2026-08-10-at-11.10.59-AM-768x444.png 768w, https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/Screenshot-2026-08-10-at-11.10.59-AM-1536x888.png 1536w" sizes="(max-width: 1820px) 100vw, 1820px" /></p>
<p><img class="lazyload alignnone size-full wp-image-21205 lazyload" alt="Screenshot 2026 08 10 at 11.11.05 AM" width="1820" height="1052" data-src="https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/Screenshot-2026-08-10-at-11.11.05-AM.png" srcset="https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/Screenshot-2026-08-10-at-11.11.05-AM.png 1820w, https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/Screenshot-2026-08-10-at-11.11.05-AM-300x173.png 300w, https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/Screenshot-2026-08-10-at-11.11.05-AM-1024x592.png 1024w, https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/Screenshot-2026-08-10-at-11.11.05-AM-768x444.png 768w, https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/Screenshot-2026-08-10-at-11.11.05-AM-1536x888.png 1536w" sizes="(max-width: 1820px) 100vw, 1820px" /></p>
<h2><b><span data-contrast="none">Recommended Actions</span></b><span data-ccp-props="{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;201341983&quot;:0,&quot;335559738&quot;:300,&quot;335559739&quot;:120,&quot;335559740&quot;:259}"> </span></h2>
<p><b><span data-contrast="auto">Update WordPress immediately. </span></b><span data-contrast="auto">Sites on the 7.0 branch should update to WordPress 7.0.3 or later. Organizations on older maintained branches should install the corresponding patched maintenance release. </span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559685&quot;:360,&quot;335559739&quot;:120,&quot;335559740&quot;:259,&quot;469777462&quot;:[360],&quot;469777927&quot;:[0],&quot;469777928&quot;:[8]}"> </span></p>
<p><b><span data-contrast="auto">Verify automatic security updates. </span></b><span data-contrast="auto">Do not assume the patch was applied successfully; confirm the running WordPress version on production systems.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559685&quot;:360,&quot;335559739&quot;:120,&quot;335559740&quot;:259,&quot;469777462&quot;:[360],&quot;469777927&quot;:[0],&quot;469777928&quot;:[8]}"> </span></p>
<p><b><span data-contrast="auto">Keep Imperva protections current. </span></b><span data-contrast="auto">Cloud WAF customers receive managed security-rule updates. On-Prem WAF customers should maintain current product and security-content updates in accordance with Imperva guidance.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559685&quot;:360,&quot;335559739&quot;:120,&quot;335559740&quot;:259,&quot;469777462&quot;:[360],&quot;469777927&quot;:[0],&quot;469777928&quot;:[8]}"> </span></p>
<p><b><span data-contrast="auto">Review privileged accounts and credentials. </span></b><span data-contrast="auto">Investigate unexpected administrator changes, application credentials, plugin installations, or other privileged actions on systems that remained vulnerable after disclosure.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559685&quot;:360,&quot;335559739&quot;:120,&quot;335559740&quot;:259,&quot;469777462&quot;:[360],&quot;469777927&quot;:[0],&quot;469777928&quot;:[8]}"> </span></p>
<p><b><span data-contrast="auto">Reduce administrator exposure to untrusted content. </span></b><span data-contrast="auto">The full RCE chain requires interaction by a target victim, so administrators should avoid opening untrusted links while authenticated to sensitive WordPress environments.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559685&quot;:360,&quot;335559739&quot;:120,&quot;335559740&quot;:259,&quot;469777462&quot;:[360],&quot;469777927&quot;:[0],&quot;469777928&quot;:[8]}"> </span></p>
<h2><b><span data-contrast="none">AI-Assisted Vulnerability Discovery</span></b><span data-ccp-props="{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;201341983&quot;:0,&quot;335559738&quot;:300,&quot;335559739&quot;:120,&quot;335559740&quot;:259}"> </span></h2>
<p><span data-contrast="auto">XSS2Shell is also notable because of how the complete chain was developed. The security researchers state that they’ve used open-source AI models and a multi-agent research workflow, starting from earlier Same Origin Method Execution (SOME) research, and that the system took nearly four days to build the full chain. </span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:120,&quot;335559740&quot;:259}"> </span></p>
<p><span data-contrast="auto">The finding illustrates how AI-assisted security research can connect subtle behaviors across multiple layers of a complex application. For defenders, it reinforces the value of layered controls that can stop an exploit chain at more than one stage instead of relying only on a vulnerability-specific patch.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:120,&quot;335559740&quot;:259}"> </span></p>
<h2><b><span data-contrast="none">Bottom Line</span></b><span data-ccp-props="{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;201341983&quot;:0,&quot;335559738&quot;:300,&quot;335559739&quot;:120,&quot;335559740&quot;:259}"> </span></h2>
<p><span data-contrast="auto">CVE-2026-64638, or XSS2Shell, shows how a subtle parsing inconsistency in a widely deployed platform can become far more serious when chained with legitimate browser and application functionality. WordPress has released fixes, and administrators should patch immediately. </span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:120,&quot;335559740&quot;:259}"> </span></p>
<p><b><span data-contrast="auto">Imperva Cloud WAF and On-Prem WAF customers are protected against exploitation attempts associated with CVE-2026-64638. </span></b><span data-contrast="auto">Existing XSS and application-security protections block the malicious input used to initiate the attack chain, and Imperva has further fortified mitigation after reviewing the newly disclosed techniques.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:120,&quot;335559740&quot;:259}"> </span></p>
<p>The post <a href="https://www.imperva.com/blog/imperva-customers-protected-against-xss2shell-cve-2026-64638-in-wordpress-core/">Imperva Customers Protected Against XSS2Shell (CVE-2026-64638) in WordPress Core</a> appeared first on <a href="https://www.imperva.com/blog">Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.imperva.com/blog/imperva-customers-protected-against-xss2shell-cve-2026-64638-in-wordpress-core/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>What SecureIQLab Cloud WAAP 5.0 means for your application security</title>
		<link>https://www.imperva.com/blog/what-secureiqlab-cloud-waap-5-0-means-for-your-application-security/</link>
					<comments>https://www.imperva.com/blog/what-secureiqlab-cloud-waap-5-0-means-for-your-application-security/#respond</comments>
		
		<dc:creator><![CDATA[Tim Chang]]></dc:creator>
		<pubDate>Sun, 09 Aug 2026 09:50:54 +0000</pubDate>
				<category><![CDATA[Application Security]]></category>
		<guid isPermaLink="false">https://www.imperva.com/blog/?p=21192</guid>

					<description><![CDATA[<p>You cannot verify a vendor’s security claims from their own datasheet, including ours. That is why independent validation matters. In our recent guide to the best WAAP solutions (Best WAAP Solutions 2026: Enterprise Buyer Guide), we argued that every serious shortlist should include independent third-party testing across both web and API threats. SecureIQ Lab’s Cloud [&#8230;]</p>
<p>The post <a href="https://www.imperva.com/blog/what-secureiqlab-cloud-waap-5-0-means-for-your-application-security/">What SecureIQLab Cloud WAAP 5.0 means for your application security</a> appeared first on <a href="https://www.imperva.com/blog">Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>You cannot verify a vendor’s security claims from their own datasheet, including ours. That is why independent validation matters. In our recent guide to the <em>best WAAP solutions</em> (<a href="https://www.imperva.com/blog/best-waap-solutions/">Best WAAP Solutions 2026: Enterprise Buyer Guide</a>), we argued that every serious shortlist should include independent third-party testing across both web and API threats. SecureIQ Lab’s Cloud WAAP v5.0 CyberRisk Validation, published this week, delivers exactly that: twelve leading cloud WAAP platforms, 1,608 attack scenarios, and 1,487 false-positive traps, all run under identical, adversarial conditions, with every vendor’s results published in full.</p>
<p>This blog is the follow up to that buyer guide and explains what the new report says and how to read any benchmark.</p>
<p><img data-src="https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/secureiqlab-scatter-chart.png" alt="secureiqlab scatter chart" width="982" height="913" class="lazyload aligncenter size-full wp-image-21200 lazyload" srcset="https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/secureiqlab-scatter-chart.png 982w, https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/secureiqlab-scatter-chart-300x279.png 300w, https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/secureiqlab-scatter-chart-768x714.png 768w" sizes="(max-width: 982px) 100vw, 982px" /></p>
<h2>Balancing security efficacy and false positives</h2>
<p>A high security-efficacy score, on its own, is easy. Tune any WAF aggressively enough and it will stop every attack, along with a meaningful share of your customers. That is the trap: security efficacy and false positives pull against each other, and false positives are never a rounding error.</p>
<p>Every legitimate transaction blocked is lost revenue, an abandoned cart, a support ticket, a SOC triage, another tuning cycle, and operational cost on top of the license. At scale, teams respond to false-positive pain by loosening policies or dropping rules into detect-only mode. The efficacy number you thought you were buying quietly disappears in production.</p>
<p>The genuinely hard engineering problem, the one that determines your real protection and your real total cost of ownership, is holding maximum efficacy and near-zero false positives at the same time.</p>
<p>That is the equation to grade this report on. Imperva WAF and API Security was placed in the Leader category with a perfect 100% Complete Security Score, the only perfect score of the twelve vendors, across every tested category: all OWASP web test cases, all ten OWASP API categories on all five protocols, every bot, AI-assisted bot, and Layer 7 DoS scenario, every evasion vector, and the full vulnerability assessment.</p>
<p>Against 1,452 legitimate-transaction test cases mixed into live traffic, Imperva achieved that balance of maximum efficacy and zero false positives. No other vendor in the field held a perfect score on both sides of the equation. This evaluation validated protection you do not have to trade away to keep your customers moving.</p>
<h2>API security matters: Imperva scored 20% above average</h2>
<p>Most vendors now score well on classic web attacks. The OWASP WAF group average was 89.96%, and five vendors scored 99.5% or better. APIs are a different story. Across the OWASP API Security Top 10, tested over five protocols, published scores ranged from 45.5% to 100%, around a group average of 80.3%.</p>
<p>Imperva scored 100% on every API category and every protocol tested, including WebSockets, where the twelve-vendor group averaged just 48%. If your evaluation shortlist is driven by web-attack demos, the API results are where you should spend more time. That was one of the main recommendations in the WAAP buyer guide, and the new numbers reinforce it.</p>
<h2>New in 5.0: AI security and compliance</h2>
<p>The 5.0 methodology adds AI application security: 35 attack scenarios aligned with OWASP LLM01 (Prompt Injection) and LLM05 (Improper Output Handling), scored independently of the headline results. Here is the honest reading: nine of the twelve vendors, Imperva included, scored 100% on that attack set. Runtime LLM attack-blocking is already table stakes.</p>
<p>Where the field separates is operating AI protection at enterprise scale. SecureIQ Lab’s GenAI &amp; LLM Operational Efficiency rating looks at the ability to deploy, govern, and observe AI protections in production. Scores ranged from 0% to 100%, around a 73% group average. Imperva was one of five vendors rated 100%.</p>
<p>The second new dimension is compliance. SecureIQ Lab ran a five-layer assessment across regulatory, data-protection, audit, governance, and AI frameworks (NIST, ISO/IEC 27001 and 42001, PCI DSS, GDPR, HIPAA, and more). Imperva’s 87% was the highest score of all twelve vendors, against a 63.95% group average, including 100% on the AI security layer.</p>
<p>If your security purchases have to survive an audit committee, which is true for most enterprises, this is the part of the report to share with your GRC team.</p>
<p><strong>In summary:</strong></p>
<ul>
<li><strong>100% OWASP LLM score:</strong> Imperva blocked all tested LLM01 and LLM05 attack scenarios.</li>
<li><strong>Zero LLM false positives:</strong> legitimate AI interactions in the LLM test set were not blocked.</li>
<li><strong>100% GenAI &amp; LLM Operational Efficiency:</strong> Imperva scored 100% versus a <strong>73% group average</strong>.</li>
<li><strong>Operational readiness matters:</strong> the rating reflects capabilities such as vulnerability coverage, sensitive data protection, full-stack LLM observability, SDK-based guardrail integration, and system-prompt-based context guardrails.</li>
</ul>
<p>AI protection cannot stop at attack blocking. As organizations bring LLM-backed applications into production, they also need visibility, guardrails, integration, and governance that teams can operate day to day.</p>
<p>Imperva’s AI results show both sides of that equation: tested protection against key LLM threats and validated operational readiness to help enterprises adopt AI more securely and manageably.</p>
<h2>WAAP Operational Efficiency in Real Life</h2>
<p>Operational efficiency determines how practical a WAAP will be for real-world application teams.</p>
<p>In the SecureIQ Lab Cloud WAAP 5.0 validation, Imperva achieved a 98.8% WAAP Operational Efficiency rating, outperforming the 94.1% group average while also delivering perfect security efficacy and 100% false positive avoidance.</p>
<p>That combination matters because modern security teams are not only judged by whether they stop attacks, but by whether they can do so without slowing deployments, creating unnecessary tuning work, or interrupting legitimate business traffic.</p>
<p>The nine operational security categories tested were:</p>
<ol>
<li>Ease of deployment</li>
<li>Ease of management</li>
<li>Ease of risk management</li>
<li>Logging &amp; auditing capabilities</li>
<li>Visibility &amp; analytics</li>
<li>Support &amp; documentation</li>
<li>API Gateway efficiency</li>
<li>Integration capabilities</li>
<li>Geolocation based security features</li>
</ol>
<p>Imperva scored 98.8% against a 94.1% group average, with perfect scores in every category except API Gateway Efficiency (94.4%), where JWT validation has been identified as an improvement opportunity.</p>
<p>The operational results show strength across the day-to-day capabilities that determine whether a WAAP can be run confidently at an enterprise scale.</p>
<p>Imperva was rated 100% in ease of deployment, ease of management, ease of risk management, logging and auditing, visibility and analytics, support and documentation, integration capabilities, and geolocation-based security features.</p>
<p>These categories translate directly into practitioner outcomes: faster setup, simpler policy reuse, stronger role and user management, clearer threat analytics, easier SIEM and SOAR integration, more flexible logging, and better tools for reducing false-positive risk.</p>
<p>The only operational category below 100% was API Gateway Efficiency, where Imperva scored 94.4% against a roughly 95% group average, with JWT validation identified as an area for improvement.</p>
<p>The takeaway for buyers: operational efficiency is not a secondary metric. A WAAP that is difficult to deploy, difficult to tune, or noisy in production becomes an operational burden even if its detection rates look strong.</p>
<p>Imperva’s results show that protection can be both highly effective and highly manageable — giving security, application, and platform teams independent validation that they can strengthen defenses without adding unnecessary friction to the business.</p>
<h2>In summary: Four rules for reading any WAAP benchmark</h2>
<ul>
<li>Read efficacy and false positives as one result, not two separate ones. A perfect block rate with a high false-positive rate does not deliver security. That combination is an outage generator with a dashboard, and its real-world efficacy will be tuned away within a quarter.</li>
<li>Go to the API results before the web results. Web scores tend to cluster near the top across the industry; API scores are where architecture differences show up.</li>
<li>Check which deployment model was tested. A SaaS cloud service and a self-managed virtual appliance are different operational propositions; the report calls out the model for each vendor.</li>
<li>Ask every shortlisted vendor for their current published results, and for the categories where they did not lead. A vendor who cannot name one has not read their own report or needs to check their points.</li>
</ul>
<p>The <a href="/resources/resource-library/reports/secureiqlab-cloud-waap-cyberrisk-validation-report/">full report and methodology</a> are public.</p>
<p>If you are still shaping a shortlist or building evaluation criteria, go back to the earlier <em>Best WAAP solutions</em> blog, <a href="https://www.imperva.com/blog/best-waap-solutions/">Best WAAP Solutions 2026: Enterprise Buyer Guide</a>. It is a practical playbook for what to look for in WAAP architecture, operations, and economics. SecureIQ Lab’s Cloud WAAP 5.0 results now give you independently validated numbers to plug into that playbook.</p>
<p style="font-size: 12px;">Source for all figures: <a href="/resources/resource-library/reports/secureiqlab-cloud-waap-cyberrisk-validation-report/">SecureIQ Lab Cloud WAAP CyberRisk Validation v5.0, 2026 (AMTSO-certified)</a>. Placements and competitor scores from the published comparative report.</p>
<p>The post <a href="https://www.imperva.com/blog/what-secureiqlab-cloud-waap-5-0-means-for-your-application-security/">What SecureIQLab Cloud WAAP 5.0 means for your application security</a> appeared first on <a href="https://www.imperva.com/blog">Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.imperva.com/blog/what-secureiqlab-cloud-waap-5-0-means-for-your-application-security/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<enclosure type="image/jpg" url="https://www.imperva.com/blog/wp-content/uploads/sites/9/2025/05/server-room.jpg" length="845" />	</item>
		<item>
		<title>Why Generative AI Needs a New Kind of Security</title>
		<link>https://www.imperva.com/blog/generative-ai-security-why-ai-needs-a-new-kind-of-security/</link>
					<comments>https://www.imperva.com/blog/generative-ai-security-why-ai-needs-a-new-kind-of-security/#respond</comments>
		
		<dc:creator><![CDATA[Michael Wright]]></dc:creator>
		<pubDate>Sun, 09 Aug 2026 07:59:59 +0000</pubDate>
				<category><![CDATA[Application Security]]></category>
		<guid isPermaLink="false">https://www.imperva.com/blog/?p=21175</guid>

					<description><![CDATA[<p>There is a moment every CISO is having right now, often without warning. A developer shows a working internal demo of an AI assistant trained on the company&#8217;s own documents. The product team is already planning a customer-facing version. The board has signed off on the budget. And somewhere in the middle of the meeting, [&#8230;]</p>
<p>The post <a href="https://www.imperva.com/blog/generative-ai-security-why-ai-needs-a-new-kind-of-security/">Why Generative AI Needs a New Kind of Security</a> appeared first on <a href="https://www.imperva.com/blog">Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>There is a moment every CISO is having right now, often without warning. A developer shows a working internal demo of an AI assistant trained on the company&#8217;s own documents. The product team is already planning a customer-facing version. The board has signed off on the budget. And somewhere in the middle of the meeting, a quiet question lands: what is securing this?</p>
<p>The honest answer, for most organizations today, is &#8220;nothing your existing stack was designed to do.&#8221;</p>
<p>This is not a critique of the security tools enterprises have spent years deploying. WAFs, EDRs, network firewalls, API gateways, identity platforms; these have evolved into a layered defense that genuinely works against the threats they were built for. But GenAI applications introduce a new attack surface that operates outside the boundary every one of those tools defends.</p>
<p>The problem is not that AI threats are more dangerous than traditional threats. The problem is that they are categorically different.</p>
<h2>What is generative AI security?</h2
Generative AI security is the practice of protecting LLM- and GenAI-powered applications at the AI interaction layer: the prompts going in, the model responses coming out, the conversation context in between, and the data and tools the model can reach. It is distinct from traditional application security because the attack payload is natural language, not a malformed request.



<h2>Why the old security playbook doesn&#8217;t cover generative AI?</h2>
<p>Traditional security tools all share a common assumption: attacks come in the form of malformed inputs, malicious payloads, suspicious traffic patterns, or unauthorized access attempts. A WAF inspects HTTP headers, query strings, and request bodies for known patterns. An EDR watches for binaries behaving badly. An API gateway enforces schema and authentication.</p>
<p>An LLM-based application turns all of those assumptions on their head.</p>
<p>The payload in a prompt injection attack is grammatically correct English. The malicious code in a data leakage attack is a polite question. The denial of service pattern in an unbounded consumption attack is a perfectly legitimate looking conversation. The threats that matter to a GenAI application live at the level of the model&#8217;s logic, not at the level of the network or the HTTP request.</p>
<p>Even more critically, the security tools that protect the application surrounding the model have no visibility into what happens at the interface. The WAF sees the request to your AI endpoint. It does not see what the model does with that request. The API gateway authenticates the user. It does not understand whether the user is trying to convince the model to reveal its system prompt.</p>
<p>This is the gap that has emerged across enterprise security architectures over the last 18 months. It is not a minor blind spot. It is a category-level gap. Traditional security tools do not speak AI.</p>
<h2>What AI-native security actually means?</h2>
<p>When we talk about AI-native security at Imperva, we are not talking about adding AI features to a traditional security product. We are talking about a purpose-built control plane that understands prompts, model responses, conversation context, and usage patterns the way our WAF understands HTTP.</p>
<p>That distinction matters because AI security has to inspect the interaction itself. It has to understand what the user is asking for, how the model is likely to respond, whether sensitive data is being exposed, whether instructions are being manipulated, and whether usage patterns suggest abuse. This is inspection at the AI interaction layer rather than the network layer.</p>
<p><a href="/products/ai-application-security/">Thales’s Imperva AI Application Security</a> is engineered specifically for the architecture of AI and agentic applications. It sits between your applications and the models they call, giving teams flexible deployment options rather than forcing a single architecture. Every input and every output is analyzed in real time, against multiple security guardrails, with adaptive risk scoring that distinguishes legitimate use from manipulation attempts.</p>
<p>Concretely, it addresses five of the <a href="https://genai.owasp.org/llm-top-10/" target="_blank">OWASP Top 10 LLM threats</a>:</p>
<ul>
<li>Prompt injection and jailbreaking attempts</li>
<li>Sensitive information disclosure through model outputs</li>
<li>System prompt leakage</li>
<li>Improper output handling</li>
<li>Unbounded consumption attacks that drive cost runaway and denial of service</li>
</ul>
<p>And critically, it does not replace your existing WAAP. It extends it. AI Application Security plugs into the same unified Imperva platform that handles your WAF, API security, bot management, and DDoS protection. The same console, the same policy model, the same role-based access controls </p>
<p>The AI threat surface becomes one more dimension of the security posture your team already manages, rather than a new tool, a new vendor, and a new operational silo.</p>
<h2>What generative AI security means for the next 12 months?</h2>
<p>According to McKinsey&#8217;s State of AI survey (November 2025), 88% of organizations now use AI in at least one business function, up from 78% a year earlier. And in the 2026 Thales Data Threat Report, 61% of organizations named AI as their top data security risk, while the share carrying a dedicated AI security budget rose from 20% to 30%. As organizations move from simple chat experiences toward autonomous agents capable of taking actions, the need for AI-specific security controls becomes even more critical. The teams that get this right will not be the ones who deploy more security tools. They will be the ones who recognize that AI applications are a new class of asset and treat them with a control layer designed for what they actually are.</p>
<p>A WAF was the answer when applications moved from desktop to web. An API gateway was the answer when monoliths gave way to microservices. An AI Application Security layer is the answer for applications that no longer execute only predictable code, but interpret, generate, and increasingly act on language.</p>
<p>That is the new kind of security your AI deserves.</p>
<h2>Frequently asked questions about generative AI security</h2>
<h3>What is the difference between AI security and generative AI security?</h3>
<p>AI security is the broad category, covering everything from model theft to training-data poisoning. Generative AI security is the runtime subset: protecting live LLM and agentic applications from prompt injection, sensitive data disclosure, system prompt leakage, improper output handling and unbounded consumption.</p>
<h3>Can a WAF stop prompt injection?</h3>
<p>No. A WAF inspects HTTP headers, query strings and request bodies for known malicious patterns. A prompt injection payload is grammatically valid English inside a legitimate request, so it passes every WAF check. Stopping it requires inspection at the AI interaction layer, which is what an AI application security layer adds alongside the WAF.</p>
<h3>Do I need to replace my existing security stack to secure AI?</h3>
<p>No. AI application security extends the stack rather than replacing it. Imperva AI Application Security plugs into the same platform as the WAF, API security, bot management and DDoS protection, using the same console, policy model and role-based access controls.</p>
<h3>Which OWASP LLM Top 10 risks does Imperva AI Application Security address?</h3>
<p>Five of the ten out of the box: prompt injection and jailbreaking, sensitive information disclosure, system prompt leakage, improper output handling, and unbounded consumption.</p>
<h3>Is generative AI security different for AI agents?</h3>
<p>Yes. Agents take actions rather than only returning text, so a successful manipulation becomes an operational incident rather than a bad answer. See the companion post on agentic AI security below.</p>
<p>Ready to see what AI-native security looks like in practice? Talk to your <a href="https://www.imperva.com/contact-us/">Thales representative</a> or visit imperva.com to explore <a href="https://www.imperva.com/products/ai-application-security/">AI Application Security</a>.</p>
<p>The post <a href="https://www.imperva.com/blog/generative-ai-security-why-ai-needs-a-new-kind-of-security/">Why Generative AI Needs a New Kind of Security</a> appeared first on <a href="https://www.imperva.com/blog">Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.imperva.com/blog/generative-ai-security-why-ai-needs-a-new-kind-of-security/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<enclosure type="image/jpg" url="https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/blog-hero-banner.png" length="845" />	</item>
		<item>
		<title>ShadowAI-Watch: Bringing AI Agent Activity Out of the Shadows</title>
		<link>https://www.imperva.com/blog/shadowai-watch-bringing-ai-agent-activity-out-of-the-shadows/</link>
					<comments>https://www.imperva.com/blog/shadowai-watch-bringing-ai-agent-activity-out-of-the-shadows/#respond</comments>
		
		<dc:creator><![CDATA[Sarit Yerushalmi]]></dc:creator>
		<pubDate>Sun, 09 Aug 2026 02:22:33 +0000</pubDate>
				<category><![CDATA[Imperva Threat Research]]></category>
		<guid isPermaLink="false">https://www.imperva.com/blog/?p=21162</guid>

					<description><![CDATA[<p>AI agents are rapidly becoming part of everyday development. They operate inside terminals, IDEs, and internal workflows, helping users write code, troubleshoot problems, and automate repetitive tasks. But their capabilities can extend far beyond what users see in the chat interface or terminal output. Agents may read files, execute commands, launch subprocesses, access credentials, call external tools, and transmit data to [&#8230;]</p>
<p>The post <a href="https://www.imperva.com/blog/shadowai-watch-bringing-ai-agent-activity-out-of-the-shadows/">ShadowAI-Watch: Bringing AI Agent Activity Out of the Shadows</a> appeared first on <a href="https://www.imperva.com/blog">Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><span data-contrast="auto">AI agents are rapidly becoming part of everyday development. They operate inside terminals, IDEs, and internal workflows, helping users write code, troubleshoot problems, and automate repetitive tasks. But their capabilities can extend far beyond what users see in the chat interface or terminal output. Agents may read files, execute commands, launch subprocesses, access credentials, call external tools, and transmit data to large language model providers. </span><span data-ccp-props="{&quot;335559738&quot;:240,&quot;335559739&quot;:240}"> </span></p>
<p><span data-contrast="auto">The conversation that the user sees may therefore represent only a small part of what the agent is actually doing. Many of its actions take place quietly in the background, without being clearly presented to the user or the security team.</span><span data-ccp-props="{&quot;335559738&quot;:240,&quot;335559739&quot;:240}"> </span></p>
<p><span data-contrast="auto">This creates a significant visibility challenge for security teams. Organizations may not know which AI-powered applications are active on developer machines, what those applications are doing, or whether their behavior aligns with company policies. </span><span data-ccp-props="{&quot;335559738&quot;:240,&quot;335559739&quot;:240}"> </span></p>
<p><span data-contrast="auto">An agent does not need to be malicious to create risk. While trying to complete a task, it may interpret instructions too broadly and access information the user did not intend to expose or perform actions that extend beyond the original request.</span><span data-ccp-props="{&quot;335559738&quot;:240,&quot;335559739&quot;:240}"> </span></p>
<h2><span data-contrast="none">The Endpoint Visibility Gap</span><span data-ccp-props="{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;335559738&quot;:160,&quot;335559739&quot;:80}"> </span></h2>
<p><span data-contrast="auto">Traditional endpoint security controls may capture individual parts of an agent’s activity without revealing their significance. An IDE or terminal process accessing a sensitive file, such as an .env file, may appear to be routine development activity. But if the process is controlled by an AI agent that has already communicated with an LLM provider, the same event has a very different security meaning. The developer may not have chosen to open the file at all. The agent may have accessed it autonomously while trying to complete a task. </span><span data-ccp-props="{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;335559738&quot;:160,&quot;335559739&quot;:80}"> </span></p>
<p><span data-contrast="auto">Without connecting these events to the agent responsible for them, security teams may interpret autonomous agent behavior as ordinary user activity. This challenge is amplified by the fact that AI capabilities are not limited to a fixed set of recognizable applications. Traditional security controls can often map, classify, or restrict known software, but almost any Python script, IDE extension, command-line tool, or internal application can gain agentic capabilities by connecting to an LLM and acting on its responses. This makes application-based detection difficult. Blocking the underlying application or interpreter is usually not practical because the same software is also used for legitimate work. </span><span data-ccp-props="{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;335559738&quot;:160,&quot;335559739&quot;:80}"> </span></p>
<p><span data-contrast="auto">As a result, application-based allowlists and blocklists cannot provide sufficient visibility or control on their own. </span><span data-ccp-props="{&quot;335559738&quot;:240,&quot;335559739&quot;:240}"> </span></p>
<p><span data-contrast="auto">The real challenge is therefore not just detecting a process, file access event, command execution, or network connection. It’s determining whether that activity was initiated by the developer or autonomously by an AI agent.</span><span data-ccp-props="{&quot;335559738&quot;:240,&quot;335559739&quot;:240}"> </span></p>
<h2><span data-contrast="none">From AI Discovery to Behavioral Understanding</span><span data-ccp-props="{}"> </span></h2>
<p><span data-contrast="auto">Identifying an AI-enabled process is only the first step. Security teams must also understand how its behavior develops throughout the session.</span><span data-ccp-props="{&quot;335559738&quot;:240,&quot;335559739&quot;:240}"> </span></p>
<p><span data-contrast="auto">After receiving instructions or model output, an agent may create child processes, execute shell commands, inspect local files, access sensitive directories, or initiate additional network connections. The sequence of these actions can reveal how the agent interpreted its task and whether its behavior moved beyond what the user expected.</span><span data-ccp-props="{&quot;335559738&quot;:240,&quot;335559739&quot;:240}"> </span></p>
<p><span data-contrast="auto">This behavioral context becomes especially important during an investigation. A single command, file access event, or outbound connection may appear legitimate when viewed alone. When these events are connected chronologically, however, they may reveal a very different story: the agent encountered new input, changed its behavior, accessed a sensitive resource, and then attempted to communicate with an external destination.</span><span data-ccp-props="{&quot;335559738&quot;:240,&quot;335559739&quot;:240}"> </span></p>
<p><span data-contrast="auto">The goal is not only to identify that an AI agent was active, but to reconstruct its activity and understand the relationship between the agent, its subprocesses, the resources it accessed, and the destinations it contacted.</span></p>
<h2><span data-contrast="none">Introducing ShadowAI-Watch</span><span data-ccp-props="{}"> </span></h2>
<p><span data-contrast="auto">This is why we created </span><b><span data-contrast="auto">ShadowAI-Watch</span></b><span data-contrast="auto">, an open-source runtime discovery and behavioral monitoring tool for AI-powered applications and agents.</span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">ShadowAI-Watch runs independently on the user’s machine and does not require changes to the monitored application. It provides a host-level view of AI agent activity by correlating processes with outbound LLM connections and tracing the actions that follow.</span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">The tool is designed to identify custom AI agents, coding agents, browser agents, LLM-powered applications, and locally hosted models, including applications that may not have an obvious AI-related process name.</span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">ShadowAI-Watch supports multiple privilege levels, ranging from a low-privileged user to full administrative access. With limited privileges, it inspects process information available through /proc to discover agentic applications. With elevated privileges, it enables its full eBPF-based monitoring mechanism, providing deeper and more precise visibility into process and system activity.</span><span data-ccp-props="{}"> </span></p>
<h2><span data-contrast="none">ShadowAI-Watch Workflow</span><span data-ccp-props="{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;335559738&quot;:240,&quot;335559739&quot;:240}"> </span></h2>
<p><span data-contrast="auto">ShadowAI-Watch runs locally on the user’s machine and continuously monitors outbound network activity across running processes. When a process connects to a known large language model provider, the tool identifies it as AI-related and traces the process tree to determine which application initiated the connection.</span><span data-ccp-props="{&quot;335559738&quot;:240,&quot;335559739&quot;:240}"> </span></p>
<p><span data-contrast="auto">It then continues observing the session and correlates subsequent commands, child processes, file access, and network activity with the identified application. </span><span data-ccp-props="{&quot;335559738&quot;:240,&quot;335559739&quot;:240}"> </span></p>
<p><span data-contrast="auto">Together, these events create a chronological record of the agent’s runtime activity and the sequence that led to each action.</span><span data-ccp-props="{&quot;335559738&quot;:240,&quot;335559739&quot;:240}"> </span></p>
<p><span data-contrast="auto">These events are written to a JSON Lines audit file and displayed live in the terminal using color-coded output. The audit data can also be sent to a remote dashboard for visualization and risk analysis. This gives security teams both immediate visibility while the agent is operating and a structured audit trail that can be examined after the session.</span><span data-ccp-props="{&quot;335559738&quot;:240,&quot;335559739&quot;:240}"> </span></p>
<p><span data-contrast="auto">The released repository includes the components responsible for generating logs and structured audit records. Organizations can use this data to build their own dashboards, monitoring workflows, or integrations based on their specific requirements.</span><span data-ccp-props="{&quot;335559738&quot;:240,&quot;335559739&quot;:240}"> </span></p>
<p><img class="lazyload alignnone size-full wp-image-21171 lazyload" alt="shadowai complete 9sec" width="960" height="540" data-src="https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/shadowai_complete_9sec.gif" /></p>
<p style="text-align: center"><em>ShadowAI-Watch workflow </em></p>
<h2><span data-contrast="none">Watching a Browser Agent Get Hijacked</span><span data-ccp-props="{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559740&quot;:240}"> </span></h2>
<p><span data-contrast="auto">The demo begins with a simple request: summarize a website by opening a URL and following the links it contains.</span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">To the user, this looks like an ordinary browsing task. The BrowserUse agent opens the site, moves between pages, and gathers the information it needs. In the background, ShadowAI-Watch discovers the agent, identifies it as BrowserUse, and begins tracing its activity in real time.</span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">At first, everything proceeds as expected.</span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">Then the agent reaches a page containing an instruction that did not come from the user. It was placed there by an attacker and attempts to convince the agent to open an external URL and transmit session data to an attacker-controlled endpoint.</span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">The agent follows the instruction.</span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">From the developer’s perspective, the agent still appears to be navigating the website as requested. The malicious request is hidden within the normal browsing flow and could easily go unnoticed.</span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">ShadowAI-Watch sees a different story.</span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">It sees the agent reach the page containing the indirect prompt injection. It then observes the agent’s behavior change and detects its attempt to connect to a destination unrelated to the original task. Instead of treating the request as isolated browser traffic, ShadowAI-Watch links it to the active BrowserUse session and to the attacker-controlled content that preceded it.</span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">What appeared to be routine browsing is revealed as an agent hijacking sequence: a legitimate task, exposure to a malicious instruction, a change in behavior, and an attempted transmission of sensitive data.</span><span data-ccp-props="{}"> </span></p>
<p><span data-contrast="auto">The video below shows that sequence unfolding in real time, from the discovery of the BrowserUse agent to the detection of the malicious outbound connection.</span><span data-ccp-props="{}"> </span></p>
<div style="width: 1920px;" class="wp-video"><video class="wp-video-shortcode" id="video-21162-3" width="1920" height="360" preload="metadata" controls="controls"><source type="video/mp4" src="https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/ShadowAI_Watch_Real-Time_Agent_Security_Browser-Use_demo_sarit_voice.mp4?_=3" /><a href="https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/ShadowAI_Watch_Real-Time_Agent_Security_Browser-Use_demo_sarit_voice.mp4">https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/ShadowAI_Watch_Real-Time_Agent_Security_Browser-Use_demo_sarit_voice.mp4</a></video></div>
<h2><span data-contrast="none">See ShadowAI-Watch at DEF CON 34</span><span data-ccp-props="{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;335559738&quot;:160,&quot;335559739&quot;:80}"> </span></h2>
<p><span data-contrast="auto">Our team will present ShadowAI-Watch in the AppSec Village Arsenal at DEF CON 34 during the session, “The Agent Asked. We Allowed. Now What?”</span><span data-ccp-props="{&quot;335559738&quot;:240,&quot;335559739&quot;:240}"> </span></p>
<p><img class="lazyload alignnone size-full wp-image-21166 lazyload" alt="IMG 7765 1" width="1092" height="569" data-src="https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/IMG_7765-1.png" srcset="https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/IMG_7765-1.png 1092w, https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/IMG_7765-1-300x156.png 300w, https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/IMG_7765-1-1024x534.png 1024w, https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/IMG_7765-1-768x400.png 768w" sizes="(max-width: 1092px) 100vw, 1092px" /></p>
<p><span class="TextRun SCXW147863477 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="auto"><span class="NormalTextRun SCXW147863477 BCX0">ShadowAI</span><span class="NormalTextRun SCXW147863477 BCX0">-Watch is available as an open-source project</span><span class="NormalTextRun SCXW147863477 BCX0"> for Linux, with </span><span class="NormalTextRun SCXW147863477 BCX0">m</span><span class="NormalTextRun SCXW147863477 BCX0">ac</span><span class="NormalTextRun SCXW147863477 BCX0">OS</span><span class="NormalTextRun SCXW147863477 BCX0"> </span><span class="NormalTextRun SCXW147863477 BCX0">support coming soon</span><span class="NormalTextRun SCXW147863477 BCX0">. Access the repository and learn how to get started here:</span></span><span class="TextRun MacChromeBold SCXW147863477 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="auto"><span class="NormalTextRun SCXW147863477 BCX0"> </span><a href="https://github.com/ThalesGroup/shadowai-watch" target="_blank" rel="noopener"><span class="NormalTextRun SCXW147863477 BCX0">https://github.com/ThalesGroup/shadowai-watch</span></a></span><span class="EOP Selected SCXW147863477 BCX0" data-ccp-props="{&quot;335559738&quot;:240,&quot;335559739&quot;:240}"> </span></p>
<p>The post <a href="https://www.imperva.com/blog/shadowai-watch-bringing-ai-agent-activity-out-of-the-shadows/">ShadowAI-Watch: Bringing AI Agent Activity Out of the Shadows</a> appeared first on <a href="https://www.imperva.com/blog">Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.imperva.com/blog/shadowai-watch-bringing-ai-agent-activity-out-of-the-shadows/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<enclosure type="image/jpg" url="https://www.imperva.com/blog/wp-content/uploads/sites/9/2026/08/ChatGPT-Image-Aug-8-2026-08_45_57-AM.png" length="1672" />	</item>
		<item>
		<title>Imperva Customers Protected Against Novel HTTP Desync Attacks</title>
		<link>https://www.imperva.com/blog/imperva-customers-protected-against-novel-http-desync-attacks/</link>
					<comments>https://www.imperva.com/blog/imperva-customers-protected-against-novel-http-desync-attacks/#respond</comments>
		
		<dc:creator><![CDATA[Or Gozlan]]></dc:creator>
		<pubDate>Fri, 07 Aug 2026 18:17:47 +0000</pubDate>
				<category><![CDATA[Imperva Threat Research]]></category>
		<guid isPermaLink="false">https://www.imperva.com/blog/?p=21157</guid>

					<description><![CDATA[<p>TL;DR: Recent Portswigger research introduced novel HTTP desync techniques discovered through an AI-assisted research system called the HTTP Terminator. The findings expand the range of unusual HTTP behaviors that can cause front-end and back-end systems to interpret the same traffic differently. Imperva Cloud WAF and On-Prem WAF customers are protected against practical attack patterns described in the research. Imperva’s existing security engine already blocked malicious [&#8230;]</p>
<p>The post <a href="https://www.imperva.com/blog/imperva-customers-protected-against-novel-http-desync-attacks/">Imperva Customers Protected Against Novel HTTP Desync Attacks</a> appeared first on <a href="https://www.imperva.com/blog">Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><em><b>TL;DR: </b>Recent <a href="https://portswigger.net/research/http-terminator" target="_blank" rel="noopener">Portswigger research</a> introduced novel HTTP desync techniques discovered through an AI-assisted research system called the HTTP Terminator. The findings expand the range of unusual HTTP behaviors that can cause front-end and back-end systems to interpret the same traffic differently. <b>Imperva Cloud WAF and On-Prem WAF customers are protected against practical attack patterns described in the research.</b> Imperva’s existing security engine already blocked malicious and ambiguous requests associated with desync attacks, and Imperva has further fortified the mitigation after reviewing the new techniques. </em></p>
<h2><b><span data-contrast="none">Understanding HTTP Desync Attacks</span></b><span data-ccp-props="{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;201341983&quot;:0,&quot;335559738&quot;:320,&quot;335559739&quot;:140,&quot;335559740&quot;:269}"> </span></h2>
<p><span data-contrast="none">Modern web applications rarely receive requests directly from users. Traffic commonly passes through several components, such as a CDN, load balancer, reverse proxy, or WAF, before reaching the application server.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:271}"> </span></p>
<p><span data-contrast="none">An HTTP desync vulnerability occurs when two of these components disagree about where one request ends and the next begins. A front-end system may treat a sequence of data as one complete request, while the back-end interprets part of the same data as the beginning of another request. This parsing difference can allow an attacker to smuggle traffic past front-end security controls.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:271}"> </span></p>
<p><span data-contrast="none">Depending on the affected architecture, successful exploitation can lead to security-control bypasses, cache poisoning, access to restricted functionality, or response queue poisoning. In a response queue poisoning attack, a response intended for one user may be delivered to another, potentially exposing sensitive information.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:271}"> </span></p>
<p><span data-contrast="none">HTTP/1.1 is </span><a href="https://portswigger.net/research/http1-must-die" target="_blank" rel="noopener"><span data-contrast="none">particularly exposed</span></a><span data-contrast="none"> to this class of problem because request boundaries can be represented in multiple ways, and products do not always handle malformed or unusual combinations consistently.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:271}"> </span></p>
<h2><b><span data-contrast="none">What’s HTTP Terminator?</span></b><span data-ccp-props="{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;201341983&quot;:0,&quot;335559738&quot;:320,&quot;335559739&quot;:140,&quot;335559740&quot;:269}"> </span></h2>
<p><span data-contrast="none">The HTTP Terminator is an autonomous research system designed to generate, evaluate, and refine potential protocol attacks. Using small fragments of protocol specifications as inspiration, it generated about 30,000 unique desync vectors in testing and evaluated them against websites where testing was authorized through vulnerability disclosure or bug bounty programs.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:271}"> </span></p>
<p><span data-contrast="none">The research ultimately demonstrated many novel desync triggers, one new desync pattern, and one new weaponization technique. It also introduced Shared-Parser Confusion, a broader attack concept that may extend beyond request smuggling.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:271}"> </span></p>
<h3><b><span data-contrast="none">New and Unexpected Desync Triggers</span></b><span data-ccp-props="{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;201341983&quot;:0,&quot;335559738&quot;:240,&quot;335559739&quot;:100,&quot;335559740&quot;:269}"> </span></h3>
<p><span data-contrast="none">Traditional request-smuggling testing often focuses on conflicts involving the Content-Length and Transfer-Encoding headers. The new research shows that parsing differences can also be triggered by less obvious HTTP features, including unusual request methods, unexpected method-and-body combinations, uncommon transfer encodings, duplicate headers, and content types normally associated with responses.</span><span data-contrast="none"> </span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:271}"> </span></p>
<p><span data-contrast="none">One notable example involved the multipart/byteranges content type. According to the </span><span data-contrast="none">research</span><span data-contrast="none">, this behavior affected more than 200 websites in the authorized target set and appeared across multiple server implementations. The lesson for defenders is clear: protection cannot rely only on a short list of well-known request-smuggling payloads.</span><span data-contrast="none"> </span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:271}"> </span></p>
<h3><b><span data-contrast="none">Dual Matching Content-Length Headers</span></b><span data-ccp-props="{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;201341983&quot;:0,&quot;335559738&quot;:240,&quot;335559739&quot;:100,&quot;335559740&quot;:269}"> </span></h3>
<p><span data-contrast="none">Security controls commonly look for requests containing conflicting Content-Length values. The research showed that some systems can also behave unexpectedly when a request contains two matching Content-Length headers. Although the values appear consistent, components in the request chain may still process the duplicate headers differently and disagree about whether the request has a body or where it ends.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:271}"> </span></p>
<p><span data-contrast="none">This pattern was exploitable in real deployments, including an environment where response queue poisoning exposed a long-lived API key. The underlying issue was later linked to a server misconfiguration.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:271}"> </span></p>
<h3><b><span data-contrast="none">The Dangling-Byte Technique</span></b><span data-ccp-props="{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;201341983&quot;:0,&quot;335559738&quot;:240,&quot;335559739&quot;:100,&quot;335559740&quot;:269}"> </span></h3>
<p><span data-contrast="none">Response queue poisoning has often been unreliable because the front end may notice an unexpected extra response and close the connection before the attack succeeds. The dangling-byte technique improves reliability by sending an incomplete smuggled request that is missing one byte. The next legitimate request supplies that byte, completing the attacker’s request only after the victim’s traffic arrives.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:271}"> </span></p>
<p><span data-contrast="none">In the tested scenarios, this removed a significant timing race and made response theft substantially more reliable on affected architectures.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:271}"> </span></p>
<h3><b><span data-contrast="none">Shared-Parser Confusion</span></b><span data-ccp-props="{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;201341983&quot;:0,&quot;335559738&quot;:240,&quot;335559739&quot;:100,&quot;335559740&quot;:269}"> </span></h3>
<p><span data-contrast="none">The research also introduced Shared-Parser Confusion. Some implementations reuse parsing logic for both HTTP requests and HTTP responses. As a result, functionality intended for processing responses may accidentally be activated by attacker-controlled data inside a request.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:271}"> </span></p>
<p><span data-contrast="none">This expands the potential attack surface beyond ordinary request-processing behavior. Response-specific headers, content types, and parser rules may also influence how a malicious request is interpreted. </span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:271}"> </span></p>
<h2><b><span data-contrast="none">How Imperva Protects Customers</span></b><span data-ccp-props="{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;201341983&quot;:0,&quot;335559738&quot;:320,&quot;335559739&quot;:140,&quot;335559740&quot;:269}"> </span></h2>
<p><span data-contrast="none">Imperva&#8217;s AI powered security engine is designed to help protect customers against the next generation of AI-assisted attacks, including systems like HTTP Terminator that can generate and test large volumes of novel protocol variations. Rather than relying only on known payloads or static signatures, Imperva combines strict protocol validation, behavioral analysis, anomaly detection, and continuous threat intelligence to identify malicious or ambiguous traffic patterns at scale. This approach allows Imperva to respond quickly when attackers or AI-driven research tools uncover new ways to abuse protocol edge cases, helping ensure that customers remain protected even as attack discovery becomes more automated and faster-moving.</span></p>
<p><span data-contrast="none">Imperva&#8217;s protection against HTTP desync attacks does not depend on one vulnerability-specific signature. Cloud WAF and On-Prem WAF use dedicated security rules and protocol-validation controls designed to identify malformed, conflicting</span><span data-contrast="none">, and ambiguous HTTP requests before they reach protected applications.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:140,&quot;335559740&quot;:269}"> </span></p>
<p><span data-contrast="none">These protections cover behavior commonly associated with desync and request-smuggling attacks, including:</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:140,&quot;335559740&quot;:269}"> </span></p>
<ul>
<li data-leveltext="" data-font="Symbol" data-listid="10" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:360,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;singleLevel&quot;}" data-aria-posinset="1" data-aria-level="1"><span data-contrast="none">Invalid or ambiguous HTTP message framing</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:100,&quot;335559740&quot;:259}"> </span></li>
<li data-leveltext="" data-font="Symbol" data-listid="10" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:360,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;singleLevel&quot;}" data-aria-posinset="1" data-aria-level="1"><span data-contrast="none">Redundant, duplicated, or conflicting request headers</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:100,&quot;335559740&quot;:259}"> </span></li>
<li data-leveltext="" data-font="Symbol" data-listid="10" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:360,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;singleLevel&quot;}" data-aria-posinset="1" data-aria-level="1"><span data-contrast="none">Malformed protocol elements and abnormal request structure</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:100,&quot;335559740&quot;:259}"> </span></li>
<li data-leveltext="" data-font="Symbol" data-listid="10" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:360,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;singleLevel&quot;}" data-aria-posinset="1" data-aria-level="1"><span data-contrast="none">Suspicious combinations of methods, headers, and message bodies</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:100,&quot;335559740&quot;:259}"> </span></li>
<li data-leveltext="" data-font="Symbol" data-listid="10" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:360,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;singleLevel&quot;}" data-aria-posinset="1" data-aria-level="1"><span data-contrast="none">Attempts to embed an additional HTTP request within an existing request</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:100,&quot;335559740&quot;:259}"> </span></li>
<li data-leveltext="" data-font="Symbol" data-listid="10" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559685&quot;:360,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;singleLevel&quot;}" data-aria-posinset="1" data-aria-level="1"><span data-contrast="none">Known request-smuggling and response queue poisoning patterns</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:100,&quot;335559740&quot;:259}"> </span></li>
</ul>
<p><span data-contrast="none">Imperva’s analysis determined that existing protections were already blocking the primary practical attack patterns described in the HTTP Terminator research. Following a detailed review of the newly published vectors, Imperva also fortified its mitigation to provide additional coverage for the newly documented parsing variations.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:271}"> </span></p>
<p><span data-contrast="none">Imperva telemetry shows that these protections are actively blocking real-world exploitation attempts, especially using desync techniques. Observed POST bodies include payloads characteristic of the HTTP Smuggler Burp Suite extension, with embedded or malformed request lines, randomized paths, and synthetic headers intended to reveal parsing discrepancies between front-end and back-end systems. Examples of blocked payloads include:</span><span data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;201341983&quot;:0,&quot;335557856&quot;:16777215,&quot;335559738&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:269}"> </span></p>
<pre><span data-contrast="none">TRACE /?x=yz HTTP/1.1</span> 
<span data-contrast="none">TRACE / HTTP/1.1 X-YzBqv: =</span> 
<span data-contrast="none">GET / HTTP/2.2 X-YzBqv:</span> 
<span data-contrast="none">TRACE /wrtzllsk1005516x1x6 HTTP/1.1</span> 
<span data-contrast="none">GET /tRmNtR1g00ir3d HTTP/1.1</span><span data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;201341983&quot;:0,&quot;335557856&quot;:16777215,&quot;335559738&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:269}"> </span></pre>
<p><span data-contrast="none">These requests are not normal application traffic. They are crafted probes designed to test whether components in an HTTP request chain disagree about request boundaries or interpret an embedded request differently. Imperva blocked these attempts before they reached protected applications, demonstrating that the threat is already being explored in the wild and that existing desync protections are providing practical coverage.</span><span data-ccp-props="{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;201341983&quot;:0,&quot;335557856&quot;:16777215,&quot;335559738&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:269}"> </span></p>
<p><strong>Cloud WAF customers receive managed protection updates as part of the service. On-Prem WAF customers should enable dedicated available controls such as Response Forking &#8211; HTTP Desync policy (if not enabled) to mitigate these attacks. </strong></p>
<h2><b><span data-contrast="none">Recommended Best Practices</span></b><span data-ccp-props="{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;201341983&quot;:0,&quot;335559738&quot;:320,&quot;335559739&quot;:140,&quot;335559740&quot;:269}"> </span></h2>
<p><span data-contrast="none">Imperva provides protection against the practical attack techniques described in the research, but organizations should also reduce the underlying risk within their application delivery architecture.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:271}"> </span></p>
<ol>
<li data-leveltext="%1." data-font="" data-listid="5" data-list-defn-props="{&quot;335552541&quot;:0,&quot;335559685&quot;:360,&quot;335559991&quot;:360,&quot;469769242&quot;:[65533,0],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;%1.&quot;,&quot;469777815&quot;:&quot;singleLevel&quot;}" data-aria-posinset="1" data-aria-level="1"><b><span data-contrast="none">Keep infrastructure components updated. </span></b><span data-contrast="none">Apply vendor patches to web servers, reverse proxies, application delivery controllers, API gateways, CDNs, and load balancers.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:100,&quot;335559740&quot;:259}"> </span></li>
<li data-leveltext="%1." data-font="" data-listid="5" data-list-defn-props="{&quot;335552541&quot;:0,&quot;335559685&quot;:360,&quot;335559991&quot;:360,&quot;469769242&quot;:[65533,0],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;%1.&quot;,&quot;469777815&quot;:&quot;singleLevel&quot;}" data-aria-posinset="1" data-aria-level="1"><b><span data-contrast="none">Reject ambiguous HTTP requests. </span></b><span data-contrast="none">Do not forward requests containing duplicate framing headers, invalid transfer encodings, or malformed protocol syntax to backend systems.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:100,&quot;335559740&quot;:259}"> </span></li>
<li data-leveltext="%1." data-font="" data-listid="5" data-list-defn-props="{&quot;335552541&quot;:0,&quot;335559685&quot;:360,&quot;335559991&quot;:360,&quot;469769242&quot;:[65533,0],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;%1.&quot;,&quot;469777815&quot;:&quot;singleLevel&quot;}" data-aria-posinset="1" data-aria-level="1"><b><span data-contrast="none">Restrict unnecessary HTTP methods. </span></b><span data-contrast="none">Allow only the methods required by the application, and define which methods may legitimately contain a request body.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:100,&quot;335559740&quot;:259}"> </span></li>
<li data-leveltext="%1." data-font="" data-listid="5" data-list-defn-props="{&quot;335552541&quot;:0,&quot;335559685&quot;:360,&quot;335559991&quot;:360,&quot;469769242&quot;:[65533,0],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;%1.&quot;,&quot;469777815&quot;:&quot;singleLevel&quot;}" data-aria-posinset="1" data-aria-level="1"><b><span data-contrast="none">Prefer HTTP/2 or newer protocols upstream.</span></b><span data-contrast="none"> Imperva Cloud WAF allows clients-to-WAF HTTP/2 support and also WAF-to-origin server HTTP/2 support.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:100,&quot;335559740&quot;:259}"> </span></li>
</ol>
<p><span data-contrast="none"> </span><span data-contrast="none">On Prem WAF also supports HTTP/2 traffic inspection.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559685&quot;:360,&quot;335559739&quot;:100,&quot;335559740&quot;:259,&quot;335559991&quot;:360}"> </span></p>
<h2><b><span data-contrast="none">Conclusion</span></b><span data-ccp-props="{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;201341983&quot;:0,&quot;335559738&quot;:320,&quot;335559739&quot;:140,&quot;335559740&quot;:269}"> </span></h2>
<p><span data-contrast="none">The HTTP Terminator research demonstrates both the continuing security challenges of HTTP/1.1 and the growing ability of AI-assisted systems to discover unexpected protocol behavior at scale.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:271}"> </span></p>
<p><span data-contrast="none">It also highlights why defense against HTTP desync attacks must be based on strict protocol validation and broad behavioral coverage, not only signatures for previously published payloads.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:271}"> </span></p>
<p><b><span data-contrast="none">Imperva Cloud WAF and WAF Gateway customers are protected against the practical desync techniques described in the research. </span></b><span data-contrast="none">Existing dedicated security rules were already blocking the associated malicious request patterns, and Imperva has further fortified these protections in response to the newly published findings.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:271}"> </span></p>
<p><span data-contrast="none">Imperva Threat Research will continue monitoring this area and emerging HTTP parsing techniques to protect customers as the threat landscape evolves.</span><span data-ccp-props="{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:271}"> </span></p>
<p>The post <a href="https://www.imperva.com/blog/imperva-customers-protected-against-novel-http-desync-attacks/">Imperva Customers Protected Against Novel HTTP Desync Attacks</a> appeared first on <a href="https://www.imperva.com/blog">Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.imperva.com/blog/imperva-customers-protected-against-novel-http-desync-attacks/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Agentic AI Security: The Chatbot Era Is Already Over</title>
		<link>https://www.imperva.com/blog/agentic-ai-security-the-chatbot-era-is-over/</link>
					<comments>https://www.imperva.com/blog/agentic-ai-security-the-chatbot-era-is-over/#respond</comments>
		
		<dc:creator><![CDATA[Michael Wright]]></dc:creator>
		<pubDate>Wed, 05 Aug 2026 12:32:41 +0000</pubDate>
				<category><![CDATA[Application Security]]></category>
		<guid isPermaLink="false">https://www.imperva.com/blog/?p=21149</guid>

					<description><![CDATA[<p>There is a diagram most security teams still carry in their heads when they think about AI. A user talks to a chatbot. The chatbot talks to a large language model. The model talks back. Put an inspection point in the middle, and the problem is solved. That diagram was accurate for about eighteen months. [&#8230;]</p>
<p>The post <a href="https://www.imperva.com/blog/agentic-ai-security-the-chatbot-era-is-over/">Agentic AI Security: The Chatbot Era Is Already Over</a> appeared first on <a href="https://www.imperva.com/blog">Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>There is a diagram most security teams still carry in their heads when they think about AI. A user talks to a chatbot. The chatbot talks to a large language model. The model talks back. Put an inspection point in the middle, and the problem is solved.</p>
<p>That diagram was accurate for about eighteen months. It is not accurate anymore.</p>
<p>Look inside a modern AI application and the chatbot is the least interesting thing in it. There are agents living inside the application, making decisions and calling functions without a human typing anything. There are MCP servers sitting outside the application, connecting models to real systems and live data. There are tools (scripts, APIs, plugins) that the model can invoke, retrieved documents flowing into context windows, and orchestration layers deciding which agent hands work to which. The application is no longer app-plus-LLM. It is an ecosystem.</p>
<h2>What is agentic AI security?</h2>
<p>Agentic AI security is the practice of securing AI applications that take actions, not just applications that answer questions. It covers the whole AI execution path: the agents making decisions, the tools and APIs they invoke, the MCP servers connecting them to live systems, the documents retrieved into context, and the orchestration layer routing work between agents. Prompt inspection alone covers only the first hop.</p>
<p>That matters for one uncomfortable reason: security architectures inherit their assumptions from the diagrams they were designed against. If your AI protection assumes a single conversation crossing a single boundary, it is defending an architecture nobody runs anymore.</p>
<h2>What changed in the AI attack surface</h2>
<p>Three things, in quick succession.</p>
<p>First, agents started taking actions. A chatbot that gives a wrong answer is embarrassing. An agent that acts on a manipulated instruction is an operational incident. It can query a database, call an API, or trigger a workflow before any human notices. The blast radius of a successful prompt injection grew from “bad reply” to “bad transaction.”</p>
<p>Second, the Model Context Protocol and similar tool-integration patterns arrived. MCP is useful: a standard bridge between AI assistants and real systems. It is also, by definition, an expansion of the attack surface. Every tool a model can reach is something an attacker can try to reach through the model. We unpack those exposures in detail in MCP Server Security: The Blind Spot in Your AI Stack (https://www.imperva.com/blog/mcp-server-security-blind-spot-ai-stack/).</p>
<p>Third, the interactions multiplied. It is no longer one train rolling through one tunnel, one prompt in and one response out. It is internal communication between sub-agents, external calls to MCP servers, retrieval from knowledge stores: traffic that never touches the chat window at all.</p>
<h2>The honest question: would you know what your agents just did?</h2>
<p>The challenge isn&#8217;t simply preventing prompt injection attacks anymore. It&#8217;s understanding everything the application is capable of doing.</p>
<p>So here is the question worth asking your team this week: if an agent inside one of your applications called a tool it had never called before, would anyone know?</p>
<p>For most organizations, the honest answer is no. Not because the security team is behind, but because the visibility layer for this architecture is only now being built. You cannot govern what you cannot see, and most of what modern AI applications do is currently unseen.</p>
<p>That is where AI application security is heading as a discipline: away from inspecting a single conversation, toward securing the entire AI execution path: discovering every AI asset in the environment, understanding how agents, models, and tools actually relate to each other, and enforcing policy on the interactions that matter.</p>
<p>The chatbot era gave us a clean diagram and a comforting inspection point. The agent era gives us an ecosystem. Security is moving with it. The teams that update their mental diagram first will be the ones that are not surprised later.</p>
<h2>Frequently asked questions about agentic AI security</h2>
<p><strong>What is the difference between LLM security and agentic AI security?</strong></p>
<p>LLM security protects the conversation: what goes into the model and what comes back out. Agentic AI security protects what happens next &#8211; the tools the agent calls, the systems it reaches through MCP, the data it retrieves, and the handoffs between agents. The blast radius of a successful attack grows from a bad reply to a bad transaction.</p>
<p><strong>Why isn&#8217;t prompt inspection enough for AI agents?</strong></p>
<p>Because most agentic traffic never touches the chat window. Sub-agent communication, MCP tool calls and retrieval from knowledge stores all happen behind the prompt. An inspection point placed on the user conversation sees none of it.</p>
<p><strong>What are the main agentic AI security risks?</strong></p>
<p>The OWASP Top 10 for Agentic Applications (2026) names agent goal hijack, tool misuse and exploitation, identity and privilege abuse, agentic supply chain vulnerabilities, unexpected code execution, memory and context poisoning, insecure inter-agent communication, cascading failures, human-agent trust exploitation, and rogue agents.</p>
<p><strong>How do you get visibility into what AI agents are doing?</strong></p>
<p>Start with discovery: inventory every AI asset in the environment &#8211; models, agents, tools and MCP servers &#8211; then map how they relate to each other, then enforce policy on the interactions that matter. You cannot govern what you cannot see.</p>
<p><strong>Does Imperva secure AI agents and MCP servers?</strong></p>
<p>Imperva AI Application Security protects LLM-backed applications today. Thales announced the AI Security Fabric in December 2025, with an MCP security gateway and end-to-end runtime access control for agentic AI interactions on the 2026 roadmap.</p>
<p><em>Thales’s Imperva AI Application Security protects the AI powering your business applications, from LLM-backed chatbots to agents, RAG pipelines, and MCP-connected tools. Thales announced the AI Security Fabric in December 2025, adding an MCP security gateway and runtime access control for agentic AI interactions to the 2026 roadmap. See how it works <a href="https://www.imperva.com/products/ai-application-security/">here</a> or read more in our white paper: Beyond the LLM Top 10 (Coming Soon)</em></p>
<p>The post <a href="https://www.imperva.com/blog/agentic-ai-security-the-chatbot-era-is-over/">Agentic AI Security: The Chatbot Era Is Already Over</a> appeared first on <a href="https://www.imperva.com/blog">Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.imperva.com/blog/agentic-ai-security-the-chatbot-era-is-over/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<enclosure type="image/jpg" url="https://www.imperva.com/blog/wp-content/uploads/sites/9/2021/06/Bad-Bot-Mitigation-e1623177945782.png" length="845" />	</item>
		<item>
		<title>MCP Server Security: The Blind Spot in Your AI Stack</title>
		<link>https://www.imperva.com/blog/mcp-server-security-blind-spot-ai-stack/</link>
					<comments>https://www.imperva.com/blog/mcp-server-security-blind-spot-ai-stack/#respond</comments>
		
		<dc:creator><![CDATA[Lynel Dsouza]]></dc:creator>
		<pubDate>Thu, 30 Jul 2026 12:53:20 +0000</pubDate>
				<category><![CDATA[Application Security]]></category>
		<guid isPermaLink="false">https://www.imperva.com/blog/?p=21142</guid>

					<description><![CDATA[<p>Short version: an MCP server is the tooling layer that lets an AI agent act on external systems. Hosted remotely, it is an API endpoint like any other — and it needs bot and WAF controls in front of it, API security on its own endpoints, and AI guardrails that inspect what the tools send [&#8230;]</p>
<p>The post <a href="https://www.imperva.com/blog/mcp-server-security-blind-spot-ai-stack/">MCP Server Security: The Blind Spot in Your AI Stack</a> appeared first on <a href="https://www.imperva.com/blog">Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Short version: an MCP server is the tooling layer that lets an AI agent act on external systems. Hosted remotely, it is an API endpoint like any other — and it needs bot and WAF controls in front of it, API security on its own endpoints, and AI guardrails that inspect what the tools send back, not just what the user types in.</p>
<p>Not since the dot-com boom in the late 1990s has the world seen a more highly talked-about and sought-after tech revolution. Artificial Intelligence has entered every aspect of our lives – from building large scalable applications to your Monday morning Macchiato. </p>
<p>With this spread of wildly varying use cases, one thing became abundantly clear. Large Language Models have isolated context, which is limited to the training data and the inputs provided by a user. To expand this knowledge, we need to provide AI Agents with appropriate tooling to retrieve such information. A curl tool to view a webpage, a directory listing tool to retrieve files from a folder, or a git CLI tool to commit changes to a repo. </p>
<p>Humans need tools as well. We don’t sift through HTML code, read JSON responses or query API endpoints via the command line. Rather we rely on well-thought-out and structured UX components – icons, text fields, buttons, and checkboxes – all of which are wired into various functions and APIs in the backend.</p>
<p>AI Agents, however? They rely on different types of tools. Given that every single one of the billions of websites and applications on the Internet today works and operates differently, these tools need to cater to them. Sites have been built on everything ranging from PHP and ASP to Node and Express. The question becomes – how can I ensure my agent reliably interacts with each of these sites? You could argue that these days, most applications expose a lot of their functionality via APIs. And you would be right. While AI Agents can easily consume these APIs, it involves a few different steps – </p>
<ul>
<li>read the API reference documentation</li>
<li>build a small handler to call this API, with appropriate context</li>
<li>build a small handler to parse the response</li>
</ul>
<p>All these steps, every single time. Every site, every application, requiring its own “code” built by the AI Agent. With limited context windows and larger thinking models, this can get out of hand quickly – both in terms of token count and time taken – for every single user prompt. </p>
<h2>What is an MCP Server?</h2>
<p>Enter the MCP Server. An MCP server is a standardized service that exposes a defined set of tools, resources and prompts to an AI agent over the Model Context Protocol, so the agent can act on an external system without hand-written glue code for every API. Developed by Anthropic, the Model Context Protocol was built as an open-source standard for connecting AI Applications to external systems. It was released in November 2024 and contributed to the Linux Foundation’s Agentic AI Foundation in December 2025; by that point more than 10,000 MCP servers had been published. In essence, providing the AI Agent the right tools and resources, for each of these applications, to help abstract away the complexity of each of these interactions. Think of it as a USB-C port for your AI Agent – one connector, and every application on the other side just works!<br />
What can MCP Servers allow your agent to do? The use cases are endless and constantly expanding every day – from searching and booking flights to reviewing stock prices and executing trades (this is not financial advice!). MCP Servers give your AI Agent the tools it needs to do more than just be your information chatbot. </p>
<h2>MCP Server Security Risks: Where the Exposure Actually Is</h2>
<p>But all this functionality exposes a glaringly obvious security blind spot. Who is protecting your MCP Server, which now has tools exposed to action any of these tasks? Who is governing what can be asked of your AI Agent which now has access to these tools? The security implications are massive.<br />
This is not theoretical. Imperva’s threat research team documented a <a href="https://www.imperva.com/blog/another-critical-rce-discovered-in-a-popular-mcp-server/">critical remote code execution flaw (CVE-2025-53967)</a> in the widely used Framelink Figma MCP server — an open-source project with more than 10,000 GitHub stars — and OWASP’s Gen AI Security Project published <a href="https://genai.owasp.org/resource/a-practical-guide-for-secure-mcp-server-development/" target="_blank">A Practical Guide for Secure MCP Server Development</a> in February 2026 because the same weaknesses keep recurring. The <a href="https://modelcontextprotocol.io/docs/2026-07-28/tutorials/security/security_best_practices" target="_blank">MCP specification’s</a> own security guidance now names token passthrough, session hijacking, the confused deputy problem and SSRF as first-class MCP risks.</p>
<h2>Local vs. remote MCP servers: two different risk profiles</h2>
<p>Now, not every MCP Server carries the same exposure. Plenty of them run locally – a process on your laptop, talking to your agent over stdio, never touching a network. The risk there is real, but it’s a different conversation: credentials sitting in a config file, and how much that server is allowed to reach on your behalf. The moment an MCP Server goes remote though – hosted, over HTTP, serving agents across the Internet – it stops being a local utility and becomes what it always really was underneath: an API endpoint. Exposed, authenticated, and waiting to be probed. That’s the one you can put controls in front of.<br />
This is where Thales’s focus has been for the past several months. For decades, Thales Imperva has been at the forefront of securing sites and applications, and with the evolution of applications and their users, we’ve enabled our solutions to cover these use cases and the complex threat landscape. </p>
<p>Automated traffic is the baseline condition here, not the exception. Imperva’s <a href="https://www.imperva.com/blog/bad-bot-report-2026-bots-agentic-age/">2026 Bad Bot Report</a> found that bots accounted for more than 53% of all web traffic in 2025, up from 51% the year before — and that 27% of bot attacks targeted API endpoints. A remote MCP server is an API endpoint, so it inherits that traffic profile the moment it goes live. Knowing <a href="https://www.imperva.com/blog/ai-bot-traffic-which-bots-to-trust/">which AI bots to allow and which to block</a> is the first control, not the last.<br />
The Thales Imperva <a href="https://www.imperva.com/products/web-application-firewall-waf/">Cloud WAF</a> and <a href="https://www.imperva.com/products/advanced-bot-protection-management/">Advanced Bot Protection</a> provide visibility into automated traffic heading towards the MCP Server, preventing generally malicious bot traffic and more exploitative OWASP Top 10 attack classes like command injection and SQL injection. </p>
<p>Thales Imperva <a href="https://www.imperva.com/products/api-security/">API Security</a> ensures your MCP Server has its own endpoints secured against everything from simple schema exploitation to complex business logic attacks. (For the wider picture of agents as API consumers, see API security for AI agents.)<br />
Finally, our AI Application Security puts in place guardrails that sit between the AI Agent and the model behind it, securing the workflow against LLM-specific attacks like <a href="https://www.imperva.com/learn/application-security/prompt-injection/">prompt injection</a>, system prompt leakage and jailbreak attempts. And critically for MCP – it inspects what comes back from the tools, not just what goes in. Today, most people worry about user prompts. Far fewer are watching the tool response. Because an instruction buried in a log entry or an incident description can quietly make its way into your Agent’s context and get read as a command rather than data. Your MCP Server is a perfect delivery mechanism for exactly that.</p>
<h2>Thales Imperva MCP Server for Cloud WAF</h2>
<p>At Thales, we have also been working on our own MCP Server behind the scenes.</p>
<p>What does this mean for you? Imagine a world where you no longer have to log into a console to analyze where last week’s attack traffic came from. No more manually putting together a monthly executive presentation on the state of your security posture. </p>
<p>The Thales Imperva MCP Server for Cloud WAF is in beta today, and for now, it’s read-only by design. Your agent can query, analyze and report across your estate. Need to see which sites have your “Block requests from South Africa” ACL policy enabled? Or what security rules are enabled for your production site? Just ask your Agent! No prior knowledge strictly necessary.</p>
<p>It’s open source and available on <a href="https://github.com/ThalesGroup/imperva-cloud-WAF-MCP-server" target="_blank">GitHub</a> – pull the container, add your API credentials, and point your agent at it. </p>
<p>Having trouble remembering regex for your custom rules? Or finding yourself constantly making individual site changes? Tell us! Beta feedback is what shapes where this goes.</p>
<h2>Frequently asked questions about MCP server security</h2>
<p><strong>What is MCP server security?</strong><br />
MCP server security is the set of controls that protect a Model Context Protocol server — and the AI agent calling it — from abuse. Because a remote MCP server is an authenticated HTTP endpoint that exposes tools capable of real actions, it needs the same protections as any production API, plus AI-specific guardrails on the prompts and tool responses flowing through it.</p>
<p><strong>What are the main MCP server security risks?</strong><br />
The recurring ones are prompt injection delivered through tool responses rather than user input, tool poisoning, over-broad OAuth scopes and token passthrough, session hijacking, SSRF during metadata discovery, the confused deputy problem in MCP proxy servers, and ordinary application flaws such as the command-injection RCE found in the Framelink Figma MCP server. Excessive tool permissions amplify all of them.</p>
<p><strong>Are local MCP servers safer than remote ones?</strong><br />
They carry a different risk profile, not a smaller one. A local MCP server talking to the agent over stdio never touches the network, so the exposure is credentials in a config file and how far that server can reach on your behalf. A remote MCP server served over HTTP is Internet-facing, which makes it probeable — and also makes it something you can put network and API controls in front of.</p>
<p><strong>Can a WAF protect an MCP server?</strong><br />
Yes, for the endpoint layer. Once an MCP server is remote it is an HTTP API, so a WAF and bot protection stop automated probing and injection-class attacks before they reach it, and API security covers schema abuse and business-logic attacks on its endpoints. What a WAF cannot do alone is judge intent inside the model workflow — that needs AI guardrails inspecting prompts and tool responses.</p>
<p><strong>What are MCP server security best practices?</strong><br />
Treat the server as a production API: authenticate every inbound request and never accept tokens that were not issued for your server, use least-privilege scopes and non-deterministic session IDs bound to the user, validate and allowlist outbound URLs, start read-only before enabling write operations, log every tool call, and inspect tool responses as untrusted input. OWASP&#8217;s secure MCP development guide and the MCP specification&#8217;s security best practices are the reference baselines.</p>
<h2>Secure your MCP server with Thales Imperva</h2>
<p>MCP is now an open standard under the Linux Foundation, and the number of exposed servers is only going up. The controls are the ones you already know — <a href="https://www.imperva.com/learn/application-security/web-application-and-api-protection-waap/">web application and API protection</a> in front of the endpoint, <a href="https://www.imperva.com/products/api-security/">API security</a> on its schemas and business logic, and <a href="https://www.imperva.com/products/ai-application-security/">AI application security</a> on the prompts and tool responses moving through it. See how Thales Imperva <a href="https://www.imperva.com/solutions/secure-applications-apis/">secures applications and APIs</a>, and try the read-only Cloud WAF MCP Server beta on GitHub.</p>
<p>The post <a href="https://www.imperva.com/blog/mcp-server-security-blind-spot-ai-stack/">MCP Server Security: The Blind Spot in Your AI Stack</a> appeared first on <a href="https://www.imperva.com/blog">Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.imperva.com/blog/mcp-server-security-blind-spot-ai-stack/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<enclosure type="image/jpg" url="https://www.imperva.com/blog/wp-content/uploads/sites/9/2023/10/shutterstock_1071270287-1.jpg" length="845" />	</item>
	</channel>
</rss>
