Rapid7 Cybersecurity Blog https://www.rapid7.com/ Feed generated for Rapid7 Cybersecurity Blog http://www.rssboard.org/rss-specification python-feedgen en Fri, 30 Oct 2026 05:51:32 +0000 Fri, 30 Oct 2026 05:51:32 +0000 60 Your Next Insider Threat Won’t be Human: Securing AI Agents From the Outside in https://www.rapid7.com/blog/post/ai-inhuman-insider-threats-securing-agents <img src="https://www.rapid7.com/cdn/images/blt0b0762ca94c50b0b/6846a711eac0e395093e52e3/AI.jpg" width="300" style="width:auto;height:auto;max-width:100%;max-height:450px;object-fit:contain;display:block;border-radius:4px;" loading="lazy" /><div class="blog-content" data-testid="content-widget"><div class="flex flex-col [&amp;_*+h2]:mt-[50px] [&amp;_h2]:mb-[18px] [&amp;_*+h3]:mt-[20px] [&amp;_h3]:mb-[12px] [&amp;_*+h4]:mt-[20px] [&amp;_h4]:mb-[12px] [&amp;_*+h5]:mt-[20px] [&amp;_h5]:mb-[12px] [&amp;_p:not(:last-child)]:mb-[12px] [&amp;_li:not(:last-child)]:mb-[12px] [&amp;_blockquote]:mt-[20px] [&amp;_blockquote]:mb-[20px] [&amp;_blockquote]:pt-[6px] [&amp;_blockquote]:pb-[6px] [&amp;_blockquote]:pl-[18px] [&amp;_blockquote]:text-[32px] [&amp;_blockquote]:border-l-[4px] [&amp;_blockquote]:border-[#D7D5D3] [&amp;_blockquote]:font-medium [&amp;_blockquote]:leading-[120%] [&amp;_pre]:my-[20px] [&amp;_pre&gt;code]:block [&amp;_pre&gt;code]:p-[16px] [&amp;_pre&gt;code]:rounded-[10px] [&amp;_pre&gt;code]:bg-code-block [&amp;_pre&gt;code]:text-code-block [&amp;_pre&gt;code]:overflow-x-auto hover:[&amp;_a]:decoration-primary-sinopia focus:[&amp;_a]:outline-dashed focus:[&amp;_a]:outline-[2px] focus:[&amp;_a]:outline-primary-sinopia visited:[&amp;_a]:text-primary-sinopia hover:[&amp;_a]:text-black-rich focus:[&amp;_a]:text-black-rich [&amp;_p]:text-gray-charcoal [&amp;_a]:text-gray-charcoal [&amp;_ul]:text-gray-charcoal [&amp;_ol]:text-gray-charcoal [&amp;_blockquote]:text-black-rich prose max-w-none"><p style="direction:ltr"><span style="font-size:undefined"><em>Why the controls on an AI agent have to live outside of it, and what a security operations team can do to implement and maintain those controls.</em></span></p><h2 id="the-new-privileged-user-in-your-environment" style="direction:ltr">The new privileged user in your environment</h2><p style="direction:ltr"><span style="font-size:undefined">Security teams spent two decades learning how to work with the people they trust most. Domain admins, DBAs, finance approvers and contractors with VPN access all get a mature playbook: verified identity, scoped access, logged activity and a fast way to revoke it all.</span></p><p style="direction:ltr"><span style="font-size:undefined">Today, we’re navigating the same kind of access with regard to AI agents. They read our mailboxes, query our data lakes, open tickets, push code and increasingly, act on production systems. Unlike a new hire, an agent can’t be interviewed, background-checked or made to sign an acceptable-use policy.</span></p><p style="direction:ltr"><span style="font-size:undefined">The industry has largely settled on one framing: AI agents are the new insider threat but that label only tells us half of the story. It tells us </span><span style="font-size:undefined"><em>who</em></span><span style="font-size:undefined"> to worry about, not </span><span style="font-size:undefined"><em>where</em></span><span style="font-size:undefined"> the controls should sit. Our argument is that the answer is a security idea from 1972, the reference monitor, and that the SOC is where it gets enforced in practice.</span></p><h2 id="why-agents-break-the-trust-model-we-had" style="direction:ltr">Why agents break the trust model we had</h2><p style="direction:ltr"><span style="font-size:undefined">With traditional software, a security incident ends in a root cause. You find the vulnerable function, the misconfigured rule or the bad commit, and you fix it. The behavior lived in code we could read.</span></p><p style="direction:ltr"><span style="font-size:undefined">Large language models don't give us that. We can't point to the training example or the set of weights that produced a specific decision. The same prompt can produce different actions on different runs. For a defender, that removes the most basic assumption we rely on: that the system will do tomorrow what it did today.</span></p><p style="direction:ltr"><span style="font-size:undefined">The attack surface changes too, and computer science has an old name for this problem: the </span><span style="font-size:undefined"><strong>confused deputy</strong></span><span style="font-size:undefined">. This is a trusted program tricked into misusing its own authority on someone else's behalf. An agent that reads a poisoned email, web page or document and then acts on hidden instructions is a confused deputy with API keys. No password is stolen and no exploit fires, which makes the agent's permissions the real blast radius, not the model's intelligence.</span></p><h2 id="where-the-insider-analogy-holds-and-where-it-breaks" style="direction:ltr">Where the insider analogy holds, and where it breaks</h2><p style="direction:ltr"><span style="font-size:undefined">Most discussion of agents as insiders focuses on two gaps: agents have no career to lose, and they act at machine speed. Both are real. From a detection and forensics seat, though, four other differences change the work more:</span></p><div class="max-w-full overflow-x-auto"><table class="mb-5 w-full border-collapse"><thead><tr class="border-t border-gray-200"><th class="border border-gray-400 px-1 py-1 text-left align-top text-gray-900 md:px-4 md:py-2"><p style="direction:ltr"><span style="font-size:undefined"><strong>Difference</strong></span></p></th><th class="border border-gray-400 px-1 py-1 text-left align-top text-gray-900 md:px-4 md:py-2"><p style="direction:ltr"><span style="font-size:undefined"><strong>Human insider</strong></span></p></th><th class="border border-gray-400 px-1 py-1 text-left align-top text-gray-900 md:px-4 md:py-2"><p style="direction:ltr"><span style="font-size:undefined"><strong>AI agent</strong></span></p></th><th class="border border-gray-400 px-1 py-1 text-left align-top text-gray-900 md:px-4 md:py-2"><p style="direction:ltr"><span style="font-size:undefined"><strong>What it means for defenders</strong></span></p></th></tr></thead><tbody><tr class="border-t border-gray-200"><td class="border border-gray-400 px-1 py-1 align-top text-[13px] text-gray-700 md:px-4 md:py-2 md:text-sm [&amp;_p]:text-[13px] [&amp;_p]:md:text-sm"><p style="direction:ltr"><span style="font-size:undefined">Monoculture</span></p></td><td class="border border-gray-400 px-1 py-1 align-top text-[13px] text-gray-700 md:px-4 md:py-2 md:text-sm [&amp;_p]:text-[13px] [&amp;_p]:md:text-sm"><p style="direction:ltr"><span style="font-size:undefined">One person fails on their own</span></p></td><td class="border border-gray-400 px-1 py-1 align-top text-[13px] text-gray-700 md:px-4 md:py-2 md:text-sm [&amp;_p]:text-[13px] [&amp;_p]:md:text-sm"><p style="direction:ltr"><span style="font-size:undefined">Many identical copies share one weakness</span></p></td><td class="border border-gray-400 px-1 py-1 align-top text-[13px] text-gray-700 md:px-4 md:py-2 md:text-sm [&amp;_p]:text-[13px] [&amp;_p]:md:text-sm"><p style="direction:ltr"><span style="font-size:undefined">Treat a working injection like a wormable bug: fix the fleet, not one instance</span></p></td></tr><tr class="border-t border-gray-200"><td class="border border-gray-400 px-1 py-1 align-top text-[13px] text-gray-700 md:px-4 md:py-2 md:text-sm [&amp;_p]:text-[13px] [&amp;_p]:md:text-sm"><p style="direction:ltr"><span style="font-size:undefined">Replayability</span></p></td><td class="border border-gray-400 px-1 py-1 align-top text-[13px] text-gray-700 md:px-4 md:py-2 md:text-sm [&amp;_p]:text-[13px] [&amp;_p]:md:text-sm"><p style="direction:ltr"><span style="font-size:undefined">Events can be reconstructed and the person interviewed</span></p></td><td class="border border-gray-400 px-1 py-1 align-top text-[13px] text-gray-700 md:px-4 md:py-2 md:text-sm [&amp;_p]:text-[13px] [&amp;_p]:md:text-sm"><p style="direction:ltr"><span style="font-size:undefined">The same input can produce a different action on a rerun</span></p></td><td class="border border-gray-400 px-1 py-1 align-top text-[13px] text-gray-700 md:px-4 md:py-2 md:text-sm [&amp;_p]:text-[13px] [&amp;_p]:md:text-sm"><p style="direction:ltr"><span style="font-size:undefined">Forensics must rest on recorded inputs and tool calls, not on replaying the agent</span></p></td></tr><tr class="border-t border-gray-200"><td class="border border-gray-400 px-1 py-1 align-top text-[13px] text-gray-700 md:px-4 md:py-2 md:text-sm [&amp;_p]:text-[13px] [&amp;_p]:md:text-sm"><p style="direction:ltr"><span style="font-size:undefined">Command channel</span></p></td><td class="border border-gray-400 px-1 py-1 align-top text-[13px] text-gray-700 md:px-4 md:py-2 md:text-sm [&amp;_p]:text-[13px] [&amp;_p]:md:text-sm"><p style="direction:ltr"><span style="font-size:undefined">Instructions come from a manager</span></p></td><td class="border border-gray-400 px-1 py-1 align-top text-[13px] text-gray-700 md:px-4 md:py-2 md:text-sm [&amp;_p]:text-[13px] [&amp;_p]:md:text-sm"><p style="direction:ltr"><span style="font-size:undefined">Instructions arrive mixed in with the data it processes</span></p></td><td class="border border-gray-400 px-1 py-1 align-top text-[13px] text-gray-700 md:px-4 md:py-2 md:text-sm [&amp;_p]:text-[13px] [&amp;_p]:md:text-sm"><p style="direction:ltr"><span style="font-size:undefined">Any content the agent reads is a potential command</span></p></td></tr><tr class="border-t border-gray-200"><td class="border border-gray-400 px-1 py-1 align-top text-[13px] text-gray-700 md:px-4 md:py-2 md:text-sm [&amp;_p]:text-[13px] [&amp;_p]:md:text-sm"><p style="direction:ltr"><span style="font-size:undefined">Self-report</span></p></td><td class="border border-gray-400 px-1 py-1 align-top text-[13px] text-gray-700 md:px-4 md:py-2 md:text-sm [&amp;_p]:text-[13px] [&amp;_p]:md:text-sm"><p style="direction:ltr"><span style="font-size:undefined">A person can be questioned and cross-checked</span></p></td><td class="border border-gray-400 px-1 py-1 align-top text-[13px] text-gray-700 md:px-4 md:py-2 md:text-sm [&amp;_p]:text-[13px] [&amp;_p]:md:text-sm"><p style="direction:ltr"><span style="font-size:undefined">Its account of its reasoning may not match what it did</span></p></td><td class="border border-gray-400 px-1 py-1 align-top text-[13px] text-gray-700 md:px-4 md:py-2 md:text-sm [&amp;_p]:text-[13px] [&amp;_p]:md:text-sm"><p style="direction:ltr"><span style="font-size:undefined">Evidence must come from outside the agent</span></p></td></tr></tbody></table></div><p style="direction:ltr"><span style="font-size:undefined">The last row matters most. We can't make an agent's self-reported reasoning the basis of trust, because we don't yet know how to guarantee that reasoning is faithful. Evidence has to come from outside the agent.</span></p><h2 id="put-the-controls-outside-the-model" style="direction:ltr">Put the controls outside the model</h2><p style="direction:ltr"><span style="font-size:undefined">If the model can't be fully trusted, the controls that govern it can't live inside of it. A system prompt that says "never delete production data" is a suggestion, not a control. A well-crafted injection can talk the model out of it.</span></p><p style="direction:ltr"><span style="font-size:undefined">Security architects solved a version of this problem in the 1970s with the reference monitor: a mechanism that checks every access request, can't be bypassed and can't be tampered with by the program it governs. For AI agents, that means separating three things: the model that reasons, the harness that orchestrates it and the policy layer that decides which actions are actually allowed.</span></p> <span class='relative block [&amp;_[data-rmiz-ghost]]:pointer-events-none [&amp;_[data-rmiz-ghost]]:absolute [&amp;_[data-rmiz-btn-zoom]]:m-0 [&amp;_[data-rmiz-btn-zoom]]:size-10 [&amp;_[data-rmiz-btn-zoom]]:touch-manipulation [&amp;_[data-rmiz-btn-zoom]]:appearance-none [&amp;_[data-rmiz-btn-zoom]]:rounded-[50%] [&amp;_[data-rmiz-btn-zoom]]:border-none [&amp;_[data-rmiz-btn-zoom]]:bg-foreground/70 [&amp;_[data-rmiz-btn-zoom]]:p-2 [&amp;_[data-rmiz-btn-unzoom]]:m-0 [&amp;_[data-rmiz-btn-zoom]]:text-background [&amp;_[data-rmiz-btn-zoom]]:outline-offset-2 [&amp;_[data-rmiz-btn-unzoom]]:size-10 [&amp;_[data-rmiz-btn-unzoom]]:touch-manipulation [&amp;_[data-rmiz-btn-unzoom]]:appearance-none [&amp;_[data-rmiz-btn-unzoom]]:rounded-[50%] [&amp;_[data-rmiz-btn-unzoom]]:border-none [&amp;_[data-rmiz-btn-unzoom]]:bg-foreground/70 [&amp;_[data-rmiz-btn-unzoom]]:p-2 [&amp;_[data-rmiz-btn-unzoom]]:text-background [&amp;_[data-rmiz-btn-unzoom]]:outline-offset-2 [&amp;_[data-rmiz-btn-zoom]:not(:focus):not(:active)]:pointer-events-none [&amp;_[data-rmiz-btn-zoom]:not(:focus):not(:active)]:absolute [&amp;_[data-rmiz-btn-zoom]:not(:focus):not(:active)]:size-px [&amp;_[data-rmiz-btn-zoom]:not(:focus):not(:active)]:overflow-hidden [&amp;_[data-rmiz-btn-zoom]:not(:focus):not(:active)]:whitespace-nowrap [&amp;_[data-rmiz-btn-zoom]:not(:focus):not(:active)]:[clip-path:inset(50%)] [&amp;_[data-rmiz-btn-zoom]:not(:focus):not(:active)]:[clip:rect(0_0_0_0)] [&amp;_[data-rmiz-btn-zoom]]:absolute [&amp;_[data-rmiz-btn-zoom]]:bottom-auto [&amp;_[data-rmiz-btn-zoom]]:left-auto [&amp;_[data-rmiz-btn-zoom]]:right-2.5 [&amp;_[data-rmiz-btn-zoom]]:top-2.5 [&amp;_[data-rmiz-btn-zoom]]:cursor-zoom-in [&amp;_[data-rmiz-btn-unzoom]]:absolute [&amp;_[data-rmiz-btn-unzoom]]:bottom-auto [&amp;_[data-rmiz-btn-unzoom]]:left-auto [&amp;_[data-rmiz-btn-unzoom]]:right-5 [&amp;_[data-rmiz-btn-unzoom]]:top-5 [&amp;_[data-rmiz-btn-unzoom]]:z-[1] [&amp;_[data-rmiz-btn-unzoom]]:cursor-zoom-out [&amp;_[data-rmiz-content="found"]_img]:cursor-zoom-in [&amp;_[data-rmiz-content="found"]_svg]:cursor-zoom-in [&amp;_[data-rmiz-content="found"]_[role="img"]]:cursor-zoom-in [&amp;_[data-rmiz-content="found"]_[data-zoom]]:cursor-zoom-in'><span data-rmiz=""><span data-rmiz-content="not-found" style="visibility:visible"><img alt="image1.png" class="blog-content-image" decoding="async" height="820" sizes="(min-width: 1024px) 820px, calc(100vw - 40px)" src="https://www.rapid7.com/cdn/images/blt75d7d93f2cc0a795/6ad646ff75da61bc073d5671/image1.png" srcset="https://www.rapid7.com/cdn/images/blt75d7d93f2cc0a795/6ad646ff75da61bc073d5671/image1.png?width=384 384w, https://www.rapid7.com/cdn/images/blt75d7d93f2cc0a795/6ad646ff75da61bc073d5671/image1.png?width=640 640w, https://www.rapid7.com/cdn/images/blt75d7d93f2cc0a795/6ad646ff75da61bc073d5671/image1.png?width=750 750w, https://www.rapid7.com/cdn/images/blt75d7d93f2cc0a795/6ad646ff75da61bc073d5671/image1.png?width=828 828w, https://www.rapid7.com/cdn/images/blt75d7d93f2cc0a795/6ad646ff75da61bc073d5671/image1.png?width=960 960w, https://www.rapid7.com/cdn/images/blt75d7d93f2cc0a795/6ad646ff75da61bc073d5671/image1.png?width=1280 1280w" width="1344" style="width:auto;height:auto;max-width:100%;max-height:450px;object-fit:contain;display:block;border-radius:4px;" loading="lazy" /></span></span></span> <em class="mt-2 text-gray-charcoal text-center text-[13px] mb-4">Figure 1: Agent control architecture · enforcement outside the model</em> <p style="direction:ltr"><span style="font-size:undefined">The agent can propose anything, but only the enforcement point decides what reaches real systems, and every decision lands in a log the agent can't alter.</span></p><h2 id="a-security-playbook-for-ai-agents" style="direction:ltr">A security playbook for AI agents</h2><p style="direction:ltr"><span style="font-size:undefined">None of these controls are new. What's new is applying them consistently to a non-human actor that reasons, plans and acts.</span></p><ol><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined"><strong>Give every agent its own identity.</strong></span><span style="font-size:undefined"> An agent should never run under a shared service account or a person's own credentials. It needs an identity that can be scoped, monitored, and revoked independently.</span></p></li><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined"><strong>Enforce least privilege on actions, not just data.</strong></span><span style="font-size:undefined"> Define an explicit action space: which tools, which APIs, which parameters. High-impact actions like payments, deletions or production changes need step-up approval from a human.</span></p></li><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined"><strong>Log everything in a place the agent can't touch.</strong></span><span style="font-size:undefined"> Every tool call, input, and output goes to tamper-evident storage outside the agent's reach. You should be able to reconstruct what happened without asking the agent.</span></p></li><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined"><strong>Never let a model grade its own work.</strong></span><span style="font-size:undefined"> Use a different model, a deterministic rule, or a human to verify important outcomes. Avoid depending on a single model vendor for anything critical.</span></p></li><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined"><strong>Red team continuously.</strong></span><span style="font-size:undefined"> Test prompt injection, tool misuse, data exfiltration, and edge cases, not just the happy path. Re-test every time the model, the prompt, or the tool set changes.</span></p></li><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined"><strong>Build a kill switch before you need it.</strong></span><span style="font-size:undefined"> In May 2017, WannaCry was stopped by luck. A researcher registered a nonsense domain hard-coded in the ransomware, and new infections stopped spreading because the malware checked that domain before running. Defenders didn't build that kill switch. They found it in the attacker's code, it did nothing for machines already encrypted, and later variants simply removed it. Agent fleets can't depend on that kind of luck. The stop control has to be ours, sit outside the agent, cut off its credentials and tool access mid-run, and be tested regularly, the way an EDR host isolation action is.</span></p></li><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined"><strong>Disclose and share incidents.</strong></span><span style="font-size:undefined"> When an agent misbehaves, tell the people affected, document which control failed and share the lessons with the wider community, the same way we share threat intelligence today.</span></p></li><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined"><strong>Persistent memory</strong></span><span style="font-size:undefined"> is a new risk. Agents with long-term memory can be poisoned once and stay compromised. Add memory state to "log everything" and "quarantine its outputs."</span></p></li></ol><h2 id="bring-agents-into-the-security-operations-center-soc" style="direction:ltr">Bring agents into the Security Operations Center (SOC)</h2><p style="direction:ltr"><span style="font-size:undefined">Logging alone doesn't protect anyone, as no human team can review millions of agent actions, and handing that review to another unsupervised model just adds another black box. The SOC needs to treat agent activity as a first-class telemetry source, the way it treats endpoints, identities and cloud workloads today.</span></p><p style="direction:ltr"><span style="font-size:undefined">In practice, that means:</span></p><ul><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined"><strong>Behavioral baselines per agent.</strong></span><span style="font-size:undefined"> Know which tools, data sources and destinations each agent normally uses, and alert on deviations, such as a code-review agent that starts reading the finance file share.</span></p></li><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined"><strong>Detections for agent-specific attacks.</strong></span><span style="font-size:undefined"> Write rules for prompt-injection indicators, unusual tool chaining, sudden bursts of high-privilege actions and data flowing to unexpected destinations.</span></p></li><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined"><strong>Correlation with the rest of the environment.</strong></span><span style="font-size:undefined"> Tie agent actions to the user, the session, the content the agent read, and the systems it touched, so an investigation can follow the full chain.</span></p></li><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined"><strong>Response playbooks.</strong></span><span style="font-size:undefined"> Pause the agent, revoke its tokens, quarantine its outputs and roll back its changes, with the same speed we expect when isolating a compromised host.</span></p></li></ul><p style="direction:ltr"><span style="font-size:undefined">The security industry can lead in this area, as we already know how to collect noisy telemetry, find the signal, and contain threats quickly. Agents are the next category of asset to protect, and the next category of actor to watch.</span></p><h2 id="trust-the-architecture-not-the-model" style="direction:ltr">Trust the architecture, not the model</h2><p style="direction:ltr"><span style="font-size:undefined">Models will keep getting smarter, and vendors will keep promising they're safer. Both may be true, but neither removes our responsibility for what an agent does inside </span><span style="font-size:undefined"><em>our</em></span><span style="font-size:undefined"> environment with </span><span style="font-size:undefined"><em>our</em></span><span style="font-size:undefined"> data and </span><span style="font-size:undefined"><em>our</em></span><span style="font-size:undefined"> credentials.</span></p><p style="direction:ltr"><span style="font-size:undefined">The goal isn't to find a model we can trust completely. It's to build a system that stays safe even when the model gets it wrong. Security teams have done this for people, networks, and endpoints for decades. AI agents are simply the next privileged insider, and it's time we treated them that way.</span></p></div></div><section aria-labelledby="blog-post-article-tags-title" class="py-[30px] border-t border-gray-platinum mt-7" data-testid="blog-post-article-tags"><h2 class="mb-[14px] text-black-rich text-[18px] font-normal leading-[110%] tracking-[-0.36px]" id="blog-post-article-tags-title">Article tags</h2></section><footer data-testid="blog-post-footer"></footer> <img src="https://www.rapid7.com/cdn/images/blt0b0762ca94c50b0b/6846a711eac0e395093e52e3/AI.jpg" width="300" style="width:auto;height:auto;max-width:100%;max-height:450px;object-fit:contain;display:block;border-radius:4px;" loading="lazy" /><div class="blog-content" data-testid="content-widget"><div class="flex flex-col [&amp;_*+h2]:mt-[50px] [&amp;_h2]:mb-[18px] [&amp;_*+h3]:mt-[20px] [&amp;_h3]:mb-[12px] [&amp;_*+h4]:mt-[20px] [&amp;_h4]:mb-[12px] [&amp;_*+h5]:mt-[20px] [&amp;_h5]:mb-[12px] [&amp;_p:not(:last-child)]:mb-[12px] [&amp;_li:not(:last-child)]:mb-[12px] [&amp;_blockquote]:mt-[20px] [&amp;_blockquote]:mb-[20px] [&amp;_blockquote]:pt-[6px] [&amp;_blockquote]:pb-[6px] [&amp;_blockquote]:pl-[18px] [&amp;_blockquote]:text-[32px] [&amp;_blockquote]:border-l-[4px] [&amp;_blockquote]:border-[#D7D5D3] [&amp;_blockquote]:font-medium [&amp;_blockquote]:leading-[120%] [&amp;_pre]:my-[20px] [&amp;_pre&gt;code]:block [&amp;_pre&gt;code]:p-[16px] [&amp;_pre&gt;code]:rounded-[10px] [&amp;_pre&gt;code]:bg-code-block [&amp;_pre&gt;code]:text-code-block [&amp;_pre&gt;code]:overflow-x-auto hover:[&amp;_a]:decoration-primary-sinopia focus:[&amp;_a]:outline-dashed focus:[&amp;_a]:outline-[2px] focus:[&amp;_a]:outline-primary-sinopia visited:[&amp;_a]:text-primary-sinopia hover:[&amp;_a]:text-black-rich focus:[&amp;_a]:text-black-rich [&amp;_p]:text-gray-charcoal [&amp;_a]:text-gray-charcoal [&amp;_ul]:text-gray-charcoal [&amp;_ol]:text-gray-charcoal [&amp;_blockquote]:text-black-rich prose max-w-none"><p style="direction:ltr"><span style="font-size:undefined"><em>Why the controls on an AI agent have to live outside of it, and what a security operations team can do to implement and maintain those controls.</em></span></p><h2 id="the-new-privileged-user-in-your-environment" style="direction:ltr">The new privileged user in your environment</h2><p style="direction:ltr"><span style="font-size:undefined">Security teams spent two decades learning how to work with the people they trust most. Domain admins, DBAs, finance approvers and contractors with VPN access all get a mature playbook: verified identity, scoped access, logged activity and a fast way to revoke it all.</span></p><p style="direction:ltr"><span style="font-size:undefined">Today, we’re navigating the same kind of access with regard to AI agents. They read our mailboxes, query our data lakes, open tickets, push code and increasingly, act on production systems. Unlike a new hire, an agent can’t be interviewed, background-checked or made to sign an acceptable-use policy.</span></p><p style="direction:ltr"><span style="font-size:undefined">The industry has largely settled on one framing: AI agents are the new insider threat but that label only tells us half of the story. It tells us </span><span style="font-size:undefined"><em>who</em></span><span style="font-size:undefined"> to worry about, not </span><span style="font-size:undefined"><em>where</em></span><span style="font-size:undefined"> the controls should sit. Our argument is that the answer is a security idea from 1972, the reference monitor, and that the SOC is where it gets enforced in practice.</span></p><h2 id="why-agents-break-the-trust-model-we-had" style="direction:ltr">Why agents break the trust model we had</h2><p style="direction:ltr"><span style="font-size:undefined">With traditional software, a security incident ends in a root cause. You find the vulnerable function, the misconfigured rule or the bad commit, and you fix it. The behavior lived in code we could read.</span></p><p style="direction:ltr"><span style="font-size:undefined">Large language models don't give us that. We can't point to the training example or the set of weights that produced a specific decision. The same prompt can produce different actions on different runs. For a defender, that removes the most basic assumption we rely on: that the system will do tomorrow what it did today.</span></p><p style="direction:ltr"><span style="font-size:undefined">The attack surface changes too, and computer science has an old name for this problem: the </span><span style="font-size:undefined"><strong>confused deputy</strong></span><span style="font-size:undefined">. This is a trusted program tricked into misusing its own authority on someone else's behalf. An agent that reads a poisoned email, web page or document and then acts on hidden instructions is a confused deputy with API keys. No password is stolen and no exploit fires, which makes the agent's permissions the real blast radius, not the model's intelligence.</span></p><h2 id="where-the-insider-analogy-holds-and-where-it-breaks" style="direction:ltr">Where the insider analogy holds, and where it breaks</h2><p style="direction:ltr"><span style="font-size:undefined">Most discussion of agents as insiders focuses on two gaps: agents have no career to lose, and they act at machine speed. Both are real. From a detection and forensics seat, though, four other differences change the work more:</span></p><div class="max-w-full overflow-x-auto"><table class="mb-5 w-full border-collapse"><thead><tr class="border-t border-gray-200"><th class="border border-gray-400 px-1 py-1 text-left align-top text-gray-900 md:px-4 md:py-2"><p style="direction:ltr"><span style="font-size:undefined"><strong>Difference</strong></span></p></th><th class="border border-gray-400 px-1 py-1 text-left align-top text-gray-900 md:px-4 md:py-2"><p style="direction:ltr"><span style="font-size:undefined"><strong>Human insider</strong></span></p></th><th class="border border-gray-400 px-1 py-1 text-left align-top text-gray-900 md:px-4 md:py-2"><p style="direction:ltr"><span style="font-size:undefined"><strong>AI agent</strong></span></p></th><th class="border border-gray-400 px-1 py-1 text-left align-top text-gray-900 md:px-4 md:py-2"><p style="direction:ltr"><span style="font-size:undefined"><strong>What it means for defenders</strong></span></p></th></tr></thead><tbody><tr class="border-t border-gray-200"><td class="border border-gray-400 px-1 py-1 align-top text-[13px] text-gray-700 md:px-4 md:py-2 md:text-sm [&amp;_p]:text-[13px] [&amp;_p]:md:text-sm"><p style="direction:ltr"><span style="font-size:undefined">Monoculture</span></p></td><td class="border border-gray-400 px-1 py-1 align-top text-[13px] text-gray-700 md:px-4 md:py-2 md:text-sm [&amp;_p]:text-[13px] [&amp;_p]:md:text-sm"><p style="direction:ltr"><span style="font-size:undefined">One person fails on their own</span></p></td><td class="border border-gray-400 px-1 py-1 align-top text-[13px] text-gray-700 md:px-4 md:py-2 md:text-sm [&amp;_p]:text-[13px] [&amp;_p]:md:text-sm"><p style="direction:ltr"><span style="font-size:undefined">Many identical copies share one weakness</span></p></td><td class="border border-gray-400 px-1 py-1 align-top text-[13px] text-gray-700 md:px-4 md:py-2 md:text-sm [&amp;_p]:text-[13px] [&amp;_p]:md:text-sm"><p style="direction:ltr"><span style="font-size:undefined">Treat a working injection like a wormable bug: fix the fleet, not one instance</span></p></td></tr><tr class="border-t border-gray-200"><td class="border border-gray-400 px-1 py-1 align-top text-[13px] text-gray-700 md:px-4 md:py-2 md:text-sm [&amp;_p]:text-[13px] [&amp;_p]:md:text-sm"><p style="direction:ltr"><span style="font-size:undefined">Replayability</span></p></td><td class="border border-gray-400 px-1 py-1 align-top text-[13px] text-gray-700 md:px-4 md:py-2 md:text-sm [&amp;_p]:text-[13px] [&amp;_p]:md:text-sm"><p style="direction:ltr"><span style="font-size:undefined">Events can be reconstructed and the person interviewed</span></p></td><td class="border border-gray-400 px-1 py-1 align-top text-[13px] text-gray-700 md:px-4 md:py-2 md:text-sm [&amp;_p]:text-[13px] [&amp;_p]:md:text-sm"><p style="direction:ltr"><span style="font-size:undefined">The same input can produce a different action on a rerun</span></p></td><td class="border border-gray-400 px-1 py-1 align-top text-[13px] text-gray-700 md:px-4 md:py-2 md:text-sm [&amp;_p]:text-[13px] [&amp;_p]:md:text-sm"><p style="direction:ltr"><span style="font-size:undefined">Forensics must rest on recorded inputs and tool calls, not on replaying the agent</span></p></td></tr><tr class="border-t border-gray-200"><td class="border border-gray-400 px-1 py-1 align-top text-[13px] text-gray-700 md:px-4 md:py-2 md:text-sm [&amp;_p]:text-[13px] [&amp;_p]:md:text-sm"><p style="direction:ltr"><span style="font-size:undefined">Command channel</span></p></td><td class="border border-gray-400 px-1 py-1 align-top text-[13px] text-gray-700 md:px-4 md:py-2 md:text-sm [&amp;_p]:text-[13px] [&amp;_p]:md:text-sm"><p style="direction:ltr"><span style="font-size:undefined">Instructions come from a manager</span></p></td><td class="border border-gray-400 px-1 py-1 align-top text-[13px] text-gray-700 md:px-4 md:py-2 md:text-sm [&amp;_p]:text-[13px] [&amp;_p]:md:text-sm"><p style="direction:ltr"><span style="font-size:undefined">Instructions arrive mixed in with the data it processes</span></p></td><td class="border border-gray-400 px-1 py-1 align-top text-[13px] text-gray-700 md:px-4 md:py-2 md:text-sm [&amp;_p]:text-[13px] [&amp;_p]:md:text-sm"><p style="direction:ltr"><span style="font-size:undefined">Any content the agent reads is a potential command</span></p></td></tr><tr class="border-t border-gray-200"><td class="border border-gray-400 px-1 py-1 align-top text-[13px] text-gray-700 md:px-4 md:py-2 md:text-sm [&amp;_p]:text-[13px] [&amp;_p]:md:text-sm"><p style="direction:ltr"><span style="font-size:undefined">Self-report</span></p></td><td class="border border-gray-400 px-1 py-1 align-top text-[13px] text-gray-700 md:px-4 md:py-2 md:text-sm [&amp;_p]:text-[13px] [&amp;_p]:md:text-sm"><p style="direction:ltr"><span style="font-size:undefined">A person can be questioned and cross-checked</span></p></td><td class="border border-gray-400 px-1 py-1 align-top text-[13px] text-gray-700 md:px-4 md:py-2 md:text-sm [&amp;_p]:text-[13px] [&amp;_p]:md:text-sm"><p style="direction:ltr"><span style="font-size:undefined">Its account of its reasoning may not match what it did</span></p></td><td class="border border-gray-400 px-1 py-1 align-top text-[13px] text-gray-700 md:px-4 md:py-2 md:text-sm [&amp;_p]:text-[13px] [&amp;_p]:md:text-sm"><p style="direction:ltr"><span style="font-size:undefined">Evidence must come from outside the agent</span></p></td></tr></tbody></table></div><p style="direction:ltr"><span style="font-size:undefined">The last row matters most. We can't make an agent's self-reported reasoning the basis of trust, because we don't yet know how to guarantee that reasoning is faithful. Evidence has to come from outside the agent.</span></p><h2 id="put-the-controls-outside-the-model" style="direction:ltr">Put the controls outside the model</h2><p style="direction:ltr"><span style="font-size:undefined">If the model can't be fully trusted, the controls that govern it can't live inside of it. A system prompt that says "never delete production data" is a suggestion, not a control. A well-crafted injection can talk the model out of it.</span></p><p style="direction:ltr"><span style="font-size:undefined">Security architects solved a version of this problem in the 1970s with the reference monitor: a mechanism that checks every access request, can't be bypassed and can't be tampered with by the program it governs. For AI agents, that means separating three things: the model that reasons, the harness that orchestrates it and the policy layer that decides which actions are actually allowed.</span></p> <span class='relative block [&amp;_[data-rmiz-ghost]]:pointer-events-none [&amp;_[data-rmiz-ghost]]:absolute [&amp;_[data-rmiz-btn-zoom]]:m-0 [&amp;_[data-rmiz-btn-zoom]]:size-10 [&amp;_[data-rmiz-btn-zoom]]:touch-manipulation [&amp;_[data-rmiz-btn-zoom]]:appearance-none [&amp;_[data-rmiz-btn-zoom]]:rounded-[50%] [&amp;_[data-rmiz-btn-zoom]]:border-none [&amp;_[data-rmiz-btn-zoom]]:bg-foreground/70 [&amp;_[data-rmiz-btn-zoom]]:p-2 [&amp;_[data-rmiz-btn-unzoom]]:m-0 [&amp;_[data-rmiz-btn-zoom]]:text-background [&amp;_[data-rmiz-btn-zoom]]:outline-offset-2 [&amp;_[data-rmiz-btn-unzoom]]:size-10 [&amp;_[data-rmiz-btn-unzoom]]:touch-manipulation [&amp;_[data-rmiz-btn-unzoom]]:appearance-none [&amp;_[data-rmiz-btn-unzoom]]:rounded-[50%] [&amp;_[data-rmiz-btn-unzoom]]:border-none [&amp;_[data-rmiz-btn-unzoom]]:bg-foreground/70 [&amp;_[data-rmiz-btn-unzoom]]:p-2 [&amp;_[data-rmiz-btn-unzoom]]:text-background [&amp;_[data-rmiz-btn-unzoom]]:outline-offset-2 [&amp;_[data-rmiz-btn-zoom]:not(:focus):not(:active)]:pointer-events-none [&amp;_[data-rmiz-btn-zoom]:not(:focus):not(:active)]:absolute [&amp;_[data-rmiz-btn-zoom]:not(:focus):not(:active)]:size-px [&amp;_[data-rmiz-btn-zoom]:not(:focus):not(:active)]:overflow-hidden [&amp;_[data-rmiz-btn-zoom]:not(:focus):not(:active)]:whitespace-nowrap [&amp;_[data-rmiz-btn-zoom]:not(:focus):not(:active)]:[clip-path:inset(50%)] [&amp;_[data-rmiz-btn-zoom]:not(:focus):not(:active)]:[clip:rect(0_0_0_0)] [&amp;_[data-rmiz-btn-zoom]]:absolute [&amp;_[data-rmiz-btn-zoom]]:bottom-auto [&amp;_[data-rmiz-btn-zoom]]:left-auto [&amp;_[data-rmiz-btn-zoom]]:right-2.5 [&amp;_[data-rmiz-btn-zoom]]:top-2.5 [&amp;_[data-rmiz-btn-zoom]]:cursor-zoom-in [&amp;_[data-rmiz-btn-unzoom]]:absolute [&amp;_[data-rmiz-btn-unzoom]]:bottom-auto [&amp;_[data-rmiz-btn-unzoom]]:left-auto [&amp;_[data-rmiz-btn-unzoom]]:right-5 [&amp;_[data-rmiz-btn-unzoom]]:top-5 [&amp;_[data-rmiz-btn-unzoom]]:z-[1] [&amp;_[data-rmiz-btn-unzoom]]:cursor-zoom-out [&amp;_[data-rmiz-content="found"]_img]:cursor-zoom-in [&amp;_[data-rmiz-content="found"]_svg]:cursor-zoom-in [&amp;_[data-rmiz-content="found"]_[role="img"]]:cursor-zoom-in [&amp;_[data-rmiz-content="found"]_[data-zoom]]:cursor-zoom-in'><span data-rmiz=""><span data-rmiz-content="not-found" style="visibility:visible"><img alt="image1.png" class="blog-content-image" decoding="async" height="820" sizes="(min-width: 1024px) 820px, calc(100vw - 40px)" src="https://www.rapid7.com/cdn/images/blt75d7d93f2cc0a795/6ad646ff75da61bc073d5671/image1.png" srcset="https://www.rapid7.com/cdn/images/blt75d7d93f2cc0a795/6ad646ff75da61bc073d5671/image1.png?width=384 384w, https://www.rapid7.com/cdn/images/blt75d7d93f2cc0a795/6ad646ff75da61bc073d5671/image1.png?width=640 640w, https://www.rapid7.com/cdn/images/blt75d7d93f2cc0a795/6ad646ff75da61bc073d5671/image1.png?width=750 750w, https://www.rapid7.com/cdn/images/blt75d7d93f2cc0a795/6ad646ff75da61bc073d5671/image1.png?width=828 828w, https://www.rapid7.com/cdn/images/blt75d7d93f2cc0a795/6ad646ff75da61bc073d5671/image1.png?width=960 960w, https://www.rapid7.com/cdn/images/blt75d7d93f2cc0a795/6ad646ff75da61bc073d5671/image1.png?width=1280 1280w" width="1344" style="width:auto;height:auto;max-width:100%;max-height:450px;object-fit:contain;display:block;border-radius:4px;" loading="lazy" /></span></span></span> <em class="mt-2 text-gray-charcoal text-center text-[13px] mb-4">Figure 1: Agent control architecture · enforcement outside the model</em> <p style="direction:ltr"><span style="font-size:undefined">The agent can propose anything, but only the enforcement point decides what reaches real systems, and every decision lands in a log the agent can't alter.</span></p><h2 id="a-security-playbook-for-ai-agents" style="direction:ltr">A security playbook for AI agents</h2><p style="direction:ltr"><span style="font-size:undefined">None of these controls are new. What's new is applying them consistently to a non-human actor that reasons, plans and acts.</span></p><ol><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined"><strong>Give every agent its own identity.</strong></span><span style="font-size:undefined"> An agent should never run under a shared service account or a person's own credentials. It needs an identity that can be scoped, monitored, and revoked independently.</span></p></li><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined"><strong>Enforce least privilege on actions, not just data.</strong></span><span style="font-size:undefined"> Define an explicit action space: which tools, which APIs, which parameters. High-impact actions like payments, deletions or production changes need step-up approval from a human.</span></p></li><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined"><strong>Log everything in a place the agent can't touch.</strong></span><span style="font-size:undefined"> Every tool call, input, and output goes to tamper-evident storage outside the agent's reach. You should be able to reconstruct what happened without asking the agent.</span></p></li><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined"><strong>Never let a model grade its own work.</strong></span><span style="font-size:undefined"> Use a different model, a deterministic rule, or a human to verify important outcomes. Avoid depending on a single model vendor for anything critical.</span></p></li><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined"><strong>Red team continuously.</strong></span><span style="font-size:undefined"> Test prompt injection, tool misuse, data exfiltration, and edge cases, not just the happy path. Re-test every time the model, the prompt, or the tool set changes.</span></p></li><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined"><strong>Build a kill switch before you need it.</strong></span><span style="font-size:undefined"> In May 2017, WannaCry was stopped by luck. A researcher registered a nonsense domain hard-coded in the ransomware, and new infections stopped spreading because the malware checked that domain before running. Defenders didn't build that kill switch. They found it in the attacker's code, it did nothing for machines already encrypted, and later variants simply removed it. Agent fleets can't depend on that kind of luck. The stop control has to be ours, sit outside the agent, cut off its credentials and tool access mid-run, and be tested regularly, the way an EDR host isolation action is.</span></p></li><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined"><strong>Disclose and share incidents.</strong></span><span style="font-size:undefined"> When an agent misbehaves, tell the people affected, document which control failed and share the lessons with the wider community, the same way we share threat intelligence today.</span></p></li><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined"><strong>Persistent memory</strong></span><span style="font-size:undefined"> is a new risk. Agents with long-term memory can be poisoned once and stay compromised. Add memory state to "log everything" and "quarantine its outputs."</span></p></li></ol><h2 id="bring-agents-into-the-security-operations-center-soc" style="direction:ltr">Bring agents into the Security Operations Center (SOC)</h2><p style="direction:ltr"><span style="font-size:undefined">Logging alone doesn't protect anyone, as no human team can review millions of agent actions, and handing that review to another unsupervised model just adds another black box. The SOC needs to treat agent activity as a first-class telemetry source, the way it treats endpoints, identities and cloud workloads today.</span></p><p style="direction:ltr"><span style="font-size:undefined">In practice, that means:</span></p><ul><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined"><strong>Behavioral baselines per agent.</strong></span><span style="font-size:undefined"> Know which tools, data sources and destinations each agent normally uses, and alert on deviations, such as a code-review agent that starts reading the finance file share.</span></p></li><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined"><strong>Detections for agent-specific attacks.</strong></span><span style="font-size:undefined"> Write rules for prompt-injection indicators, unusual tool chaining, sudden bursts of high-privilege actions and data flowing to unexpected destinations.</span></p></li><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined"><strong>Correlation with the rest of the environment.</strong></span><span style="font-size:undefined"> Tie agent actions to the user, the session, the content the agent read, and the systems it touched, so an investigation can follow the full chain.</span></p></li><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined"><strong>Response playbooks.</strong></span><span style="font-size:undefined"> Pause the agent, revoke its tokens, quarantine its outputs and roll back its changes, with the same speed we expect when isolating a compromised host.</span></p></li></ul><p style="direction:ltr"><span style="font-size:undefined">The security industry can lead in this area, as we already know how to collect noisy telemetry, find the signal, and contain threats quickly. Agents are the next category of asset to protect, and the next category of actor to watch.</span></p><h2 id="trust-the-architecture-not-the-model" style="direction:ltr">Trust the architecture, not the model</h2><p style="direction:ltr"><span style="font-size:undefined">Models will keep getting smarter, and vendors will keep promising they're safer. Both may be true, but neither removes our responsibility for what an agent does inside </span><span style="font-size:undefined"><em>our</em></span><span style="font-size:undefined"> environment with </span><span style="font-size:undefined"><em>our</em></span><span style="font-size:undefined"> data and </span><span style="font-size:undefined"><em>our</em></span><span style="font-size:undefined"> credentials.</span></p><p style="direction:ltr"><span style="font-size:undefined">The goal isn't to find a model we can trust completely. It's to build a system that stays safe even when the model gets it wrong. Security teams have done this for people, networks, and endpoints for decades. AI agents are simply the next privileged insider, and it's time we treated them that way.</span></p></div></div><section aria-labelledby="blog-post-article-tags-title" class="py-[30px] border-t border-gray-platinum mt-7" data-testid="blog-post-article-tags"><h2 class="mb-[14px] text-black-rich text-[18px] font-normal leading-[110%] tracking-[-0.36px]" id="blog-post-article-tags-title">Article tags</h2></section><footer data-testid="blog-post-footer"></footer> https://www.rapid7.com/blog/post/ai-inhuman-insider-threats-securing-agents cyber Mon, 19 Oct 2026 16:34:43 +0000 Q3 2026 Threat Update: Attackers Are Exploiting Vulnerabilities Within 3 Days (2026) https://www.rapid7.com/blog/post/tr-q3-2026-threat-update-attackers-exploiting-vulnerabilities-within-3-days <img src="https://www.rapid7.com/cdn/images/blt77f5564b49102b80/6abfb804cd0bd934c1d4e56b/Copy_of_Rapid7_intelligence_report_template.png" width="300" style="width:auto;height:auto;max-width:100%;max-height:450px;object-fit:contain;display:block;border-radius:4px;" loading="lazy" /><div class="blog-content" data-testid="content-widget"><div class="flex flex-col [&amp;_*+h2]:mt-[50px] [&amp;_h2]:mb-[18px] [&amp;_*+h3]:mt-[20px] [&amp;_h3]:mb-[12px] [&amp;_*+h4]:mt-[20px] [&amp;_h4]:mb-[12px] [&amp;_*+h5]:mt-[20px] [&amp;_h5]:mb-[12px] [&amp;_p:not(:last-child)]:mb-[12px] [&amp;_li:not(:last-child)]:mb-[12px] [&amp;_blockquote]:mt-[20px] [&amp;_blockquote]:mb-[20px] [&amp;_blockquote]:pt-[6px] [&amp;_blockquote]:pb-[6px] [&amp;_blockquote]:pl-[18px] [&amp;_blockquote]:text-[32px] [&amp;_blockquote]:border-l-[4px] [&amp;_blockquote]:border-[#D7D5D3] [&amp;_blockquote]:font-medium [&amp;_blockquote]:leading-[120%] [&amp;_pre]:my-[20px] [&amp;_pre&gt;code]:block [&amp;_pre&gt;code]:p-[16px] [&amp;_pre&gt;code]:rounded-[10px] [&amp;_pre&gt;code]:bg-code-block [&amp;_pre&gt;code]:text-code-block [&amp;_pre&gt;code]:overflow-x-auto hover:[&amp;_a]:decoration-primary-sinopia focus:[&amp;_a]:outline-dashed focus:[&amp;_a]:outline-[2px] focus:[&amp;_a]:outline-primary-sinopia visited:[&amp;_a]:text-primary-sinopia hover:[&amp;_a]:text-black-rich focus:[&amp;_a]:text-black-rich [&amp;_p]:text-gray-charcoal [&amp;_a]:text-gray-charcoal [&amp;_ul]:text-gray-charcoal [&amp;_ol]:text-gray-charcoal [&amp;_blockquote]:text-black-rich prose max-w-none"><p style="direction:ltr"><span style="font-size:undefined">Three days is the average time between a high-severity vulnerability becoming public and its exploitation, according to the latest </span><a data-gtm-cta="quarterly-threat-landscape-report" data-gtm-location="content-rte-link" href="/research/report/quarterly-threat-landscape-report/" rel="noopener" target="_self"><span style="font-size:undefined"><em>Quarterly Threat Landscape Report</em></span></a><span style="font-size:undefined"> from Rapid7. And 71% of the exploitation tracked in Q3 occurred within the first seven days.</span></p><p style="direction:ltr"><span style="font-size:undefined">For security teams already managing growing vulnerability backlogs, this creates a difficult question: How do you reduce exposure when attackers can exploit vulnerabilities before your next patching window?</span></p><p style="direction:ltr"><span style="font-size:undefined">Rapid7's Q3 2026 research brings together vulnerability intelligence, ransomware activity, APT tracking, and underground forum intelligence to show where attacker activity is concentrated.</span></p><h2 id="the-exploitation-window-has-narrowed-big-time" style="direction:ltr">The exploitation window has narrowed, big time</h2><p style="direction:ltr"><span style="font-size:undefined">Rapid7 tracked 43 newly exploited high- and critical-severity vulnerabilities this quarter, down 7% from Q2 but still 19% higher than the same period last year.</span></p><p style="direction:ltr"><span style="font-size:undefined">The number of newly exploited vulnerabilities isn't growing at the same rate as disclosures. The more pressing concern is how quickly attackers exploit the vulnerabilities they choose. On average, exploitation occurred just three days after public disclosure. The report also found that 80% of tracked exploitation occurred within 14 days and 90% within 30 days.</span></p><p style="direction:ltr"><span style="font-size:undefined">That timeline creates a serious challenge for organizations relying on fixed remediation schedules. It also reinforces the need to distinguish between vulnerabilities that are theoretically severe and those that pose an immediate, exploitable risk.</span></p><p style="direction:ltr"><span style="font-size:undefined">The report examines the exploitation timeline in greater detail, including the vulnerability characteristics that make certain exposures particularly attractive to attackers.</span></p><h2 id="attackers-are-exploiting-vulnerabilities-that-require-no-interaction" style="direction:ltr">Attackers are exploiting vulnerabilities that require no interaction</h2><p style="direction:ltr"><span style="font-size:undefined">Q3's vulnerability data reveals another concerning pattern: Of the 43 newly exploited high- and critical-severity vulnerabilities tracked, 34 (79%) required no authentication or user interaction.</span></p><p style="direction:ltr"><span style="font-size:undefined">This provides attackers a potential path into exposed systems, no stolen credentials or malicious content interaction necessary. An internet-facing service with an exploitable vulnerability may require immediate attention, particularly when an attacker can reach it without authenticating.</span></p><p style="direction:ltr"><span style="font-size:undefined">This makes attack surface visibility and contextual prioritization essential. Security teams need to understand which systems are externally accessible, which vulnerabilities are actively exploited, and whether existing controls can prevent or limit compromise.</span></p><p style="direction:ltr"><span style="font-size:undefined">A CVSS score alone won’t give you the answers. The report explores the characteristics of exploited vulnerabilities and why understanding reachability is critical to reducing risk.</span></p><h2 id="ai-is-taking-on-a-more-operational-role-in-attacks" style="direction:ltr">AI is taking on a more operational role in attacks</h2><p style="direction:ltr"><span style="font-size:undefined">In Q3, 8% of the threat reporting tracked by Rapid7 cited AI as an operational component. The research identifies a shift from using AI primarily to help draft content or code toward supporting tactical decisions and execution within attack campaigns.</span></p><p style="direction:ltr"><span style="font-size:undefined">In the documented cases, human operators continued to select targets and determine objectives, but relied on AI assistance for technique selection, target assessment, and adapting when an attack step failed.</span></p><p style="direction:ltr"><span style="font-size:undefined">The report also examines how threat actors split malicious objectives across multiple AI sessions to evade provider safeguards. There are serious implications for detection in these findings. AI-enabled attacks also reinforce the value of monitoring and quickly adapting to attacker behavior rather than relying exclusively on known malware signatures or threat actor identities.</span></p><p style="direction:ltr"><span style="font-size:undefined">The report provides additional context on how AI appeared in tracked campaigns and what defenders should monitor.</span></p><h2 id="the-next-step-prioritize-exposure-before-attackers-exploit-it" style="direction:ltr">The next step: Prioritize exposure before attackers exploit it</h2><p style="direction:ltr"><span style="color:rgb(26, 26, 46);font-size:undefined">Q3's findings reveal a challenge that vulnerability counts alone can’t explain. </span><span style="font-size:undefined">Attackers exploited 43 newly tracked vulnerabilities this quarter, yet the average exploitation window was just three days. Meanwhile, underground forum monitoring identified 41 posts advertising RDP or network access, demonstrating continued interest in selling access to compromised environments.</span></p><p style="direction:ltr"><span style="font-size:undefined">Security teams must account for both the vulnerabilities attackers can exploit directly and the access they can obtain through other means.</span></p><p style="direction:ltr"><span style="font-size:undefined">Start by identifying externally accessible assets and the vulnerabilities affecting them. Prioritize known exploitation, unauthenticated access paths, and systems supporting critical business functions. Where immediate remediation isn't possible, assess compensating controls and detection coverage.</span></p><p style="direction:ltr"><span style="font-size:undefined">The latest </span><a data-gtm-cta="rapid7-quarterly-threat-landscape-report" data-gtm-location="content-rte-link" href="/research/report/quarterly-threat-landscape-report/" rel="noopener" target="_self"><span style="font-size:undefined"><em>Rapid7 Quarterly Threat Landscape Report</em></span></a><span style="font-size:undefined"> brings together vulnerability research, ransomware intelligence, nation-state activity, and dark web monitoring to help security teams understand where threats are concentrated and what to address first. </span><a data-gtm-cta="download-and-read-it-now" data-gtm-location="content-rte-link" href="/research/report/quarterly-threat-landscape-report/" rel="noopener" target="_self"><span style="font-size:undefined">Download and read it now</span></a><span style="font-size:undefined">.</span></p></div></div><section aria-labelledby="blog-post-article-tags-title" class="py-[30px] border-t border-gray-platinum mt-7" data-testid="blog-post-article-tags"><h2 class="mb-[14px] text-black-rich text-[18px] font-normal leading-[110%] tracking-[-0.36px]" id="blog-post-article-tags-title">Article tags</h2></section><footer data-testid="blog-post-footer"></footer> <img src="https://www.rapid7.com/cdn/images/blt77f5564b49102b80/6abfb804cd0bd934c1d4e56b/Copy_of_Rapid7_intelligence_report_template.png" width="300" style="width:auto;height:auto;max-width:100%;max-height:450px;object-fit:contain;display:block;border-radius:4px;" loading="lazy" /><div class="blog-content" data-testid="content-widget"><div class="flex flex-col [&amp;_*+h2]:mt-[50px] [&amp;_h2]:mb-[18px] [&amp;_*+h3]:mt-[20px] [&amp;_h3]:mb-[12px] [&amp;_*+h4]:mt-[20px] [&amp;_h4]:mb-[12px] [&amp;_*+h5]:mt-[20px] [&amp;_h5]:mb-[12px] [&amp;_p:not(:last-child)]:mb-[12px] [&amp;_li:not(:last-child)]:mb-[12px] [&amp;_blockquote]:mt-[20px] [&amp;_blockquote]:mb-[20px] [&amp;_blockquote]:pt-[6px] [&amp;_blockquote]:pb-[6px] [&amp;_blockquote]:pl-[18px] [&amp;_blockquote]:text-[32px] [&amp;_blockquote]:border-l-[4px] [&amp;_blockquote]:border-[#D7D5D3] [&amp;_blockquote]:font-medium [&amp;_blockquote]:leading-[120%] [&amp;_pre]:my-[20px] [&amp;_pre&gt;code]:block [&amp;_pre&gt;code]:p-[16px] [&amp;_pre&gt;code]:rounded-[10px] [&amp;_pre&gt;code]:bg-code-block [&amp;_pre&gt;code]:text-code-block [&amp;_pre&gt;code]:overflow-x-auto hover:[&amp;_a]:decoration-primary-sinopia focus:[&amp;_a]:outline-dashed focus:[&amp;_a]:outline-[2px] focus:[&amp;_a]:outline-primary-sinopia visited:[&amp;_a]:text-primary-sinopia hover:[&amp;_a]:text-black-rich focus:[&amp;_a]:text-black-rich [&amp;_p]:text-gray-charcoal [&amp;_a]:text-gray-charcoal [&amp;_ul]:text-gray-charcoal [&amp;_ol]:text-gray-charcoal [&amp;_blockquote]:text-black-rich prose max-w-none"><p style="direction:ltr"><span style="font-size:undefined">Three days is the average time between a high-severity vulnerability becoming public and its exploitation, according to the latest </span><a data-gtm-cta="quarterly-threat-landscape-report" data-gtm-location="content-rte-link" href="/research/report/quarterly-threat-landscape-report/" rel="noopener" target="_self"><span style="font-size:undefined"><em>Quarterly Threat Landscape Report</em></span></a><span style="font-size:undefined"> from Rapid7. And 71% of the exploitation tracked in Q3 occurred within the first seven days.</span></p><p style="direction:ltr"><span style="font-size:undefined">For security teams already managing growing vulnerability backlogs, this creates a difficult question: How do you reduce exposure when attackers can exploit vulnerabilities before your next patching window?</span></p><p style="direction:ltr"><span style="font-size:undefined">Rapid7's Q3 2026 research brings together vulnerability intelligence, ransomware activity, APT tracking, and underground forum intelligence to show where attacker activity is concentrated.</span></p><h2 id="the-exploitation-window-has-narrowed-big-time" style="direction:ltr">The exploitation window has narrowed, big time</h2><p style="direction:ltr"><span style="font-size:undefined">Rapid7 tracked 43 newly exploited high- and critical-severity vulnerabilities this quarter, down 7% from Q2 but still 19% higher than the same period last year.</span></p><p style="direction:ltr"><span style="font-size:undefined">The number of newly exploited vulnerabilities isn't growing at the same rate as disclosures. The more pressing concern is how quickly attackers exploit the vulnerabilities they choose. On average, exploitation occurred just three days after public disclosure. The report also found that 80% of tracked exploitation occurred within 14 days and 90% within 30 days.</span></p><p style="direction:ltr"><span style="font-size:undefined">That timeline creates a serious challenge for organizations relying on fixed remediation schedules. It also reinforces the need to distinguish between vulnerabilities that are theoretically severe and those that pose an immediate, exploitable risk.</span></p><p style="direction:ltr"><span style="font-size:undefined">The report examines the exploitation timeline in greater detail, including the vulnerability characteristics that make certain exposures particularly attractive to attackers.</span></p><h2 id="attackers-are-exploiting-vulnerabilities-that-require-no-interaction" style="direction:ltr">Attackers are exploiting vulnerabilities that require no interaction</h2><p style="direction:ltr"><span style="font-size:undefined">Q3's vulnerability data reveals another concerning pattern: Of the 43 newly exploited high- and critical-severity vulnerabilities tracked, 34 (79%) required no authentication or user interaction.</span></p><p style="direction:ltr"><span style="font-size:undefined">This provides attackers a potential path into exposed systems, no stolen credentials or malicious content interaction necessary. An internet-facing service with an exploitable vulnerability may require immediate attention, particularly when an attacker can reach it without authenticating.</span></p><p style="direction:ltr"><span style="font-size:undefined">This makes attack surface visibility and contextual prioritization essential. Security teams need to understand which systems are externally accessible, which vulnerabilities are actively exploited, and whether existing controls can prevent or limit compromise.</span></p><p style="direction:ltr"><span style="font-size:undefined">A CVSS score alone won’t give you the answers. The report explores the characteristics of exploited vulnerabilities and why understanding reachability is critical to reducing risk.</span></p><h2 id="ai-is-taking-on-a-more-operational-role-in-attacks" style="direction:ltr">AI is taking on a more operational role in attacks</h2><p style="direction:ltr"><span style="font-size:undefined">In Q3, 8% of the threat reporting tracked by Rapid7 cited AI as an operational component. The research identifies a shift from using AI primarily to help draft content or code toward supporting tactical decisions and execution within attack campaigns.</span></p><p style="direction:ltr"><span style="font-size:undefined">In the documented cases, human operators continued to select targets and determine objectives, but relied on AI assistance for technique selection, target assessment, and adapting when an attack step failed.</span></p><p style="direction:ltr"><span style="font-size:undefined">The report also examines how threat actors split malicious objectives across multiple AI sessions to evade provider safeguards. There are serious implications for detection in these findings. AI-enabled attacks also reinforce the value of monitoring and quickly adapting to attacker behavior rather than relying exclusively on known malware signatures or threat actor identities.</span></p><p style="direction:ltr"><span style="font-size:undefined">The report provides additional context on how AI appeared in tracked campaigns and what defenders should monitor.</span></p><h2 id="the-next-step-prioritize-exposure-before-attackers-exploit-it" style="direction:ltr">The next step: Prioritize exposure before attackers exploit it</h2><p style="direction:ltr"><span style="color:rgb(26, 26, 46);font-size:undefined">Q3's findings reveal a challenge that vulnerability counts alone can’t explain. </span><span style="font-size:undefined">Attackers exploited 43 newly tracked vulnerabilities this quarter, yet the average exploitation window was just three days. Meanwhile, underground forum monitoring identified 41 posts advertising RDP or network access, demonstrating continued interest in selling access to compromised environments.</span></p><p style="direction:ltr"><span style="font-size:undefined">Security teams must account for both the vulnerabilities attackers can exploit directly and the access they can obtain through other means.</span></p><p style="direction:ltr"><span style="font-size:undefined">Start by identifying externally accessible assets and the vulnerabilities affecting them. Prioritize known exploitation, unauthenticated access paths, and systems supporting critical business functions. Where immediate remediation isn't possible, assess compensating controls and detection coverage.</span></p><p style="direction:ltr"><span style="font-size:undefined">The latest </span><a data-gtm-cta="rapid7-quarterly-threat-landscape-report" data-gtm-location="content-rte-link" href="/research/report/quarterly-threat-landscape-report/" rel="noopener" target="_self"><span style="font-size:undefined"><em>Rapid7 Quarterly Threat Landscape Report</em></span></a><span style="font-size:undefined"> brings together vulnerability research, ransomware intelligence, nation-state activity, and dark web monitoring to help security teams understand where threats are concentrated and what to address first. </span><a data-gtm-cta="download-and-read-it-now" data-gtm-location="content-rte-link" href="/research/report/quarterly-threat-landscape-report/" rel="noopener" target="_self"><span style="font-size:undefined">Download and read it now</span></a><span style="font-size:undefined">.</span></p></div></div><section aria-labelledby="blog-post-article-tags-title" class="py-[30px] border-t border-gray-platinum mt-7" data-testid="blog-post-article-tags"><h2 class="mb-[14px] text-black-rich text-[18px] font-normal leading-[110%] tracking-[-0.36px]" id="blog-post-article-tags-title">Article tags</h2></section><footer data-testid="blog-post-footer"></footer> https://www.rapid7.com/blog/post/tr-q3-2026-threat-update-attackers-exploiting-vulnerabilities-within-3-days cyber Wed, 21 Oct 2026 13:00:00 +0000 CVE-2026-109618 and CVE-2026-109619: Critical Unauthenticated Remote Code Execution in PHP (2026) https://www.rapid7.com/blog/post/etr-cve-2026-109618-and-cve-2026-109619-critical-unauthenticated-remote-code-execution-in-php <img src="https://www.rapid7.com/cdn/images/blt65a432ba319f4043/6846abddaf18306debe6cf4d/ETR.webp" width="300" style="width:auto;height:auto;max-width:100%;max-height:450px;object-fit:contain;display:block;border-radius:4px;" loading="lazy" /><div class="blog-content" data-testid="content-widget"><div class="flex flex-col [&amp;_*+h2]:mt-[50px] [&amp;_h2]:mb-[18px] [&amp;_*+h3]:mt-[20px] [&amp;_h3]:mb-[12px] [&amp;_*+h4]:mt-[20px] [&amp;_h4]:mb-[12px] [&amp;_*+h5]:mt-[20px] [&amp;_h5]:mb-[12px] [&amp;_p:not(:last-child)]:mb-[12px] [&amp;_li:not(:last-child)]:mb-[12px] [&amp;_blockquote]:mt-[20px] [&amp;_blockquote]:mb-[20px] [&amp;_blockquote]:pt-[6px] [&amp;_blockquote]:pb-[6px] [&amp;_blockquote]:pl-[18px] [&amp;_blockquote]:text-[32px] [&amp;_blockquote]:border-l-[4px] [&amp;_blockquote]:border-[#D7D5D3] [&amp;_blockquote]:font-medium [&amp;_blockquote]:leading-[120%] [&amp;_pre]:my-[20px] [&amp;_pre&gt;code]:block [&amp;_pre&gt;code]:p-[16px] [&amp;_pre&gt;code]:rounded-[10px] [&amp;_pre&gt;code]:bg-code-block [&amp;_pre&gt;code]:text-code-block [&amp;_pre&gt;code]:overflow-x-auto hover:[&amp;_a]:decoration-primary-sinopia focus:[&amp;_a]:outline-dashed focus:[&amp;_a]:outline-[2px] focus:[&amp;_a]:outline-primary-sinopia visited:[&amp;_a]:text-primary-sinopia hover:[&amp;_a]:text-black-rich focus:[&amp;_a]:text-black-rich [&amp;_p]:text-gray-charcoal [&amp;_a]:text-gray-charcoal [&amp;_ul]:text-gray-charcoal [&amp;_ol]:text-gray-charcoal [&amp;_blockquote]:text-black-rich prose max-w-none"><h2 id="overview" style="direction:ltr">Overview</h2><p style="direction:ltr"><span style="font-size:undefined">On October 21, 2026, the PHP project </span><a data-gtm-cta="announced-security-releases" data-gtm-location="content-rte-link" href="https://www.php.net/archive/2026.php#2026-10-21-5" rel="noopener" target="_blank"><span style="font-size:undefined">announced security releases</span></a><span style="font-size:undefined"> for two critical vulnerabilities in PHP. </span><a data-gtm-cta="cve-2026-109618" data-gtm-location="content-rte-link" href="https://www.cve.org/CVERecord?id=CVE-2026-109618" rel="noopener" target="_blank"><span style="font-size:undefined">CVE-2026-109618</span></a><span style="font-size:undefined"> can corrupt memory during out-of-memory (OOM) handling, while </span><a data-gtm-cta="cve-2026-109619" data-gtm-location="content-rte-link" href="https://www.cve.org/CVERecord?id=CVE-2026-109619" rel="noopener" target="_blank"><span style="font-size:undefined">CVE-2026-109619</span></a><span style="font-size:undefined"> is a use-after-free flaw involving state retained between requests. Both have a CVSSv4 score of 9.2 and both can allow for unauthenticated remote code execution (RCE) with the web worker's privileges.</span></p><div class="max-w-full overflow-x-auto"><table class="mb-5 w-full border-collapse"><thead><tr class="border-t border-gray-200"><th class="border border-gray-400 px-1 py-1 text-left align-top text-gray-900 md:px-4 md:py-2"><p style="direction:ltr"><span style="font-size:undefined"><strong>CVE</strong></span></p></th><th class="border border-gray-400 px-1 py-1 text-left align-top text-gray-900 md:px-4 md:py-2"><p style="direction:ltr"><span style="font-size:undefined"><strong>CVSSv4</strong></span></p></th><th class="border border-gray-400 px-1 py-1 text-left align-top text-gray-900 md:px-4 md:py-2"><p style="direction:ltr"><span style="font-size:undefined"><strong>Description</strong></span></p></th></tr></thead><tbody><tr class="border-t border-gray-200"><td class="border border-gray-400 px-1 py-1 align-top text-[13px] text-gray-700 md:px-4 md:py-2 md:text-sm [&amp;_p]:text-[13px] [&amp;_p]:md:text-sm"><p style="direction:ltr"><a data-gtm-cta="cve-2026-109618" data-gtm-location="content-rte-link" href="https://github.com/php/php-src/security/advisories/GHSA-w8hw-w9fx-j79w" rel="noopener" target="_blank"><span style="font-size:undefined">CVE-2026-109618</span></a></p></td><td class="border border-gray-400 px-1 py-1 align-top text-[13px] text-gray-700 md:px-4 md:py-2 md:text-sm [&amp;_p]:text-[13px] [&amp;_p]:md:text-sm"><p style="direction:ltr"><a data-gtm-cta="9-2-critical" data-gtm-location="content-rte-link" href="https://www.first.org/cvss/calculator/4.0#CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N" rel="noopener" target="_blank"><span style="font-size:undefined">9.2 (Critical)</span></a></p></td><td class="border border-gray-400 px-1 py-1 align-top text-[13px] text-gray-700 md:px-4 md:py-2 md:text-sm [&amp;_p]:text-[13px] [&amp;_p]:md:text-sm"><p style="direction:ltr"><span style="font-size:undefined">RCE via OOM corruption</span></p></td></tr><tr class="border-t border-gray-200"><td class="border border-gray-400 px-1 py-1 align-top text-[13px] text-gray-700 md:px-4 md:py-2 md:text-sm [&amp;_p]:text-[13px] [&amp;_p]:md:text-sm"><p style="direction:ltr"><a data-gtm-cta="cve-2026-109619" data-gtm-location="content-rte-link" href="https://github.com/php/php-src/security/advisories/GHSA-6wmf-4rv5-p3rp" rel="noopener" target="_blank"><span style="font-size:undefined">CVE-2026-109619</span></a></p></td><td class="border border-gray-400 px-1 py-1 align-top text-[13px] text-gray-700 md:px-4 md:py-2 md:text-sm [&amp;_p]:text-[13px] [&amp;_p]:md:text-sm"><p style="direction:ltr"><a data-gtm-cta="9-2-critical" data-gtm-location="content-rte-link" href="https://www.first.org/cvss/calculator/4.0#CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N" rel="noopener" target="_blank"><span style="font-size:undefined">9.2 (Critical)</span></a></p></td><td class="border border-gray-400 px-1 py-1 align-top text-[13px] text-gray-700 md:px-4 md:py-2 md:text-sm [&amp;_p]:text-[13px] [&amp;_p]:md:text-sm"><p style="direction:ltr"><span style="font-size:undefined">RCE via stale global state</span></p></td></tr></tbody></table></div><p style="direction:ltr"><span style="font-size:undefined">All installations serving web requests are at risk, including PHP-FPM, Apache mod_php, php-cgi, FrankenPHP, and LiteSpeed. The vendor considers mod_php the highest risk because exploitation can succeed before any application code runs.</span></p><p style="direction:ltr"><span style="font-size:undefined">The advisories report that a successful RCE exploit was developed during research, including achieving RCE against Apache mod_php and PHP-FPM through different attack paths. As of October 21, 2026, there are multiple indications that this research is being independently reproduced, and a viable exploit is expected to be made public soon.</span></p><p style="direction:ltr"><span style="font-size:undefined">Due to the extremely high deployment of PHP based web applications, exploitation in-the-wild is expected. </span><span style="font-size:undefined"><strong>Rapid7 recommends updating affected installations on an emergency basis, outside of normal patch cycles.</strong></span></p><p><span style="font-size:undefined">Multiple public proof-of-concept (PoC) exploits for CVE-2026-109618 and CVE-2026-109619 are now available. Rapid7 researchers have reviewed these and observe that each demonstrates RCE only against a specific combination of operating system, PHP version, and web server, and none appears to be broadly reliable. Rapid7’s own research supports this. Our attempts so far have produced a working exploit only under narrow lab conditions, and exploitation depends on assumptions that are unlikely to hold on internet-facing instances. We are continuing to investigate approaches that could improve portability, but have not yet developed a reliable, general-purpose exploit. Rapid7 has not observed exploitation in the wild, though there are multiple reports of exploitation attempts, which is expected for a vulnerability of this profile. The situation is evolving quickly, and a more portable exploit technique could emerge at any time. The current difficulty of reliable exploitation should be treated as a window to patch rather than a reason to delay, and Rapid7 continues to recommend updating affected installations on an emergency basis.</span></p><p style="direction:ltr"><span style="font-size:undefined"><strong>Update #1</strong></span><span style="font-size:undefined">: On October 26, 2026, </span><a data-gtm-cta="cve-2026-109618" data-gtm-location="content-rte-link" href="https://www.rapid7.com/db/vulnerabilities/cve-2026-109618/" rel="noopener" target="_blank"><span style="font-size:undefined">CVE-2026-109618</span></a><span style="font-size:undefined"> and </span><a data-gtm-cta="cve-2026-109619" data-gtm-location="content-rte-link" href="https://www.rapid7.com/db/vulnerabilities/cve-2026-109619/" rel="noopener" target="_blank"><span style="font-size:undefined">CVE-2026-109619</span></a><span style="font-size:undefined"> were </span><a data-gtm-cta="added-to-the-u-s-cybersecurity-and-infrastructure-security-agency-s-cisa-list-of-known-exploited-vulnerabilities-kev" data-gtm-location="content-rte-link" href="https://www.cisa.gov/known-exploited-vulnerabilities-catalog" rel="noopener" target="_blank"><span style="font-size:undefined">added to the U.S. Cybersecurity and Infrastructure Security Agency's (CISA) list of known exploited vulnerabilities (KEV)</span></a><span style="font-size:undefined">, based on evidence of active exploitation. CISA set the remediation due date to October 29, 2026, for affected Federal Civilian Executive Branch agencies and directs them to follow the associated </span><a data-gtm-cta="bod-26-04-forensic-triage-requirements" data-gtm-location="content-rte-link" href="https://www.cisa.gov/news-events/directives/bod-26-04-implementation-guidance-prioritizing-security-updates-based-risk" rel="noopener" target="_blank"><span style="font-size:undefined">BOD 26-04 forensic triage requirements</span></a><span style="font-size:undefined">. Rapid7 continues to recommend updating affected installations on an emergency basis and investigating for prior compromise.</span></p><h2 id="technical-overview" style="direction:ltr">Technical overview</h2><h3 style="direction:ltr"><span style="color:rgb(67, 67, 67)">CVE-2026-109618: Memory corruption during OOM handling</span></h3><p style="direction:ltr"><span style="font-size:undefined">According to the </span><a data-gtm-cta="oom-advisory" data-gtm-location="content-rte-link" href="https://github.com/php/php-src/security/advisories/GHSA-w8hw-w9fx-j79w" rel="noopener" target="_blank"><span style="font-size:undefined">OOM advisory</span></a><span style="font-size:undefined">, PHP can abruptly abandon request processing when a memory allocation fails. If internal request data is only partly initialized, that exit can leave invalid data for request cleanup to use. Crafted multipart requests, used for forms and file uploads, can exhaust memory even when their size appears to meet PHP's configured limits. Application operations that allocate memory in response to attacker input can also trigger OOM.</span></p><p style="direction:ltr"><span style="font-size:undefined">Apache mod_php runs cleanup even when request startup fails, enabling the demonstrated attack before application code executes. The advisory reports RCE over HTTP with default PHP input and memory limits, including multi-worker prefork deployments. PHP-FPM terminates a worker when startup fails, preventing that particular sequence. Source analysis supports FPM susceptibility after successful startup, but the advisory reports no complete FPM exploit for this CVE. Exploit portability and reliability depend on the PHP build, extensions, frontend behavior, and memory layout.</span></p><h3 style="direction:ltr"><span style="color:rgb(67, 67, 67)">CVE-2026-109619: Use after free across requests</span></h3><p style="direction:ltr"><span style="font-size:undefined">PHP can reuse a worker process to handle multiple HTTP requests. The </span><a data-gtm-cta="stale-state-advisory" data-gtm-location="content-rte-link" href="https://github.com/php/php-src/security/advisories/GHSA-6wmf-4rv5-p3rp" rel="noopener" target="_blank"><span style="font-size:undefined">stale-state advisory</span></a><span style="font-size:undefined"> describes internal state that still points to memory freed at the end of an earlier request. A later request handled by the same worker can access that stale value before normal initialization clears it. Fatal errors, including memory exhaustion and execution timeouts, can interrupt state cleanup; some nonfatal diagnostics during shutdown can also repopulate error state after it was reset.</span></p><p style="direction:ltr"><span style="font-size:undefined">The advisory confirms RCE against mod_php through PHP 8.5's fatal error backtrace feature, when </span><span style="color:rgb(24, 128, 56);font-size:undefined">fatal_error_backtraces</span><span style="font-size:undefined"> is enabled (the default), where a later initialization diagnostic accesses stale backtrace state. It also confirms session lifecycle RCE against mod_php and FPM. Session upload progress, PHP's upload-tracking feature, is enabled by default and can act as an early consumer of stale session or decoder state before normal initialization; reaching this consumer does not itself require an application call to </span><span style="color:rgb(24, 128, 56);font-size:undefined">session_start()</span><span style="font-size:undefined">.</span></p><p style="direction:ltr"><span style="font-size:undefined">The validated FPM session path requires a suitable application operation to leave state behind after successful startup, followed by a fatal error and another request that consumes the stale state through session upload progress. Both requests must reach the same worker. Multiple workers and worker recycling can reduce success per request, but do not eliminate the condition.</span></p><h2 id="mitigation-guidance" style="direction:ltr">Mitigation guidance</h2><p style="direction:ltr"><span style="font-size:undefined">PHP has released fixes for both vulnerabilities. Organizations should prioritize updating to the appropriate fixed release or a vendor package containing both complete patches. The PHP advisories list these affected and fixed versions:</span></p><ul><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined">PHP 8.2 releases before 8.2.35: Update to 8.2.35</span></p></li><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined">PHP 8.3 releases before 8.3.36: Update to 8.3.36</span></p></li><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined">PHP 8.4 releases before 8.4.27: Update to 8.4.27</span></p></li><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined">PHP 8.5 releases before 8.5.12: Update to 8.5.12</span></p></li></ul><p style="direction:ltr"><span style="font-size:undefined">Linux distributions and long-term support vendors received patches in advance; check your vendor for updated packages. PHP 8.1 and older no longer receive routine upstream updates. For this incident, PHP has supplied limited source backports for </span><a data-gtm-cta="php-7-4" data-gtm-location="content-rte-link" href="https://github.com/php/php-src/tree/PHP-7.4-CVE-2026-109618-109619" rel="noopener" target="_blank"><span style="font-size:undefined">PHP 7.4</span></a><span style="font-size:undefined">, </span><a data-gtm-cta="8-0" data-gtm-location="content-rte-link" href="https://github.com/php/php-src/tree/PHP-8.0-CVE-2026-109618-109619" rel="noopener" target="_blank"><span style="font-size:undefined">8.0</span></a><span style="font-size:undefined">, and </span><a data-gtm-cta="8-1" data-gtm-location="content-rte-link" href="https://github.com/php/php-src/tree/PHP-8.1-CVE-2026-109618-109619" rel="noopener" target="_blank"><span style="font-size:undefined">8.1</span></a><span style="font-size:undefined">. Organizations running older branches should obtain a vendor fix, use the source backports described in the </span><a data-gtm-cta="php-announcement" data-gtm-location="content-rte-link" href="https://www.php.net/archive/2026.php#2026-10-21-5" rel="noopener" target="_blank"><span style="font-size:undefined">PHP announcement</span></a><span style="font-size:undefined">, or upgrade to a supported version. PHP also warns that </span><span style="color:rgb(24, 128, 56);font-size:undefined">rpms.remirepo.net</span><span style="font-size:undefined"> will not have updates on October 21, 2026, and urges its users to switch to distribution packages or build from source.</span></p><p style="direction:ltr"><span style="font-size:undefined"><strong>Note that an update containing both complete fixes is the only complete remediation.</strong></span><span style="font-size:undefined"> </span></p><p style="direction:ltr"><span style="font-size:undefined">PHP's temporary configuration measures </span><span style="font-size:undefined"><em>reduce </em></span><span style="font-size:undefined">exposure to specific paths and require careful deployment:</span></p><ul><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined">For the OOM issue, enforce </span><span style="color:rgb(24, 128, 56);font-size:undefined">memory_limit=-1</span><span style="font-size:undefined"> administratively, such as through FPM pool or Apache configuration that applications cannot override. This disables PHP's per-request memory cap and removes the predictable PHP-limit failure used by the confirmed exploit. An underlying allocation failure can still reach the vulnerable path. Restart every worker and verify that no pool, directory, or application setting restores a finite limit.</span></p></li><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined">For the session lifecycle path, set </span><span style="color:rgb(24, 128, 56);font-size:undefined">session.upload_progress.enabled=0</span><span style="font-size:undefined"> in </span><span style="color:rgb(24, 128, 56);font-size:undefined">php.ini</span><span style="font-size:undefined">, an FPM pool, or server configuration that applies before request parsing, then restart every worker. Application-level </span><span style="color:rgb(24, 128, 56);font-size:undefined">ini_set()</span><span style="font-size:undefined"> and FPM </span><span style="color:rgb(24, 128, 56);font-size:undefined">.user.ini</span><span style="font-size:undefined"> are too late. This addresses the confirmed session paths only.</span></p></li><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined">On PHP 8.5, set </span><span style="color:rgb(24, 128, 56);font-size:undefined">fatal_error_backtraces=0</span><span style="font-size:undefined"> administratively and restart every worker. This addresses the confirmed fatal backtrace path only; other retained state remains a concern.</span></p></li></ul><p style="direction:ltr"><span style="font-size:undefined">Disabling PHP's memory cap makes independent resource controls particularly important. PHP recommends </span><span style="color:rgb(24, 128, 56);font-size:undefined">post_max_size=8M</span><span style="font-size:undefined"> where uploads are unnecessary or </span><span style="color:rgb(24, 128, 56);font-size:undefined">post_max_size=32M</span><span style="font-size:undefined"> where they are needed, with </span><span style="color:rgb(24, 128, 56);font-size:undefined">upload_max_filesize</span><span style="font-size:undefined"> below that limit. At the frontend, bound decoded request size, input and multipart counts, headers per part, and nesting depth, including requests without a usable </span><span style="color:rgb(24, 128, 56);font-size:undefined">Content-Length</span><span style="font-size:undefined">. If the application does not use multipart data, block those requests before they reach PHP.</span></p><p style="direction:ltr"><span style="font-size:undefined">Container or cgroup memory limits are also incomplete: allocation failures remain possible, and enforcement can kill the master process and all workers unless workers are isolated. Do not substitute </span><span style="color:rgb(24, 128, 56);font-size:undefined">RLIMIT_AS</span><span style="font-size:undefined"> or </span><span style="color:rgb(24, 128, 56);font-size:undefined">RLIMIT_DATA</span><span style="font-size:undefined">, which can trigger the vulnerable allocation-failure path.</span></p><p style="direction:ltr"><span style="font-size:undefined">For stale-state exposure, correct invalid or deprecated per-request settings and attacker-reachable fatal errors or timeouts. Hiding diagnostics through </span><span style="color:rgb(24, 128, 56);font-size:undefined">error_reporting</span><span style="font-size:undefined">, </span><span style="color:rgb(24, 128, 56);font-size:undefined">display_errors</span><span style="font-size:undefined">, </span><span style="color:rgb(24, 128, 56);font-size:undefined">log_errors</span><span style="font-size:undefined">, or </span><span style="color:rgb(24, 128, 56);font-size:undefined">@</span><span style="font-size:undefined"> does not prevent stale-state access. The absence of relevant log entries is not proof that an installation is safe.</span></p><p style="direction:ltr"><span style="font-size:undefined">For the latest mitigation guidance, refer to PHP's </span><a data-gtm-cta="oom-corruption-advisory" data-gtm-location="content-rte-link" href="https://github.com/php/php-src/security/advisories/GHSA-w8hw-w9fx-j79w" rel="noopener noreferrer" target="_blank"><span style="font-size:undefined">OOM corruption advisory</span></a><span style="font-size:undefined"> and </span><a data-gtm-cta="stale-global-state-advisory" data-gtm-location="content-rte-link" href="https://github.com/php/php-src/security/advisories/GHSA-6wmf-4rv5-p3rp" rel="noopener noreferrer" target="_blank"><span style="font-size:undefined">stale global state advisory</span></a><span style="font-size:undefined">.</span></p><h2 id="rapid7-customers" style="direction:ltr">Rapid7 customers</h2><p style="direction:ltr"><span style="font-size:undefined">To learn how to use Rapid7 capabilities to find systems affected by these vulnerabilities and for answers to common questions, read the </span><a data-gtm-cta="php2shell-documentation" data-gtm-location="content-rte-link" href="https://docs.rapid7.com/insightvm/php2shell/" rel="noopener noreferrer" target="_blank"><span style="font-size:undefined">PHP2Shell documentation</span></a><span style="font-size:undefined">.</span></p><p>For Rapid7 Customers with questions regarding Rapid7 products and their usage of PHP please consult <a data-gtm-cta="this-page" data-gtm-location="content-rte-link" href="/trust/advisories/php-cve-2026-109618-cve-2026-109619/" rel="noopener noreferrer" target="_blank"><span style="font-size:undefined">this page.</span></a><span style="font-size:undefined"></span></p><h3 style="direction:ltr"><span style="color:rgb(67, 67, 67)">Exposure Command, Vulnerability Management, and Nexpose</span></h3><p style="direction:ltr"><span style="font-size:undefined">Exposure Command, Vulnerability Management, and Nexpose customers can assess exposure to CVE-2026-109618 and CVE-2026-109619 with remote unauthenticated vulnerability checks, available in a dedicated release that followed the regular October 21 content release.</span></p><p style="direction:ltr"><span style="font-size:undefined">Rapid7 has also released authenticated scan checks for both the Scan Engine and the Agent for CVE-2026-109618 and CVE-2026-109619 as part of the October 22 content release.</span></p><p style="direction:ltr"><span style="font-size:undefined">Authenticated, package-based checks are now available for a variety of Linux distributions.  These checks evaluate installed distribution packages, so they can recognize backported fixes that keep the original upstream PHP version number. Run an authenticated scan with this content release to use them. For the full list of checks and supported distribution versions, read Rapid7’s</span><a data-gtm-cta="php2shell-documentation" data-gtm-location="content-rte-link" href="https://docs.rapid7.com/insightvm/php2shell/#31-exposure-command-vulnerability-management-insightvm-and-nexpose" rel="noopener" target="_blank"><span style="font-size:undefined"> PHP2Shell documentation</span></a><span style="font-size:undefined">, where package-based coverage for other distributions will be added as their fixes are published.</span></p><p style="direction:ltr"><span style="font-size:undefined">In a dedicated October 23 content release following the regular release, Rapid7 has released coverage for CVE-2026-115560, </span><a data-gtm-cta="published-on-october-23" data-gtm-location="content-rte-link" href="https://www.php.net/archive/2026.php#2026-10-23-1" rel="noopener noreferrer" target="_blank"><span style="font-size:undefined">published on October 23</span></a><span style="font-size:undefined"> by the PHP Foundation. A mitigation technique is available, but no patch has yet been published. Exploitation of CVE-2026-115560 relies on non-standard configuration.</span></p><p><span style="font-size:undefined"><em>Current</em></span><span style="font-size:undefined"> </span><span style="font-size:undefined"><em>scope for authenticated coverage: Windows, macOS and Linux. Remote unauthenticated coverage provides coverage regardless of web-server OS.</em></span></p><h3 style="direction:ltr"><span style="color:rgb(67, 67, 67)">Velociraptor</span></h3><p style="direction:ltr"><span style="font-size:undefined">A Velociraptor Artifact </span><a data-gtm-cta="generic-applications-phpinventory" data-gtm-location="content-rte-link" href="https://docs.velociraptor.app/exchange/artifacts/pages/phpinventory/" rel="noopener noreferrer" target="_blank"><span style="font-size:undefined">Generic.Applications.PHPInventory</span></a><span style="font-size:undefined"> is available to inventory PHP installations on Windows, Linux and macOS for remediation scoping. This artifact allows for the collection of package versions, common binary and module paths, and running PHP processes.</span></p><h2 id="updates" style="direction:ltr">Updates</h2><ul><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined"><strong>October 21, 2026:</strong></span><span style="font-size:undefined"> Initial publication.</span></p></li><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined"><strong>October 21, 2026:</strong></span><span style="font-size:undefined"> Updated to reflect availability of vulnerability checks.</span></p></li><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined"><strong>October 22, 2026</strong></span><span style="font-size:undefined">: Updated the Overview section to include Rapid7’s findings on a PoC and the Rapid7 Customers section to include a link to the FAQ documentation.</span></p></li><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined"><strong>October 23, 2026</strong></span><span style="font-size:undefined">: Updated the Exposure Command, Vulnerability Management, and Nexpose section to describe authenticated coverage, Linux distro backported coverage, and more.</span></p></li><li><span style="font-size:undefined"><strong>October 27, 2026</strong></span><span style="font-size:undefined">: Updated the Overview to note that CVE-2026-109618 and CVE-2026-109619 were added to the CISA KEV catalog. Updated Rapid7 customers section to reflect added Windows support.</span></li></ul></div></div><section aria-labelledby="blog-post-article-tags-title" class="py-[30px] border-t border-gray-platinum mt-7" data-testid="blog-post-article-tags"><h2 class="mb-[14px] text-black-rich text-[18px] font-normal leading-[110%] tracking-[-0.36px]" id="blog-post-article-tags-title">Article tags</h2></section><footer data-testid="blog-post-footer"></footer> <img src="https://www.rapid7.com/cdn/images/blt65a432ba319f4043/6846abddaf18306debe6cf4d/ETR.webp" width="300" style="width:auto;height:auto;max-width:100%;max-height:450px;object-fit:contain;display:block;border-radius:4px;" loading="lazy" /><div class="blog-content" data-testid="content-widget"><div class="flex flex-col [&amp;_*+h2]:mt-[50px] [&amp;_h2]:mb-[18px] [&amp;_*+h3]:mt-[20px] [&amp;_h3]:mb-[12px] [&amp;_*+h4]:mt-[20px] [&amp;_h4]:mb-[12px] [&amp;_*+h5]:mt-[20px] [&amp;_h5]:mb-[12px] [&amp;_p:not(:last-child)]:mb-[12px] [&amp;_li:not(:last-child)]:mb-[12px] [&amp;_blockquote]:mt-[20px] [&amp;_blockquote]:mb-[20px] [&amp;_blockquote]:pt-[6px] [&amp;_blockquote]:pb-[6px] [&amp;_blockquote]:pl-[18px] [&amp;_blockquote]:text-[32px] [&amp;_blockquote]:border-l-[4px] [&amp;_blockquote]:border-[#D7D5D3] [&amp;_blockquote]:font-medium [&amp;_blockquote]:leading-[120%] [&amp;_pre]:my-[20px] [&amp;_pre&gt;code]:block [&amp;_pre&gt;code]:p-[16px] [&amp;_pre&gt;code]:rounded-[10px] [&amp;_pre&gt;code]:bg-code-block [&amp;_pre&gt;code]:text-code-block [&amp;_pre&gt;code]:overflow-x-auto hover:[&amp;_a]:decoration-primary-sinopia focus:[&amp;_a]:outline-dashed focus:[&amp;_a]:outline-[2px] focus:[&amp;_a]:outline-primary-sinopia visited:[&amp;_a]:text-primary-sinopia hover:[&amp;_a]:text-black-rich focus:[&amp;_a]:text-black-rich [&amp;_p]:text-gray-charcoal [&amp;_a]:text-gray-charcoal [&amp;_ul]:text-gray-charcoal [&amp;_ol]:text-gray-charcoal [&amp;_blockquote]:text-black-rich prose max-w-none"><h2 id="overview" style="direction:ltr">Overview</h2><p style="direction:ltr"><span style="font-size:undefined">On October 21, 2026, the PHP project </span><a data-gtm-cta="announced-security-releases" data-gtm-location="content-rte-link" href="https://www.php.net/archive/2026.php#2026-10-21-5" rel="noopener" target="_blank"><span style="font-size:undefined">announced security releases</span></a><span style="font-size:undefined"> for two critical vulnerabilities in PHP. </span><a data-gtm-cta="cve-2026-109618" data-gtm-location="content-rte-link" href="https://www.cve.org/CVERecord?id=CVE-2026-109618" rel="noopener" target="_blank"><span style="font-size:undefined">CVE-2026-109618</span></a><span style="font-size:undefined"> can corrupt memory during out-of-memory (OOM) handling, while </span><a data-gtm-cta="cve-2026-109619" data-gtm-location="content-rte-link" href="https://www.cve.org/CVERecord?id=CVE-2026-109619" rel="noopener" target="_blank"><span style="font-size:undefined">CVE-2026-109619</span></a><span style="font-size:undefined"> is a use-after-free flaw involving state retained between requests. Both have a CVSSv4 score of 9.2 and both can allow for unauthenticated remote code execution (RCE) with the web worker's privileges.</span></p><div class="max-w-full overflow-x-auto"><table class="mb-5 w-full border-collapse"><thead><tr class="border-t border-gray-200"><th class="border border-gray-400 px-1 py-1 text-left align-top text-gray-900 md:px-4 md:py-2"><p style="direction:ltr"><span style="font-size:undefined"><strong>CVE</strong></span></p></th><th class="border border-gray-400 px-1 py-1 text-left align-top text-gray-900 md:px-4 md:py-2"><p style="direction:ltr"><span style="font-size:undefined"><strong>CVSSv4</strong></span></p></th><th class="border border-gray-400 px-1 py-1 text-left align-top text-gray-900 md:px-4 md:py-2"><p style="direction:ltr"><span style="font-size:undefined"><strong>Description</strong></span></p></th></tr></thead><tbody><tr class="border-t border-gray-200"><td class="border border-gray-400 px-1 py-1 align-top text-[13px] text-gray-700 md:px-4 md:py-2 md:text-sm [&amp;_p]:text-[13px] [&amp;_p]:md:text-sm"><p style="direction:ltr"><a data-gtm-cta="cve-2026-109618" data-gtm-location="content-rte-link" href="https://github.com/php/php-src/security/advisories/GHSA-w8hw-w9fx-j79w" rel="noopener" target="_blank"><span style="font-size:undefined">CVE-2026-109618</span></a></p></td><td class="border border-gray-400 px-1 py-1 align-top text-[13px] text-gray-700 md:px-4 md:py-2 md:text-sm [&amp;_p]:text-[13px] [&amp;_p]:md:text-sm"><p style="direction:ltr"><a data-gtm-cta="9-2-critical" data-gtm-location="content-rte-link" href="https://www.first.org/cvss/calculator/4.0#CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N" rel="noopener" target="_blank"><span style="font-size:undefined">9.2 (Critical)</span></a></p></td><td class="border border-gray-400 px-1 py-1 align-top text-[13px] text-gray-700 md:px-4 md:py-2 md:text-sm [&amp;_p]:text-[13px] [&amp;_p]:md:text-sm"><p style="direction:ltr"><span style="font-size:undefined">RCE via OOM corruption</span></p></td></tr><tr class="border-t border-gray-200"><td class="border border-gray-400 px-1 py-1 align-top text-[13px] text-gray-700 md:px-4 md:py-2 md:text-sm [&amp;_p]:text-[13px] [&amp;_p]:md:text-sm"><p style="direction:ltr"><a data-gtm-cta="cve-2026-109619" data-gtm-location="content-rte-link" href="https://github.com/php/php-src/security/advisories/GHSA-6wmf-4rv5-p3rp" rel="noopener" target="_blank"><span style="font-size:undefined">CVE-2026-109619</span></a></p></td><td class="border border-gray-400 px-1 py-1 align-top text-[13px] text-gray-700 md:px-4 md:py-2 md:text-sm [&amp;_p]:text-[13px] [&amp;_p]:md:text-sm"><p style="direction:ltr"><a data-gtm-cta="9-2-critical" data-gtm-location="content-rte-link" href="https://www.first.org/cvss/calculator/4.0#CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N" rel="noopener" target="_blank"><span style="font-size:undefined">9.2 (Critical)</span></a></p></td><td class="border border-gray-400 px-1 py-1 align-top text-[13px] text-gray-700 md:px-4 md:py-2 md:text-sm [&amp;_p]:text-[13px] [&amp;_p]:md:text-sm"><p style="direction:ltr"><span style="font-size:undefined">RCE via stale global state</span></p></td></tr></tbody></table></div><p style="direction:ltr"><span style="font-size:undefined">All installations serving web requests are at risk, including PHP-FPM, Apache mod_php, php-cgi, FrankenPHP, and LiteSpeed. The vendor considers mod_php the highest risk because exploitation can succeed before any application code runs.</span></p><p style="direction:ltr"><span style="font-size:undefined">The advisories report that a successful RCE exploit was developed during research, including achieving RCE against Apache mod_php and PHP-FPM through different attack paths. As of October 21, 2026, there are multiple indications that this research is being independently reproduced, and a viable exploit is expected to be made public soon.</span></p><p style="direction:ltr"><span style="font-size:undefined">Due to the extremely high deployment of PHP based web applications, exploitation in-the-wild is expected. </span><span style="font-size:undefined"><strong>Rapid7 recommends updating affected installations on an emergency basis, outside of normal patch cycles.</strong></span></p><p><span style="font-size:undefined">Multiple public proof-of-concept (PoC) exploits for CVE-2026-109618 and CVE-2026-109619 are now available. Rapid7 researchers have reviewed these and observe that each demonstrates RCE only against a specific combination of operating system, PHP version, and web server, and none appears to be broadly reliable. Rapid7’s own research supports this. Our attempts so far have produced a working exploit only under narrow lab conditions, and exploitation depends on assumptions that are unlikely to hold on internet-facing instances. We are continuing to investigate approaches that could improve portability, but have not yet developed a reliable, general-purpose exploit. Rapid7 has not observed exploitation in the wild, though there are multiple reports of exploitation attempts, which is expected for a vulnerability of this profile. The situation is evolving quickly, and a more portable exploit technique could emerge at any time. The current difficulty of reliable exploitation should be treated as a window to patch rather than a reason to delay, and Rapid7 continues to recommend updating affected installations on an emergency basis.</span></p><p style="direction:ltr"><span style="font-size:undefined"><strong>Update #1</strong></span><span style="font-size:undefined">: On October 26, 2026, </span><a data-gtm-cta="cve-2026-109618" data-gtm-location="content-rte-link" href="https://www.rapid7.com/db/vulnerabilities/cve-2026-109618/" rel="noopener" target="_blank"><span style="font-size:undefined">CVE-2026-109618</span></a><span style="font-size:undefined"> and </span><a data-gtm-cta="cve-2026-109619" data-gtm-location="content-rte-link" href="https://www.rapid7.com/db/vulnerabilities/cve-2026-109619/" rel="noopener" target="_blank"><span style="font-size:undefined">CVE-2026-109619</span></a><span style="font-size:undefined"> were </span><a data-gtm-cta="added-to-the-u-s-cybersecurity-and-infrastructure-security-agency-s-cisa-list-of-known-exploited-vulnerabilities-kev" data-gtm-location="content-rte-link" href="https://www.cisa.gov/known-exploited-vulnerabilities-catalog" rel="noopener" target="_blank"><span style="font-size:undefined">added to the U.S. Cybersecurity and Infrastructure Security Agency's (CISA) list of known exploited vulnerabilities (KEV)</span></a><span style="font-size:undefined">, based on evidence of active exploitation. CISA set the remediation due date to October 29, 2026, for affected Federal Civilian Executive Branch agencies and directs them to follow the associated </span><a data-gtm-cta="bod-26-04-forensic-triage-requirements" data-gtm-location="content-rte-link" href="https://www.cisa.gov/news-events/directives/bod-26-04-implementation-guidance-prioritizing-security-updates-based-risk" rel="noopener" target="_blank"><span style="font-size:undefined">BOD 26-04 forensic triage requirements</span></a><span style="font-size:undefined">. Rapid7 continues to recommend updating affected installations on an emergency basis and investigating for prior compromise.</span></p><h2 id="technical-overview" style="direction:ltr">Technical overview</h2><h3 style="direction:ltr"><span style="color:rgb(67, 67, 67)">CVE-2026-109618: Memory corruption during OOM handling</span></h3><p style="direction:ltr"><span style="font-size:undefined">According to the </span><a data-gtm-cta="oom-advisory" data-gtm-location="content-rte-link" href="https://github.com/php/php-src/security/advisories/GHSA-w8hw-w9fx-j79w" rel="noopener" target="_blank"><span style="font-size:undefined">OOM advisory</span></a><span style="font-size:undefined">, PHP can abruptly abandon request processing when a memory allocation fails. If internal request data is only partly initialized, that exit can leave invalid data for request cleanup to use. Crafted multipart requests, used for forms and file uploads, can exhaust memory even when their size appears to meet PHP's configured limits. Application operations that allocate memory in response to attacker input can also trigger OOM.</span></p><p style="direction:ltr"><span style="font-size:undefined">Apache mod_php runs cleanup even when request startup fails, enabling the demonstrated attack before application code executes. The advisory reports RCE over HTTP with default PHP input and memory limits, including multi-worker prefork deployments. PHP-FPM terminates a worker when startup fails, preventing that particular sequence. Source analysis supports FPM susceptibility after successful startup, but the advisory reports no complete FPM exploit for this CVE. Exploit portability and reliability depend on the PHP build, extensions, frontend behavior, and memory layout.</span></p><h3 style="direction:ltr"><span style="color:rgb(67, 67, 67)">CVE-2026-109619: Use after free across requests</span></h3><p style="direction:ltr"><span style="font-size:undefined">PHP can reuse a worker process to handle multiple HTTP requests. The </span><a data-gtm-cta="stale-state-advisory" data-gtm-location="content-rte-link" href="https://github.com/php/php-src/security/advisories/GHSA-6wmf-4rv5-p3rp" rel="noopener" target="_blank"><span style="font-size:undefined">stale-state advisory</span></a><span style="font-size:undefined"> describes internal state that still points to memory freed at the end of an earlier request. A later request handled by the same worker can access that stale value before normal initialization clears it. Fatal errors, including memory exhaustion and execution timeouts, can interrupt state cleanup; some nonfatal diagnostics during shutdown can also repopulate error state after it was reset.</span></p><p style="direction:ltr"><span style="font-size:undefined">The advisory confirms RCE against mod_php through PHP 8.5's fatal error backtrace feature, when </span><span style="color:rgb(24, 128, 56);font-size:undefined">fatal_error_backtraces</span><span style="font-size:undefined"> is enabled (the default), where a later initialization diagnostic accesses stale backtrace state. It also confirms session lifecycle RCE against mod_php and FPM. Session upload progress, PHP's upload-tracking feature, is enabled by default and can act as an early consumer of stale session or decoder state before normal initialization; reaching this consumer does not itself require an application call to </span><span style="color:rgb(24, 128, 56);font-size:undefined">session_start()</span><span style="font-size:undefined">.</span></p><p style="direction:ltr"><span style="font-size:undefined">The validated FPM session path requires a suitable application operation to leave state behind after successful startup, followed by a fatal error and another request that consumes the stale state through session upload progress. Both requests must reach the same worker. Multiple workers and worker recycling can reduce success per request, but do not eliminate the condition.</span></p><h2 id="mitigation-guidance" style="direction:ltr">Mitigation guidance</h2><p style="direction:ltr"><span style="font-size:undefined">PHP has released fixes for both vulnerabilities. Organizations should prioritize updating to the appropriate fixed release or a vendor package containing both complete patches. The PHP advisories list these affected and fixed versions:</span></p><ul><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined">PHP 8.2 releases before 8.2.35: Update to 8.2.35</span></p></li><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined">PHP 8.3 releases before 8.3.36: Update to 8.3.36</span></p></li><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined">PHP 8.4 releases before 8.4.27: Update to 8.4.27</span></p></li><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined">PHP 8.5 releases before 8.5.12: Update to 8.5.12</span></p></li></ul><p style="direction:ltr"><span style="font-size:undefined">Linux distributions and long-term support vendors received patches in advance; check your vendor for updated packages. PHP 8.1 and older no longer receive routine upstream updates. For this incident, PHP has supplied limited source backports for </span><a data-gtm-cta="php-7-4" data-gtm-location="content-rte-link" href="https://github.com/php/php-src/tree/PHP-7.4-CVE-2026-109618-109619" rel="noopener" target="_blank"><span style="font-size:undefined">PHP 7.4</span></a><span style="font-size:undefined">, </span><a data-gtm-cta="8-0" data-gtm-location="content-rte-link" href="https://github.com/php/php-src/tree/PHP-8.0-CVE-2026-109618-109619" rel="noopener" target="_blank"><span style="font-size:undefined">8.0</span></a><span style="font-size:undefined">, and </span><a data-gtm-cta="8-1" data-gtm-location="content-rte-link" href="https://github.com/php/php-src/tree/PHP-8.1-CVE-2026-109618-109619" rel="noopener" target="_blank"><span style="font-size:undefined">8.1</span></a><span style="font-size:undefined">. Organizations running older branches should obtain a vendor fix, use the source backports described in the </span><a data-gtm-cta="php-announcement" data-gtm-location="content-rte-link" href="https://www.php.net/archive/2026.php#2026-10-21-5" rel="noopener" target="_blank"><span style="font-size:undefined">PHP announcement</span></a><span style="font-size:undefined">, or upgrade to a supported version. PHP also warns that </span><span style="color:rgb(24, 128, 56);font-size:undefined">rpms.remirepo.net</span><span style="font-size:undefined"> will not have updates on October 21, 2026, and urges its users to switch to distribution packages or build from source.</span></p><p style="direction:ltr"><span style="font-size:undefined"><strong>Note that an update containing both complete fixes is the only complete remediation.</strong></span><span style="font-size:undefined"> </span></p><p style="direction:ltr"><span style="font-size:undefined">PHP's temporary configuration measures </span><span style="font-size:undefined"><em>reduce </em></span><span style="font-size:undefined">exposure to specific paths and require careful deployment:</span></p><ul><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined">For the OOM issue, enforce </span><span style="color:rgb(24, 128, 56);font-size:undefined">memory_limit=-1</span><span style="font-size:undefined"> administratively, such as through FPM pool or Apache configuration that applications cannot override. This disables PHP's per-request memory cap and removes the predictable PHP-limit failure used by the confirmed exploit. An underlying allocation failure can still reach the vulnerable path. Restart every worker and verify that no pool, directory, or application setting restores a finite limit.</span></p></li><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined">For the session lifecycle path, set </span><span style="color:rgb(24, 128, 56);font-size:undefined">session.upload_progress.enabled=0</span><span style="font-size:undefined"> in </span><span style="color:rgb(24, 128, 56);font-size:undefined">php.ini</span><span style="font-size:undefined">, an FPM pool, or server configuration that applies before request parsing, then restart every worker. Application-level </span><span style="color:rgb(24, 128, 56);font-size:undefined">ini_set()</span><span style="font-size:undefined"> and FPM </span><span style="color:rgb(24, 128, 56);font-size:undefined">.user.ini</span><span style="font-size:undefined"> are too late. This addresses the confirmed session paths only.</span></p></li><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined">On PHP 8.5, set </span><span style="color:rgb(24, 128, 56);font-size:undefined">fatal_error_backtraces=0</span><span style="font-size:undefined"> administratively and restart every worker. This addresses the confirmed fatal backtrace path only; other retained state remains a concern.</span></p></li></ul><p style="direction:ltr"><span style="font-size:undefined">Disabling PHP's memory cap makes independent resource controls particularly important. PHP recommends </span><span style="color:rgb(24, 128, 56);font-size:undefined">post_max_size=8M</span><span style="font-size:undefined"> where uploads are unnecessary or </span><span style="color:rgb(24, 128, 56);font-size:undefined">post_max_size=32M</span><span style="font-size:undefined"> where they are needed, with </span><span style="color:rgb(24, 128, 56);font-size:undefined">upload_max_filesize</span><span style="font-size:undefined"> below that limit. At the frontend, bound decoded request size, input and multipart counts, headers per part, and nesting depth, including requests without a usable </span><span style="color:rgb(24, 128, 56);font-size:undefined">Content-Length</span><span style="font-size:undefined">. If the application does not use multipart data, block those requests before they reach PHP.</span></p><p style="direction:ltr"><span style="font-size:undefined">Container or cgroup memory limits are also incomplete: allocation failures remain possible, and enforcement can kill the master process and all workers unless workers are isolated. Do not substitute </span><span style="color:rgb(24, 128, 56);font-size:undefined">RLIMIT_AS</span><span style="font-size:undefined"> or </span><span style="color:rgb(24, 128, 56);font-size:undefined">RLIMIT_DATA</span><span style="font-size:undefined">, which can trigger the vulnerable allocation-failure path.</span></p><p style="direction:ltr"><span style="font-size:undefined">For stale-state exposure, correct invalid or deprecated per-request settings and attacker-reachable fatal errors or timeouts. Hiding diagnostics through </span><span style="color:rgb(24, 128, 56);font-size:undefined">error_reporting</span><span style="font-size:undefined">, </span><span style="color:rgb(24, 128, 56);font-size:undefined">display_errors</span><span style="font-size:undefined">, </span><span style="color:rgb(24, 128, 56);font-size:undefined">log_errors</span><span style="font-size:undefined">, or </span><span style="color:rgb(24, 128, 56);font-size:undefined">@</span><span style="font-size:undefined"> does not prevent stale-state access. The absence of relevant log entries is not proof that an installation is safe.</span></p><p style="direction:ltr"><span style="font-size:undefined">For the latest mitigation guidance, refer to PHP's </span><a data-gtm-cta="oom-corruption-advisory" data-gtm-location="content-rte-link" href="https://github.com/php/php-src/security/advisories/GHSA-w8hw-w9fx-j79w" rel="noopener noreferrer" target="_blank"><span style="font-size:undefined">OOM corruption advisory</span></a><span style="font-size:undefined"> and </span><a data-gtm-cta="stale-global-state-advisory" data-gtm-location="content-rte-link" href="https://github.com/php/php-src/security/advisories/GHSA-6wmf-4rv5-p3rp" rel="noopener noreferrer" target="_blank"><span style="font-size:undefined">stale global state advisory</span></a><span style="font-size:undefined">.</span></p><h2 id="rapid7-customers" style="direction:ltr">Rapid7 customers</h2><p style="direction:ltr"><span style="font-size:undefined">To learn how to use Rapid7 capabilities to find systems affected by these vulnerabilities and for answers to common questions, read the </span><a data-gtm-cta="php2shell-documentation" data-gtm-location="content-rte-link" href="https://docs.rapid7.com/insightvm/php2shell/" rel="noopener noreferrer" target="_blank"><span style="font-size:undefined">PHP2Shell documentation</span></a><span style="font-size:undefined">.</span></p><p>For Rapid7 Customers with questions regarding Rapid7 products and their usage of PHP please consult <a data-gtm-cta="this-page" data-gtm-location="content-rte-link" href="/trust/advisories/php-cve-2026-109618-cve-2026-109619/" rel="noopener noreferrer" target="_blank"><span style="font-size:undefined">this page.</span></a><span style="font-size:undefined"></span></p><h3 style="direction:ltr"><span style="color:rgb(67, 67, 67)">Exposure Command, Vulnerability Management, and Nexpose</span></h3><p style="direction:ltr"><span style="font-size:undefined">Exposure Command, Vulnerability Management, and Nexpose customers can assess exposure to CVE-2026-109618 and CVE-2026-109619 with remote unauthenticated vulnerability checks, available in a dedicated release that followed the regular October 21 content release.</span></p><p style="direction:ltr"><span style="font-size:undefined">Rapid7 has also released authenticated scan checks for both the Scan Engine and the Agent for CVE-2026-109618 and CVE-2026-109619 as part of the October 22 content release.</span></p><p style="direction:ltr"><span style="font-size:undefined">Authenticated, package-based checks are now available for a variety of Linux distributions.  These checks evaluate installed distribution packages, so they can recognize backported fixes that keep the original upstream PHP version number. Run an authenticated scan with this content release to use them. For the full list of checks and supported distribution versions, read Rapid7’s</span><a data-gtm-cta="php2shell-documentation" data-gtm-location="content-rte-link" href="https://docs.rapid7.com/insightvm/php2shell/#31-exposure-command-vulnerability-management-insightvm-and-nexpose" rel="noopener" target="_blank"><span style="font-size:undefined"> PHP2Shell documentation</span></a><span style="font-size:undefined">, where package-based coverage for other distributions will be added as their fixes are published.</span></p><p style="direction:ltr"><span style="font-size:undefined">In a dedicated October 23 content release following the regular release, Rapid7 has released coverage for CVE-2026-115560, </span><a data-gtm-cta="published-on-october-23" data-gtm-location="content-rte-link" href="https://www.php.net/archive/2026.php#2026-10-23-1" rel="noopener noreferrer" target="_blank"><span style="font-size:undefined">published on October 23</span></a><span style="font-size:undefined"> by the PHP Foundation. A mitigation technique is available, but no patch has yet been published. Exploitation of CVE-2026-115560 relies on non-standard configuration.</span></p><p><span style="font-size:undefined"><em>Current</em></span><span style="font-size:undefined"> </span><span style="font-size:undefined"><em>scope for authenticated coverage: Windows, macOS and Linux. Remote unauthenticated coverage provides coverage regardless of web-server OS.</em></span></p><h3 style="direction:ltr"><span style="color:rgb(67, 67, 67)">Velociraptor</span></h3><p style="direction:ltr"><span style="font-size:undefined">A Velociraptor Artifact </span><a data-gtm-cta="generic-applications-phpinventory" data-gtm-location="content-rte-link" href="https://docs.velociraptor.app/exchange/artifacts/pages/phpinventory/" rel="noopener noreferrer" target="_blank"><span style="font-size:undefined">Generic.Applications.PHPInventory</span></a><span style="font-size:undefined"> is available to inventory PHP installations on Windows, Linux and macOS for remediation scoping. This artifact allows for the collection of package versions, common binary and module paths, and running PHP processes.</span></p><h2 id="updates" style="direction:ltr">Updates</h2><ul><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined"><strong>October 21, 2026:</strong></span><span style="font-size:undefined"> Initial publication.</span></p></li><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined"><strong>October 21, 2026:</strong></span><span style="font-size:undefined"> Updated to reflect availability of vulnerability checks.</span></p></li><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined"><strong>October 22, 2026</strong></span><span style="font-size:undefined">: Updated the Overview section to include Rapid7’s findings on a PoC and the Rapid7 Customers section to include a link to the FAQ documentation.</span></p></li><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined"><strong>October 23, 2026</strong></span><span style="font-size:undefined">: Updated the Exposure Command, Vulnerability Management, and Nexpose section to describe authenticated coverage, Linux distro backported coverage, and more.</span></p></li><li><span style="font-size:undefined"><strong>October 27, 2026</strong></span><span style="font-size:undefined">: Updated the Overview to note that CVE-2026-109618 and CVE-2026-109619 were added to the CISA KEV catalog. Updated Rapid7 customers section to reflect added Windows support.</span></li></ul></div></div><section aria-labelledby="blog-post-article-tags-title" class="py-[30px] border-t border-gray-platinum mt-7" data-testid="blog-post-article-tags"><h2 class="mb-[14px] text-black-rich text-[18px] font-normal leading-[110%] tracking-[-0.36px]" id="blog-post-article-tags-title">Article tags</h2></section><footer data-testid="blog-post-footer"></footer> https://www.rapid7.com/blog/post/etr-cve-2026-109618-and-cve-2026-109619-critical-unauthenticated-remote-code-execution-in-php cyber Wed, 21 Oct 2026 15:22:52 +0000 Metasploit Wrap Up: Langflow, MongoDB, and More https://www.rapid7.com/blog/post/pt-metasploit-wrap-up-langflow-mongodb-and-more <img src="https://www.rapid7.com/cdn/images/blt0d50271a40a5f14f/6849ab419621d9f3824d5017/metasploit-sky.png" width="300" style="width:auto;height:auto;max-width:100%;max-height:450px;object-fit:contain;display:block;border-radius:4px;" loading="lazy" /><div class="blog-content" data-testid="content-widget"><div class="flex flex-col [&amp;_*+h2]:mt-[50px] [&amp;_h2]:mb-[18px] [&amp;_*+h3]:mt-[20px] [&amp;_h3]:mb-[12px] [&amp;_*+h4]:mt-[20px] [&amp;_h4]:mb-[12px] [&amp;_*+h5]:mt-[20px] [&amp;_h5]:mb-[12px] [&amp;_p:not(:last-child)]:mb-[12px] [&amp;_li:not(:last-child)]:mb-[12px] [&amp;_blockquote]:mt-[20px] [&amp;_blockquote]:mb-[20px] [&amp;_blockquote]:pt-[6px] [&amp;_blockquote]:pb-[6px] [&amp;_blockquote]:pl-[18px] [&amp;_blockquote]:text-[32px] [&amp;_blockquote]:border-l-[4px] [&amp;_blockquote]:border-[#D7D5D3] [&amp;_blockquote]:font-medium [&amp;_blockquote]:leading-[120%] [&amp;_pre]:my-[20px] [&amp;_pre&gt;code]:block [&amp;_pre&gt;code]:p-[16px] [&amp;_pre&gt;code]:rounded-[10px] [&amp;_pre&gt;code]:bg-code-block [&amp;_pre&gt;code]:text-code-block [&amp;_pre&gt;code]:overflow-x-auto hover:[&amp;_a]:decoration-primary-sinopia focus:[&amp;_a]:outline-dashed focus:[&amp;_a]:outline-[2px] focus:[&amp;_a]:outline-primary-sinopia visited:[&amp;_a]:text-primary-sinopia hover:[&amp;_a]:text-black-rich focus:[&amp;_a]:text-black-rich [&amp;_p]:text-gray-charcoal [&amp;_a]:text-gray-charcoal [&amp;_ul]:text-gray-charcoal [&amp;_ol]:text-gray-charcoal [&amp;_blockquote]:text-black-rich prose max-w-none"><p>This release adds multiple new modules, and 6 of those modules point at a single target: <a data-gtm-cta="langflow" data-gtm-location="content-rte-link" href="https://www.langflow.org/" rel="noopener" target="_blank">Langflow</a>, the open-source LLM workflow builder. Together they cover an authentication bypass (CVE-2026-93680), 3 unauthenticated remote code execution paths (CVE-2026-0768, CVE-2026-0769, and CVE-2026-10134), and 2 authenticated code execution flaws (CVE-2026-7873 and CVE-2026-93674), spanning Langflow releases from 1.0.0 through 1.11.4. Thanks to the work of <a data-gtm-cta="rmhowe425" data-gtm-location="content-rte-link" href="https://github.com/rmhowe425" rel="noopener" target="_blank">rmhowe425</a>, with research credit to Peter Girnus and n0k0. Beyond Langflow, open source contributor <a data-gtm-cta="kmkz" data-gtm-location="content-rte-link" href="https://github.com/kmkz" rel="noopener" target="_blank">kmkz</a> contributed a pre-auth RCE chain against OpenCTI. MongoDB coverage has also been expanded with 3 new auxiliary modules plus an Apache Solr version scanner thanks to the work of community member <a data-gtm-cta="h00die" data-gtm-location="content-rte-link" href="https://github.com/h00die" rel="noopener" target="_blank">h00die</a>.</p><h2 id="new-module-content-11">New Module Content (11)</h2><h3>4gaBoards Mass User Information Disclosure (CVE-2026-53959)</h3><p>Authors: Balachandar Gowrisankar, de3erve (GitHub), and lucquach (GitHub)</p><p>Type: Auxiliary</p><p>Pull request: <a data-gtm-cta="21831" data-gtm-location="content-rte-link" href="https://github.com/rapid7/metasploit-framework/pull/21831" rel="noopener" target="_blank">#21831</a> contributed by <a data-gtm-cta="anirbala98" data-gtm-location="content-rte-link" href="https://github.com/anirbala98" rel="noopener" target="_blank">anirbala98</a></p><p>Path: gather/4gaboards_users_info_disclosure_cve_2026_53959</p><p>CVE reference: <a data-gtm-cta="cve-2026-53959" data-gtm-location="content-rte-link" href="https://www.rapid7.com/db/vulnerabilities/cve-2026-53959/" rel="noopener" target="_blank">CVE-2026-53959</a></p><p>Description: Adds a module that exploits CVE-2026-53959, a broken access control vulnerability allowing mass user information disclosure in 4gaBoards versions 3.3.8 and below. The application's /api/users REST endpoint lets any authenticated user retrieve a full, unpaginated list of every user in the system. Missing authorization checks allow an attacker to retrieve the email, phone, organization, name, and SSO email addresses (ssoGoogleEmail, ssoGithubEmail, and others) of every user.</p><h3>Langflow AI Authentication Bypass (CVE-2026-93680)</h3><p>Author: Richard Howe</p><p>Type: Auxiliary</p><p>Pull request: <a data-gtm-cta="21942" data-gtm-location="content-rte-link" href="https://github.com/rapid7/metasploit-framework/pull/21942" rel="noopener" target="_blank">#21942</a> contributed by <a data-gtm-cta="rmhowe425" data-gtm-location="content-rte-link" href="https://github.com/rmhowe425" rel="noopener" target="_blank">rmhowe425</a></p><p>Path: gather/langflow_auth_bypass_cve_2026_93680</p><p>CVE reference: <a data-gtm-cta="cve-2026-93680" data-gtm-location="content-rte-link" href="https://www.rapid7.com/db/vulnerabilities/cve-2026-93680/" rel="noopener" target="_blank">CVE-2026-93680</a></p><p>Description: Adds a new auxiliary module that leverages CVE-2026-93680, an authentication bypass vulnerability impacting Langflow versions 1.5.0 through 1.11.4.</p><h3>Apache Solr Version Scanner</h3><p>Author: h00die</p><p>Type: Auxiliary</p><p>Pull request: <a data-gtm-cta="22006" data-gtm-location="content-rte-link" href="https://github.com/rapid7/metasploit-framework/pull/22006" rel="noopener" target="_blank">#22006</a> contributed by <a data-gtm-cta="h00die" data-gtm-location="content-rte-link" href="https://github.com/h00die" rel="noopener" target="_blank">h00die</a></p><p>Path: scanner/http/apache_solr_version</p><p>Description: Adds a new scanner that identifies Apache Solr and reports its version.</p><h3>MongoDB Auxiliary Module Suite</h3><p>Authors: h00die and prithvee07</p><p>Type: Auxiliary</p><p>Pull request: <a data-gtm-cta="21785" data-gtm-location="content-rte-link" href="https://github.com/rapid7/metasploit-framework/pull/21785" rel="noopener" target="_blank">#21785</a> contributed by <a data-gtm-cta="h00die" data-gtm-location="content-rte-link" href="https://github.com/h00die" rel="noopener" target="_blank">h00die</a></p><p>Description: Adds the mongodb_version, mongodb_schemadump, and mongodb_hashdump auxiliary modules, and updates the existing mongodb_login module.</p><p>This PR adds the following modules:</p><ul><li>scanner/mongodb/mongodb_hashdump</li><li>scanner/mongodb/mongodb_schemadump</li><li>scanner/mongodb/mongodb_version</li></ul><h3>OpenCTI Authentication Bypass and Notifier EJS Remote Code Execution</h3><p>Author: Jean-Marie Bourbon</p><p>Type: Exploit</p><p>Pull request: <a data-gtm-cta="21826" data-gtm-location="content-rte-link" href="https://github.com/rapid7/metasploit-framework/pull/21826" rel="noopener" target="_blank">#21826</a> contributed by <a data-gtm-cta="kmkz" data-gtm-location="content-rte-link" href="https://github.com/kmkz" rel="noopener" target="_blank">kmkz</a></p><p>Path: linux/http/opencti_notifier_rce</p><p>CVE references: <a data-gtm-cta="cve-2026-27960" data-gtm-location="content-rte-link" href="https://www.rapid7.com/db/vulnerabilities/cve-2026-27960/" rel="noopener" target="_blank">CVE-2026-27960</a> and <a data-gtm-cta="cve-2026-39980" data-gtm-location="content-rte-link" href="https://www.rapid7.com/db/vulnerabilities/cve-2026-39980/" rel="noopener" target="_blank">CVE-2026-39980</a></p><p>Description: Adds a new exploit module for OpenCTI that chains CVE-2026-27960 and CVE-2026-39980 to achieve unauthenticated remote command execution.</p><h3>Grafana SQL Expressions DuckDB Command Injection (CVE-2024-9264)</h3><p>Author: Özcan Ersan (@ozcanpng)</p><p>Type: Exploit</p><p>Pull request: <a data-gtm-cta="21901" data-gtm-location="content-rte-link" href="https://github.com/rapid7/metasploit-framework/pull/21901" rel="noopener" target="_blank">#21901</a> contributed by <a data-gtm-cta="ozcanpng" data-gtm-location="content-rte-link" href="https://github.com/ozcanpng" rel="noopener" target="_blank">ozcanpng</a></p><p>Path: multi/http/grafana_sql_expressions_rce_cve_2024_9264</p><p>CVE reference: <a data-gtm-cta="cve-2024-9264" data-gtm-location="content-rte-link" href="https://www.rapid7.com/db/vulnerabilities/cve-2024-9264/" rel="noopener" target="_blank">CVE-2024-9264</a></p><p>Description: Adds an authenticated exploit module for CVE-2024-9264, a DuckDB command injection in Grafana SQL Expressions.</p><h3>Langflow AI Code Validation Authenticated RCE (CVE-2026-7873)</h3><p>Authors: Richard Howe and n0k0</p><p>Type: Exploit</p><p>Pull request: <a data-gtm-cta="21877" data-gtm-location="content-rte-link" href="https://github.com/rapid7/metasploit-framework/pull/21877" rel="noopener" target="_blank">#21877</a> contributed by <a data-gtm-cta="rmhowe425" data-gtm-location="content-rte-link" href="https://github.com/rmhowe425" rel="noopener" target="_blank">rmhowe425</a></p><p>Path: multi/http/langflow_auth_rce_cve_2026_7873</p><p>CVE reference: <a data-gtm-cta="cve-2026-7873" data-gtm-location="content-rte-link" href="https://www.rapid7.com/db/vulnerabilities/cve-2026-7873/" rel="noopener" target="_blank">CVE-2026-7873</a></p><p>Description: Adds a new exploit module that detects and exploits CVE-2026-7873, an authenticated RCE vulnerability impacting Langflow versions 1.0.0 through 1.10.0.</p><h3>Langflow AI Authenticated Command Injection (CVE-2026-93674)</h3><p>Author: Richard Howe</p><p>Type: Exploit</p><p>Pull request: <a data-gtm-cta="21939" data-gtm-location="content-rte-link" href="https://github.com/rapid7/metasploit-framework/pull/21939" rel="noopener" target="_blank">#21939</a> contributed by <a data-gtm-cta="rmhowe425" data-gtm-location="content-rte-link" href="https://github.com/rmhowe425" rel="noopener" target="_blank">rmhowe425</a></p><p>Path: multi/http/langflow_auth_command_injection_cve_2026_93674</p><p>CVE reference: <a data-gtm-cta="cve-2026-93674" data-gtm-location="content-rte-link" href="https://www.rapid7.com/db/vulnerabilities/cve-2026-93674/" rel="noopener" target="_blank">CVE-2026-93674</a></p><p>Description: Adds a new exploit module that detects and exploits CVE-2026-93674, an authenticated blind command injection vulnerability impacting Langflow versions 1.5.0 through 1.9.0.</p><h3>Langflow AI Validate Code Injection Unauth RCE (CVE-2026-0768)</h3><p>Authors: Peter Girnus and Richard Howe</p><p>Type: Exploit</p><p>Pull request: <a data-gtm-cta="21864" data-gtm-location="content-rte-link" href="https://github.com/rapid7/metasploit-framework/pull/21864" rel="noopener" target="_blank">#21864</a> contributed by <a data-gtm-cta="rmhowe425" data-gtm-location="content-rte-link" href="https://github.com/rmhowe425" rel="noopener" target="_blank">rmhowe425</a></p><p>Path: multi/http/langflow_unauth_rce_cve_2026_0768</p><p>CVE reference: <a data-gtm-cta="cve-2026-0768" data-gtm-location="content-rte-link" href="https://www.rapid7.com/db/vulnerabilities/cve-2026-0768/" rel="noopener" target="_blank">CVE-2026-0768</a></p><p>Description: Adds a new exploit module that detects and exploits CVE-2026-0768, an unauthenticated remote code execution vulnerability impacting Langflow version 1.4.2.</p><h3>Langflow AI Custom Component Eval Injection Unauth RCE (CVE-2026-0769)</h3><p>Authors: Peter Girnus and Richard Howe</p><p>Type: Exploit</p><p>Pull request: <a data-gtm-cta="21867" data-gtm-location="content-rte-link" href="https://github.com/rapid7/metasploit-framework/pull/21867" rel="noopener" target="_blank">#21867</a> contributed by <a data-gtm-cta="rmhowe425" data-gtm-location="content-rte-link" href="https://github.com/rmhowe425" rel="noopener" target="_blank">rmhowe425</a></p><p>Path: multi/http/langflow_unauth_rce_cve_2026_0769</p><p>CVE reference: <a data-gtm-cta="cve-2026-0769" data-gtm-location="content-rte-link" href="https://www.rapid7.com/db/vulnerabilities/cve-2026-0769/" rel="noopener" target="_blank">CVE-2026-0769</a></p><p>Description: Adds a new exploit module that detects and exploits CVE-2026-0769, an unauthenticated RCE vulnerability impacting Langflow version 1.3.2.</p><h3>Langflow AI Public Flow Build Unauth RCE (CVE-2026-10134)</h3><p>Author: Richard Howe</p><p>Type: Exploit</p><p>Pull request: <a data-gtm-cta="21875" data-gtm-location="content-rte-link" href="https://github.com/rapid7/metasploit-framework/pull/21875" rel="noopener" target="_blank">#21875</a> contributed by <a data-gtm-cta="rmhowe425" data-gtm-location="content-rte-link" href="https://github.com/rmhowe425" rel="noopener" target="_blank">rmhowe425</a></p><p>Path: multi/http/langflow_unauth_rce_cve_2026_10134</p><p>CVE reference: <a data-gtm-cta="cve-2026-10134" data-gtm-location="content-rte-link" href="https://www.rapid7.com/db/vulnerabilities/cve-2026-10134/" rel="noopener" target="_blank">CVE-2026-10134</a></p><p>Description: Adds a new exploit module that detects and exploits CVE-2026-10134, an unauthenticated remote code execution vulnerability impacting Langflow versions 1.0.0 through 1.9.3.</p><h2 id="enhancements-and-features-3">Enhancements and Features (3)</h2><ul><li><a data-gtm-cta="20944" data-gtm-location="content-rte-link" href="https://github.com/rapid7/metasploit-framework/pull/20944" rel="noopener" target="_blank">#20944</a> from <a data-gtm-cta="nayeraneru" data-gtm-location="content-rte-link" href="https://github.com/Nayeraneru" rel="noopener" target="_blank">Nayeraneru</a> - Adds specs to ensure the mkdir post API behaves consistently.</li><li><a data-gtm-cta="21915" data-gtm-location="content-rte-link" href="https://github.com/rapid7/metasploit-framework/pull/21915" rel="noopener" target="_blank">#21915</a> from <a data-gtm-cta="vjonline" data-gtm-location="content-rte-link" href="https://github.com/vjonline" rel="noopener" target="_blank">vjonline</a> - Consolidates reverse handler bind address handling into a shared Msf::Handler::Reverse::Bind module.</li><li><a data-gtm-cta="22041" data-gtm-location="content-rte-link" href="https://github.com/rapid7/metasploit-framework/pull/22041" rel="noopener" target="_blank">#22041</a> from <a data-gtm-cta="adfoster-r7" data-gtm-location="content-rte-link" href="https://github.com/adfoster-r7" rel="noopener" target="_blank">adfoster-r7</a> - Adds multiple Meterpreter improvements. The Windows Meterpreter has a major reflective-loader/IAT-import reduction, as well as improved WinAPI/error handling, and MinGW/CMake build refinements. The Python Meterpreter has improvements to Windows stat support and FreeBSD process listing. The PHP Meterpreter resolves PHP UDP channel read bugs. All Meterpreters now align on recursive mkdir -p capabilities.</li></ul><h2 id="bugs-fixed-6">Bugs Fixed (6)</h2><ul><li><a data-gtm-cta="21490" data-gtm-location="content-rte-link" href="https://github.com/rapid7/metasploit-framework/pull/21490" rel="noopener" target="_blank">#21490</a> from <a data-gtm-cta="h00die" data-gtm-location="content-rte-link" href="https://github.com/h00die" rel="noopener" target="_blank">h00die</a> - Fixes a crash when fingerprinting HTTP services that contained null bytes.</li><li><a data-gtm-cta="21979" data-gtm-location="content-rte-link" href="https://github.com/rapid7/metasploit-framework/pull/21979" rel="noopener" target="_blank">#21979</a> from <a data-gtm-cta="adfoster-r7" data-gtm-location="content-rte-link" href="https://github.com/adfoster-r7" rel="noopener" target="_blank">adfoster-r7</a> - Adds additional HTTP redirect checks to multiple modules.</li><li><a data-gtm-cta="21994" data-gtm-location="content-rte-link" href="https://github.com/rapid7/metasploit-framework/pull/21994" rel="noopener" target="_blank">#21994</a> from <a data-gtm-cta="adfoster-r7" data-gtm-location="content-rte-link" href="https://github.com/adfoster-r7" rel="noopener" target="_blank">adfoster-r7</a> - Adds additional FTP PASV IP validation checks to multiple modules.</li><li><a data-gtm-cta="22001" data-gtm-location="content-rte-link" href="https://github.com/rapid7/metasploit-framework/pull/22001" rel="noopener" target="_blank">#22001</a> from <a data-gtm-cta="suryanshuv14" data-gtm-location="content-rte-link" href="https://github.com/Suryanshuv14" rel="noopener" target="_blank">Suryanshuv14</a> - Fixes DirtyClone module metadata and a typo.</li><li><a data-gtm-cta="22002" data-gtm-location="content-rte-link" href="https://github.com/rapid7/metasploit-framework/pull/22002" rel="noopener" target="_blank">#22002</a> from <a data-gtm-cta="mjatin2007" data-gtm-location="content-rte-link" href="https://github.com/mjatin2007" rel="noopener" target="_blank">mjatin2007</a> - Fixes leaking TCP sockets and file descriptors when the MSSQL Login Scanner module or the MSSQL session type is used.</li><li><a data-gtm-cta="22014" data-gtm-location="content-rte-link" href="https://github.com/rapid7/metasploit-framework/pull/22014" rel="noopener" target="_blank">#22014</a> from <a data-gtm-cta="cgranleese-r7" data-gtm-location="content-rte-link" href="https://github.com/cgranleese-r7" rel="noopener" target="_blank">cgranleese-r7</a> - Fixes false positives in the detection logic of the auxiliary/gather/hikvision_info_disclosure_cve_2017_7921, auxiliary/gather/magento_xxe_cve_2024_34102, and auxiliary/scanner/http/elasticsearch_traversal modules.</li></ul><h2 id="documentation">Documentation</h2><p>You can find the latest Metasploit documentation on our docsite at <a data-gtm-cta="docs-metasploit-com" data-gtm-location="content-rte-link" href="https://docs.metasploit.com/" rel="noopener" target="_blank">docs.metasploit.com</a>.</p><h2 id="get-it">Get it</h2><p>As always, you can update to the latest Metasploit Framework with msfupdate and you can get more details on the changes since the last blog post from GitHub:</p><ul><li><a data-gtm-cta="pull-requests-6-5-6-6-5-8" data-gtm-location="content-rte-link" href="https://github.com/rapid7/metasploit-framework/pulls?q=is:pr+merged:" rel="noopener" target="_blank">Pull Requests 6.5.6…6.5.8</a></li><li><a data-gtm-cta="full-diff-6-5-6-6-5-8" data-gtm-location="content-rte-link" href="https://github.com/rapid7/metasploit-framework/compare/6.5.6%E2%80%A66.5.8" rel="noopener" target="_blank">Full diff 6.5.6…6.5.8</a></li></ul><p>If you are a git user, you can clone the <a data-gtm-cta="metasploit-framework-repo" data-gtm-location="content-rte-link" href="https://github.com/rapid7/metasploit-framework" rel="noopener" target="_blank">Metasploit Framework repo</a> (master branch) for the latest. To install fresh without using git, you can use the open-source-only <a data-gtm-cta="nightly-installers" data-gtm-location="content-rte-link" href="https://github.com/rapid7/metasploit-framework/wiki/Nightly-Installers" rel="noopener" target="_blank">Nightly Installers</a> or the commercial edition <a data-gtm-cta="metasploit-pro" data-gtm-location="content-rte-link" href="https://www.rapid7.com/products/metasploit/download/" rel="noopener" target="_blank">Metasploit Pro</a></p></div></div><section aria-labelledby="blog-post-article-tags-title" class="py-[30px] border-t border-gray-platinum mt-7" data-testid="blog-post-article-tags"><h2 class="mb-[14px] text-black-rich text-[18px] font-normal leading-[110%] tracking-[-0.36px]" id="blog-post-article-tags-title">Article tags</h2></section><footer data-testid="blog-post-footer"></footer> <img src="https://www.rapid7.com/cdn/images/blt0d50271a40a5f14f/6849ab419621d9f3824d5017/metasploit-sky.png" width="300" style="width:auto;height:auto;max-width:100%;max-height:450px;object-fit:contain;display:block;border-radius:4px;" loading="lazy" /><div class="blog-content" data-testid="content-widget"><div class="flex flex-col [&amp;_*+h2]:mt-[50px] [&amp;_h2]:mb-[18px] [&amp;_*+h3]:mt-[20px] [&amp;_h3]:mb-[12px] [&amp;_*+h4]:mt-[20px] [&amp;_h4]:mb-[12px] [&amp;_*+h5]:mt-[20px] [&amp;_h5]:mb-[12px] [&amp;_p:not(:last-child)]:mb-[12px] [&amp;_li:not(:last-child)]:mb-[12px] [&amp;_blockquote]:mt-[20px] [&amp;_blockquote]:mb-[20px] [&amp;_blockquote]:pt-[6px] [&amp;_blockquote]:pb-[6px] [&amp;_blockquote]:pl-[18px] [&amp;_blockquote]:text-[32px] [&amp;_blockquote]:border-l-[4px] [&amp;_blockquote]:border-[#D7D5D3] [&amp;_blockquote]:font-medium [&amp;_blockquote]:leading-[120%] [&amp;_pre]:my-[20px] [&amp;_pre&gt;code]:block [&amp;_pre&gt;code]:p-[16px] [&amp;_pre&gt;code]:rounded-[10px] [&amp;_pre&gt;code]:bg-code-block [&amp;_pre&gt;code]:text-code-block [&amp;_pre&gt;code]:overflow-x-auto hover:[&amp;_a]:decoration-primary-sinopia focus:[&amp;_a]:outline-dashed focus:[&amp;_a]:outline-[2px] focus:[&amp;_a]:outline-primary-sinopia visited:[&amp;_a]:text-primary-sinopia hover:[&amp;_a]:text-black-rich focus:[&amp;_a]:text-black-rich [&amp;_p]:text-gray-charcoal [&amp;_a]:text-gray-charcoal [&amp;_ul]:text-gray-charcoal [&amp;_ol]:text-gray-charcoal [&amp;_blockquote]:text-black-rich prose max-w-none"><p>This release adds multiple new modules, and 6 of those modules point at a single target: <a data-gtm-cta="langflow" data-gtm-location="content-rte-link" href="https://www.langflow.org/" rel="noopener" target="_blank">Langflow</a>, the open-source LLM workflow builder. Together they cover an authentication bypass (CVE-2026-93680), 3 unauthenticated remote code execution paths (CVE-2026-0768, CVE-2026-0769, and CVE-2026-10134), and 2 authenticated code execution flaws (CVE-2026-7873 and CVE-2026-93674), spanning Langflow releases from 1.0.0 through 1.11.4. Thanks to the work of <a data-gtm-cta="rmhowe425" data-gtm-location="content-rte-link" href="https://github.com/rmhowe425" rel="noopener" target="_blank">rmhowe425</a>, with research credit to Peter Girnus and n0k0. Beyond Langflow, open source contributor <a data-gtm-cta="kmkz" data-gtm-location="content-rte-link" href="https://github.com/kmkz" rel="noopener" target="_blank">kmkz</a> contributed a pre-auth RCE chain against OpenCTI. MongoDB coverage has also been expanded with 3 new auxiliary modules plus an Apache Solr version scanner thanks to the work of community member <a data-gtm-cta="h00die" data-gtm-location="content-rte-link" href="https://github.com/h00die" rel="noopener" target="_blank">h00die</a>.</p><h2 id="new-module-content-11">New Module Content (11)</h2><h3>4gaBoards Mass User Information Disclosure (CVE-2026-53959)</h3><p>Authors: Balachandar Gowrisankar, de3erve (GitHub), and lucquach (GitHub)</p><p>Type: Auxiliary</p><p>Pull request: <a data-gtm-cta="21831" data-gtm-location="content-rte-link" href="https://github.com/rapid7/metasploit-framework/pull/21831" rel="noopener" target="_blank">#21831</a> contributed by <a data-gtm-cta="anirbala98" data-gtm-location="content-rte-link" href="https://github.com/anirbala98" rel="noopener" target="_blank">anirbala98</a></p><p>Path: gather/4gaboards_users_info_disclosure_cve_2026_53959</p><p>CVE reference: <a data-gtm-cta="cve-2026-53959" data-gtm-location="content-rte-link" href="https://www.rapid7.com/db/vulnerabilities/cve-2026-53959/" rel="noopener" target="_blank">CVE-2026-53959</a></p><p>Description: Adds a module that exploits CVE-2026-53959, a broken access control vulnerability allowing mass user information disclosure in 4gaBoards versions 3.3.8 and below. The application's /api/users REST endpoint lets any authenticated user retrieve a full, unpaginated list of every user in the system. Missing authorization checks allow an attacker to retrieve the email, phone, organization, name, and SSO email addresses (ssoGoogleEmail, ssoGithubEmail, and others) of every user.</p><h3>Langflow AI Authentication Bypass (CVE-2026-93680)</h3><p>Author: Richard Howe</p><p>Type: Auxiliary</p><p>Pull request: <a data-gtm-cta="21942" data-gtm-location="content-rte-link" href="https://github.com/rapid7/metasploit-framework/pull/21942" rel="noopener" target="_blank">#21942</a> contributed by <a data-gtm-cta="rmhowe425" data-gtm-location="content-rte-link" href="https://github.com/rmhowe425" rel="noopener" target="_blank">rmhowe425</a></p><p>Path: gather/langflow_auth_bypass_cve_2026_93680</p><p>CVE reference: <a data-gtm-cta="cve-2026-93680" data-gtm-location="content-rte-link" href="https://www.rapid7.com/db/vulnerabilities/cve-2026-93680/" rel="noopener" target="_blank">CVE-2026-93680</a></p><p>Description: Adds a new auxiliary module that leverages CVE-2026-93680, an authentication bypass vulnerability impacting Langflow versions 1.5.0 through 1.11.4.</p><h3>Apache Solr Version Scanner</h3><p>Author: h00die</p><p>Type: Auxiliary</p><p>Pull request: <a data-gtm-cta="22006" data-gtm-location="content-rte-link" href="https://github.com/rapid7/metasploit-framework/pull/22006" rel="noopener" target="_blank">#22006</a> contributed by <a data-gtm-cta="h00die" data-gtm-location="content-rte-link" href="https://github.com/h00die" rel="noopener" target="_blank">h00die</a></p><p>Path: scanner/http/apache_solr_version</p><p>Description: Adds a new scanner that identifies Apache Solr and reports its version.</p><h3>MongoDB Auxiliary Module Suite</h3><p>Authors: h00die and prithvee07</p><p>Type: Auxiliary</p><p>Pull request: <a data-gtm-cta="21785" data-gtm-location="content-rte-link" href="https://github.com/rapid7/metasploit-framework/pull/21785" rel="noopener" target="_blank">#21785</a> contributed by <a data-gtm-cta="h00die" data-gtm-location="content-rte-link" href="https://github.com/h00die" rel="noopener" target="_blank">h00die</a></p><p>Description: Adds the mongodb_version, mongodb_schemadump, and mongodb_hashdump auxiliary modules, and updates the existing mongodb_login module.</p><p>This PR adds the following modules:</p><ul><li>scanner/mongodb/mongodb_hashdump</li><li>scanner/mongodb/mongodb_schemadump</li><li>scanner/mongodb/mongodb_version</li></ul><h3>OpenCTI Authentication Bypass and Notifier EJS Remote Code Execution</h3><p>Author: Jean-Marie Bourbon</p><p>Type: Exploit</p><p>Pull request: <a data-gtm-cta="21826" data-gtm-location="content-rte-link" href="https://github.com/rapid7/metasploit-framework/pull/21826" rel="noopener" target="_blank">#21826</a> contributed by <a data-gtm-cta="kmkz" data-gtm-location="content-rte-link" href="https://github.com/kmkz" rel="noopener" target="_blank">kmkz</a></p><p>Path: linux/http/opencti_notifier_rce</p><p>CVE references: <a data-gtm-cta="cve-2026-27960" data-gtm-location="content-rte-link" href="https://www.rapid7.com/db/vulnerabilities/cve-2026-27960/" rel="noopener" target="_blank">CVE-2026-27960</a> and <a data-gtm-cta="cve-2026-39980" data-gtm-location="content-rte-link" href="https://www.rapid7.com/db/vulnerabilities/cve-2026-39980/" rel="noopener" target="_blank">CVE-2026-39980</a></p><p>Description: Adds a new exploit module for OpenCTI that chains CVE-2026-27960 and CVE-2026-39980 to achieve unauthenticated remote command execution.</p><h3>Grafana SQL Expressions DuckDB Command Injection (CVE-2024-9264)</h3><p>Author: Özcan Ersan (@ozcanpng)</p><p>Type: Exploit</p><p>Pull request: <a data-gtm-cta="21901" data-gtm-location="content-rte-link" href="https://github.com/rapid7/metasploit-framework/pull/21901" rel="noopener" target="_blank">#21901</a> contributed by <a data-gtm-cta="ozcanpng" data-gtm-location="content-rte-link" href="https://github.com/ozcanpng" rel="noopener" target="_blank">ozcanpng</a></p><p>Path: multi/http/grafana_sql_expressions_rce_cve_2024_9264</p><p>CVE reference: <a data-gtm-cta="cve-2024-9264" data-gtm-location="content-rte-link" href="https://www.rapid7.com/db/vulnerabilities/cve-2024-9264/" rel="noopener" target="_blank">CVE-2024-9264</a></p><p>Description: Adds an authenticated exploit module for CVE-2024-9264, a DuckDB command injection in Grafana SQL Expressions.</p><h3>Langflow AI Code Validation Authenticated RCE (CVE-2026-7873)</h3><p>Authors: Richard Howe and n0k0</p><p>Type: Exploit</p><p>Pull request: <a data-gtm-cta="21877" data-gtm-location="content-rte-link" href="https://github.com/rapid7/metasploit-framework/pull/21877" rel="noopener" target="_blank">#21877</a> contributed by <a data-gtm-cta="rmhowe425" data-gtm-location="content-rte-link" href="https://github.com/rmhowe425" rel="noopener" target="_blank">rmhowe425</a></p><p>Path: multi/http/langflow_auth_rce_cve_2026_7873</p><p>CVE reference: <a data-gtm-cta="cve-2026-7873" data-gtm-location="content-rte-link" href="https://www.rapid7.com/db/vulnerabilities/cve-2026-7873/" rel="noopener" target="_blank">CVE-2026-7873</a></p><p>Description: Adds a new exploit module that detects and exploits CVE-2026-7873, an authenticated RCE vulnerability impacting Langflow versions 1.0.0 through 1.10.0.</p><h3>Langflow AI Authenticated Command Injection (CVE-2026-93674)</h3><p>Author: Richard Howe</p><p>Type: Exploit</p><p>Pull request: <a data-gtm-cta="21939" data-gtm-location="content-rte-link" href="https://github.com/rapid7/metasploit-framework/pull/21939" rel="noopener" target="_blank">#21939</a> contributed by <a data-gtm-cta="rmhowe425" data-gtm-location="content-rte-link" href="https://github.com/rmhowe425" rel="noopener" target="_blank">rmhowe425</a></p><p>Path: multi/http/langflow_auth_command_injection_cve_2026_93674</p><p>CVE reference: <a data-gtm-cta="cve-2026-93674" data-gtm-location="content-rte-link" href="https://www.rapid7.com/db/vulnerabilities/cve-2026-93674/" rel="noopener" target="_blank">CVE-2026-93674</a></p><p>Description: Adds a new exploit module that detects and exploits CVE-2026-93674, an authenticated blind command injection vulnerability impacting Langflow versions 1.5.0 through 1.9.0.</p><h3>Langflow AI Validate Code Injection Unauth RCE (CVE-2026-0768)</h3><p>Authors: Peter Girnus and Richard Howe</p><p>Type: Exploit</p><p>Pull request: <a data-gtm-cta="21864" data-gtm-location="content-rte-link" href="https://github.com/rapid7/metasploit-framework/pull/21864" rel="noopener" target="_blank">#21864</a> contributed by <a data-gtm-cta="rmhowe425" data-gtm-location="content-rte-link" href="https://github.com/rmhowe425" rel="noopener" target="_blank">rmhowe425</a></p><p>Path: multi/http/langflow_unauth_rce_cve_2026_0768</p><p>CVE reference: <a data-gtm-cta="cve-2026-0768" data-gtm-location="content-rte-link" href="https://www.rapid7.com/db/vulnerabilities/cve-2026-0768/" rel="noopener" target="_blank">CVE-2026-0768</a></p><p>Description: Adds a new exploit module that detects and exploits CVE-2026-0768, an unauthenticated remote code execution vulnerability impacting Langflow version 1.4.2.</p><h3>Langflow AI Custom Component Eval Injection Unauth RCE (CVE-2026-0769)</h3><p>Authors: Peter Girnus and Richard Howe</p><p>Type: Exploit</p><p>Pull request: <a data-gtm-cta="21867" data-gtm-location="content-rte-link" href="https://github.com/rapid7/metasploit-framework/pull/21867" rel="noopener" target="_blank">#21867</a> contributed by <a data-gtm-cta="rmhowe425" data-gtm-location="content-rte-link" href="https://github.com/rmhowe425" rel="noopener" target="_blank">rmhowe425</a></p><p>Path: multi/http/langflow_unauth_rce_cve_2026_0769</p><p>CVE reference: <a data-gtm-cta="cve-2026-0769" data-gtm-location="content-rte-link" href="https://www.rapid7.com/db/vulnerabilities/cve-2026-0769/" rel="noopener" target="_blank">CVE-2026-0769</a></p><p>Description: Adds a new exploit module that detects and exploits CVE-2026-0769, an unauthenticated RCE vulnerability impacting Langflow version 1.3.2.</p><h3>Langflow AI Public Flow Build Unauth RCE (CVE-2026-10134)</h3><p>Author: Richard Howe</p><p>Type: Exploit</p><p>Pull request: <a data-gtm-cta="21875" data-gtm-location="content-rte-link" href="https://github.com/rapid7/metasploit-framework/pull/21875" rel="noopener" target="_blank">#21875</a> contributed by <a data-gtm-cta="rmhowe425" data-gtm-location="content-rte-link" href="https://github.com/rmhowe425" rel="noopener" target="_blank">rmhowe425</a></p><p>Path: multi/http/langflow_unauth_rce_cve_2026_10134</p><p>CVE reference: <a data-gtm-cta="cve-2026-10134" data-gtm-location="content-rte-link" href="https://www.rapid7.com/db/vulnerabilities/cve-2026-10134/" rel="noopener" target="_blank">CVE-2026-10134</a></p><p>Description: Adds a new exploit module that detects and exploits CVE-2026-10134, an unauthenticated remote code execution vulnerability impacting Langflow versions 1.0.0 through 1.9.3.</p><h2 id="enhancements-and-features-3">Enhancements and Features (3)</h2><ul><li><a data-gtm-cta="20944" data-gtm-location="content-rte-link" href="https://github.com/rapid7/metasploit-framework/pull/20944" rel="noopener" target="_blank">#20944</a> from <a data-gtm-cta="nayeraneru" data-gtm-location="content-rte-link" href="https://github.com/Nayeraneru" rel="noopener" target="_blank">Nayeraneru</a> - Adds specs to ensure the mkdir post API behaves consistently.</li><li><a data-gtm-cta="21915" data-gtm-location="content-rte-link" href="https://github.com/rapid7/metasploit-framework/pull/21915" rel="noopener" target="_blank">#21915</a> from <a data-gtm-cta="vjonline" data-gtm-location="content-rte-link" href="https://github.com/vjonline" rel="noopener" target="_blank">vjonline</a> - Consolidates reverse handler bind address handling into a shared Msf::Handler::Reverse::Bind module.</li><li><a data-gtm-cta="22041" data-gtm-location="content-rte-link" href="https://github.com/rapid7/metasploit-framework/pull/22041" rel="noopener" target="_blank">#22041</a> from <a data-gtm-cta="adfoster-r7" data-gtm-location="content-rte-link" href="https://github.com/adfoster-r7" rel="noopener" target="_blank">adfoster-r7</a> - Adds multiple Meterpreter improvements. The Windows Meterpreter has a major reflective-loader/IAT-import reduction, as well as improved WinAPI/error handling, and MinGW/CMake build refinements. The Python Meterpreter has improvements to Windows stat support and FreeBSD process listing. The PHP Meterpreter resolves PHP UDP channel read bugs. All Meterpreters now align on recursive mkdir -p capabilities.</li></ul><h2 id="bugs-fixed-6">Bugs Fixed (6)</h2><ul><li><a data-gtm-cta="21490" data-gtm-location="content-rte-link" href="https://github.com/rapid7/metasploit-framework/pull/21490" rel="noopener" target="_blank">#21490</a> from <a data-gtm-cta="h00die" data-gtm-location="content-rte-link" href="https://github.com/h00die" rel="noopener" target="_blank">h00die</a> - Fixes a crash when fingerprinting HTTP services that contained null bytes.</li><li><a data-gtm-cta="21979" data-gtm-location="content-rte-link" href="https://github.com/rapid7/metasploit-framework/pull/21979" rel="noopener" target="_blank">#21979</a> from <a data-gtm-cta="adfoster-r7" data-gtm-location="content-rte-link" href="https://github.com/adfoster-r7" rel="noopener" target="_blank">adfoster-r7</a> - Adds additional HTTP redirect checks to multiple modules.</li><li><a data-gtm-cta="21994" data-gtm-location="content-rte-link" href="https://github.com/rapid7/metasploit-framework/pull/21994" rel="noopener" target="_blank">#21994</a> from <a data-gtm-cta="adfoster-r7" data-gtm-location="content-rte-link" href="https://github.com/adfoster-r7" rel="noopener" target="_blank">adfoster-r7</a> - Adds additional FTP PASV IP validation checks to multiple modules.</li><li><a data-gtm-cta="22001" data-gtm-location="content-rte-link" href="https://github.com/rapid7/metasploit-framework/pull/22001" rel="noopener" target="_blank">#22001</a> from <a data-gtm-cta="suryanshuv14" data-gtm-location="content-rte-link" href="https://github.com/Suryanshuv14" rel="noopener" target="_blank">Suryanshuv14</a> - Fixes DirtyClone module metadata and a typo.</li><li><a data-gtm-cta="22002" data-gtm-location="content-rte-link" href="https://github.com/rapid7/metasploit-framework/pull/22002" rel="noopener" target="_blank">#22002</a> from <a data-gtm-cta="mjatin2007" data-gtm-location="content-rte-link" href="https://github.com/mjatin2007" rel="noopener" target="_blank">mjatin2007</a> - Fixes leaking TCP sockets and file descriptors when the MSSQL Login Scanner module or the MSSQL session type is used.</li><li><a data-gtm-cta="22014" data-gtm-location="content-rte-link" href="https://github.com/rapid7/metasploit-framework/pull/22014" rel="noopener" target="_blank">#22014</a> from <a data-gtm-cta="cgranleese-r7" data-gtm-location="content-rte-link" href="https://github.com/cgranleese-r7" rel="noopener" target="_blank">cgranleese-r7</a> - Fixes false positives in the detection logic of the auxiliary/gather/hikvision_info_disclosure_cve_2017_7921, auxiliary/gather/magento_xxe_cve_2024_34102, and auxiliary/scanner/http/elasticsearch_traversal modules.</li></ul><h2 id="documentation">Documentation</h2><p>You can find the latest Metasploit documentation on our docsite at <a data-gtm-cta="docs-metasploit-com" data-gtm-location="content-rte-link" href="https://docs.metasploit.com/" rel="noopener" target="_blank">docs.metasploit.com</a>.</p><h2 id="get-it">Get it</h2><p>As always, you can update to the latest Metasploit Framework with msfupdate and you can get more details on the changes since the last blog post from GitHub:</p><ul><li><a data-gtm-cta="pull-requests-6-5-6-6-5-8" data-gtm-location="content-rte-link" href="https://github.com/rapid7/metasploit-framework/pulls?q=is:pr+merged:" rel="noopener" target="_blank">Pull Requests 6.5.6…6.5.8</a></li><li><a data-gtm-cta="full-diff-6-5-6-6-5-8" data-gtm-location="content-rte-link" href="https://github.com/rapid7/metasploit-framework/compare/6.5.6%E2%80%A66.5.8" rel="noopener" target="_blank">Full diff 6.5.6…6.5.8</a></li></ul><p>If you are a git user, you can clone the <a data-gtm-cta="metasploit-framework-repo" data-gtm-location="content-rte-link" href="https://github.com/rapid7/metasploit-framework" rel="noopener" target="_blank">Metasploit Framework repo</a> (master branch) for the latest. To install fresh without using git, you can use the open-source-only <a data-gtm-cta="nightly-installers" data-gtm-location="content-rte-link" href="https://github.com/rapid7/metasploit-framework/wiki/Nightly-Installers" rel="noopener" target="_blank">Nightly Installers</a> or the commercial edition <a data-gtm-cta="metasploit-pro" data-gtm-location="content-rte-link" href="https://www.rapid7.com/products/metasploit/download/" rel="noopener" target="_blank">Metasploit Pro</a></p></div></div><section aria-labelledby="blog-post-article-tags-title" class="py-[30px] border-t border-gray-platinum mt-7" data-testid="blog-post-article-tags"><h2 class="mb-[14px] text-black-rich text-[18px] font-normal leading-[110%] tracking-[-0.36px]" id="blog-post-article-tags-title">Article tags</h2></section><footer data-testid="blog-post-footer"></footer> https://www.rapid7.com/blog/post/pt-metasploit-wrap-up-langflow-mongodb-and-more cyber Fri, 23 Oct 2026 15:38:56 +0000 CVE-2026-111497: Critical out-of-bounds write in the Node.js Brotli decoder (2026) https://www.rapid7.com/blog/post/etr-cve-2026-111497-critical-out-of-bounds-write-in-the-node-js-brotli-decoder <img src="https://www.rapid7.com/cdn/images/blt65a432ba319f4043/6846abddaf18306debe6cf4d/ETR.webp" width="300" style="width:auto;height:auto;max-width:100%;max-height:450px;object-fit:contain;display:block;border-radius:4px;" loading="lazy" /><div class="blog-content" data-testid="content-widget"><div class="flex flex-col [&amp;_*+h2]:mt-[50px] [&amp;_h2]:mb-[18px] [&amp;_*+h3]:mt-[20px] [&amp;_h3]:mb-[12px] [&amp;_*+h4]:mt-[20px] [&amp;_h4]:mb-[12px] [&amp;_*+h5]:mt-[20px] [&amp;_h5]:mb-[12px] [&amp;_p:not(:last-child)]:mb-[12px] [&amp;_li:not(:last-child)]:mb-[12px] [&amp;_blockquote]:mt-[20px] [&amp;_blockquote]:mb-[20px] [&amp;_blockquote]:pt-[6px] [&amp;_blockquote]:pb-[6px] [&amp;_blockquote]:pl-[18px] [&amp;_blockquote]:text-[32px] [&amp;_blockquote]:border-l-[4px] [&amp;_blockquote]:border-[#D7D5D3] [&amp;_blockquote]:font-medium [&amp;_blockquote]:leading-[120%] [&amp;_pre]:my-[20px] [&amp;_pre&gt;code]:block [&amp;_pre&gt;code]:p-[16px] [&amp;_pre&gt;code]:rounded-[10px] [&amp;_pre&gt;code]:bg-code-block [&amp;_pre&gt;code]:text-code-block [&amp;_pre&gt;code]:overflow-x-auto hover:[&amp;_a]:decoration-primary-sinopia focus:[&amp;_a]:outline-dashed focus:[&amp;_a]:outline-[2px] focus:[&amp;_a]:outline-primary-sinopia visited:[&amp;_a]:text-primary-sinopia hover:[&amp;_a]:text-black-rich focus:[&amp;_a]:text-black-rich [&amp;_p]:text-gray-charcoal [&amp;_a]:text-gray-charcoal [&amp;_ul]:text-gray-charcoal [&amp;_ol]:text-gray-charcoal [&amp;_blockquote]:text-black-rich prose max-w-none"><h2 id="overview" style="direction:ltr">Overview</h2><p style="direction:ltr"><span style="font-size:undefined">On October 21, 2026, the Node.js Project </span><a data-gtm-cta="published-a-security-advisory" data-gtm-location="content-rte-link" href="https://nodejs.org/en/blog/vulnerability/october-2026-security-releases#nodejs-brotli-decoder-out-of-bounds-write-permits-remote-code-execution-cve-2026-111497---high" rel="noopener" target="_blank"><span style="font-size:undefined">published a security advisory</span></a><span style="font-size:undefined"> for </span><a data-gtm-cta="cve-2026-111497" data-gtm-location="content-rte-link" href="https://www.cve.org/CVERecord?id=CVE-2026-111497" rel="noopener" target="_blank"><span style="font-size:undefined">CVE-2026-111497</span></a><span style="font-size:undefined">, an out-of-bounds write in the Brotli decoder bundled with Node.js. The vulnerability affects the Node.js </span><span style="color:rgb(24, 128, 56);font-size:undefined">26.x</span><span style="font-size:undefined">, </span><span style="color:rgb(24, 128, 56);font-size:undefined">24.x</span><span style="font-size:undefined">, and </span><span style="color:rgb(24, 128, 56);font-size:undefined">22.x</span><span style="font-size:undefined"> release lines. Node.js rates the issue High, while Google, the CVE Numbering Authority (CNA), gives it a critical CVSSv4 score of </span><a data-gtm-cta="9-2" data-gtm-location="content-rte-link" href="https://www.first.org/cvss/calculator/4.0#CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N" rel="noopener" target="_blank"><span style="font-size:undefined">9.2</span></a><span style="font-size:undefined">.</span></p><p style="direction:ltr"><span style="font-size:undefined">An attacker who can supply Brotli data that an application decompresses with </span><span style="color:rgb(24, 128, 56);font-size:undefined">node:zlib</span><span style="font-size:undefined"> can corrupt process memory. According to Node.js, this corruption can lead to a process crash, disclosure of sensitive process memory, or remote code execution. Exposure therefore depends on whether an application passes attacker-controlled compressed data to the affected decoder.</span></p><p style="direction:ltr"><span style="font-size:undefined">On October 27, 2026, CVE-2026-111497 was </span><a data-gtm-cta="added" data-gtm-location="content-rte-link" href="https://www.cisa.gov/known-exploited-vulnerabilities-catalog?field_cve=CVE-2026-111497" rel="noopener" target="_blank"><span style="font-size:undefined">added</span></a><span style="font-size:undefined"> to the U.S. Cybersecurity and Infrastructure Security Agency's (CISA) list of known exploited vulnerabilities (KEV), based on evidence of active exploitation. Given the vulnerability's potential to disclose memory or enable remote code execution (RCE), Rapid7 recommends that organizations prioritize remediation.</span></p><h2 id="technical-overview" style="direction:ltr">Technical overview</h2><p style="direction:ltr"><span style="font-size:undefined">CVE-2026-111497 is classified as an out-of-bounds write (</span><a data-gtm-cta="cwe-787" data-gtm-location="content-rte-link" href="https://cwe.mitre.org/data/definitions/787.html" rel="noopener" target="_blank"><span style="font-size:undefined">CWE-787</span></a><span style="font-size:undefined">) and an unchecked return value (</span><a data-gtm-cta="cwe-252" data-gtm-location="content-rte-link" href="https://cwe.mitre.org/data/definitions/252.html" rel="noopener" target="_blank"><span style="font-size:undefined">CWE-252</span></a><span style="font-size:undefined">). Per the vendor advisory, the decoder handled an invalid Brotli block switch as a temporary need for more input instead of a permanent format error. The streaming decoder then continued appending input bytes to an eight-byte internal buffer, allowing malformed input to write beyond the buffer and corrupt process memory.</span></p><p style="direction:ltr"><span style="font-size:undefined">The vulnerability originates in Google Brotli, which the affected Node.js release lines bundle as a dependency. The CVE record identifies affected upstream Brotli ranges on all platforms as versions </span><span style="color:rgb(24, 128, 56);font-size:undefined">1.0.3</span><span style="font-size:undefined"> before </span><span style="color:rgb(24, 128, 56);font-size:undefined">1.0.10</span><span style="font-size:undefined">, </span><span style="color:rgb(24, 128, 56);font-size:undefined">1.1.0</span><span style="font-size:undefined"> before </span><span style="color:rgb(24, 128, 56);font-size:undefined">1.1.1</span><span style="font-size:undefined">, and </span><span style="color:rgb(24, 128, 56);font-size:undefined">1.2.0</span><span style="font-size:undefined"> before </span><span style="color:rgb(24, 128, 56);font-size:undefined">1.2.1</span><span style="font-size:undefined">. The Node.js Project remediated its bundled decoder in the fixed Node.js releases listed below.</span></p><p style="direction:ltr"><span style="font-size:undefined">Because CVE-2026-111497 affects the upstream Google Brotli decoder, its reach is not limited to Node.js. Vendor and project advisories have also identified affected implementations in </span><a data-gtm-cta="bun" data-gtm-location="content-rte-link" href="https://github.com/oven-sh/bun/security/advisories/GHSA-663w-cv8g-jj2p" rel="noopener" target="_blank"><span style="font-size:undefined">Bun</span></a><span style="font-size:undefined">, Python's </span><a data-gtm-cta="brotli" data-gtm-location="content-rte-link" href="https://github.com/pypa/advisory-database/blob/main/vulns/brotli/PYSEC-2026-4322.yaml" rel="noopener" target="_blank"><span style="font-size:undefined">Brotli</span></a><span style="font-size:undefined"> and </span><a data-gtm-cta="brotlicffi" data-gtm-location="content-rte-link" href="https://github.com/pypa/advisory-database/blob/main/vulns/brotlicffi/PYSEC-2026-4323.yaml" rel="noopener" target="_blank"><span style="font-size:undefined">brotlicffi</span></a><span style="font-size:undefined"> packages, </span><a data-gtm-cta="net" data-gtm-location="content-rte-link" href="https://devblogs.microsoft.com/dotnet/dotnet-october-2026-oob-security-updates/" rel="noopener" target="_blank"><span style="font-size:undefined">.NET</span></a><span style="font-size:undefined">, </span><a data-gtm-cta="envoy" data-gtm-location="content-rte-link" href="https://github.com/envoyproxy/envoy/security/advisories/GHSA-3wvj-j6qm-62mr" rel="noopener" target="_blank"><span style="font-size:undefined">Envoy</span></a><span style="font-size:undefined"> and </span><a data-gtm-cta="istio" data-gtm-location="content-rte-link" href="https://istio.io/latest/news/security/istio-security-2026-007/" rel="noopener" target="_blank"><span style="font-size:undefined">Istio</span></a><span style="font-size:undefined">, </span><a data-gtm-cta="brotli4j" data-gtm-location="content-rte-link" href="https://github.com/hyperxpro/Brotli4j/security/advisories/GHSA-x524-jrqf-vwq6" rel="noopener" target="_blank"><span style="font-size:undefined">brotli4j</span></a><span style="font-size:undefined">, and </span><a data-gtm-cta="operating-system-packages" data-gtm-location="content-rte-link" href="https://access.redhat.com/security/vulnerabilities/RHSB-2026-015" rel="noopener" target="_blank"><span style="font-size:undefined">operating-system packages</span></a><span style="font-size:undefined">. Affected versions, default exposure, and remediation vary by product; the presence of an affected decoder does not by itself establish exposure unless an application processes attacker-controlled Brotli data. Organizations should consult the relevant downstream vendor or distribution advisories to identify affected versions, assess exposure, and determine appropriate remediation.</span></p><h2 id="mitigation-guidance" style="direction:ltr">Mitigation guidance</h2><p style="direction:ltr"><span style="font-size:undefined">Vendor-supplied security updates are available to remediate CVE-2026-111497. Organizations running an affected Node.js release should upgrade on an urgent basis, outside of normal patch cycles:</span></p><ul><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined">Node.js </span><span style="color:rgb(24, 128, 56);font-size:undefined">22.x</span><span style="font-size:undefined"> releases before </span><span style="color:rgb(24, 128, 56);font-size:undefined">22.23.4</span><span style="font-size:undefined"> are affected; upgrade to </span><span style="color:rgb(24, 128, 56);font-size:undefined">22.23.4</span><span style="font-size:undefined"> or later.</span></p></li><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined">Node.js </span><span style="color:rgb(24, 128, 56);font-size:undefined">24.x</span><span style="font-size:undefined"> releases before </span><span style="color:rgb(24, 128, 56);font-size:undefined">24.22.1</span><span style="font-size:undefined"> are affected; upgrade to </span><span style="color:rgb(24, 128, 56);font-size:undefined">24.22.1</span><span style="font-size:undefined"> or later.</span></p></li><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined">Node.js </span><span style="color:rgb(24, 128, 56);font-size:undefined">26.x</span><span style="font-size:undefined"> releases before </span><span style="color:rgb(24, 128, 56);font-size:undefined">26.12.1</span><span style="font-size:undefined"> are affected; upgrade to </span><span style="color:rgb(24, 128, 56);font-size:undefined">26.12.1</span><span style="font-size:undefined"> or later.</span></p></li></ul><p style="direction:ltr"><span style="font-size:undefined">The vendor states that end-of-life Node.js release lines should also be treated as affected when a security release occurs. Organizations using an end-of-life release should migrate to a supported, fixed release line. Node.js has not published a vendor-supported workaround; if an immediate upgrade is not possible, Rapid7 recommends restricting or disabling application paths that decompress untrusted Brotli data as a temporary exposure-reduction measure.</span></p><p style="direction:ltr"><span style="font-size:undefined">For the latest mitigation guidance, please refer to the </span><a data-gtm-cta="node-js-security-advisory" data-gtm-location="content-rte-link" href="https://nodejs.org/en/blog/vulnerability/october-2026-security-releases#nodejs-brotli-decoder-out-of-bounds-write-permits-remote-code-execution-cve-2026-111497---high" rel="noopener" target="_blank"><span style="font-size:undefined">Node.js security advisory</span></a><span style="font-size:undefined">.</span></p><h2 id="rapid7-customers" style="direction:ltr">Rapid7 customers</h2><h3 style="direction:ltr"><span style="color:rgb(67, 67, 67)">Exposure Command, Vulnerability Management, and Nexpose</span></h3><p style="direction:ltr"><span style="font-size:undefined">Exposure Command, Vulnerability Management, and Nexpose customers can assess exposure to CVE-2026-111497 with an authenticated vulnerability check for Linux, macOS, and Windows, available in the October 26 content release.</span></p><h2 id="updates" style="direction:ltr">Updates</h2><ul><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined"><strong>October 26, 2026</strong></span><span style="font-size:undefined">: Initial publication.</span></p></li><li><span style="font-size:undefined"><strong>October 26, 2026</strong></span>: Updated the Exposure Command, Vulnerability Management, and Nexpose section to reflect coverage availability.</li><li><span style="font-size:undefined"><strong>October 27, 2026</strong></span><span style="font-size:undefined">: Updated Overview to add a reference to CVE-2026-111497 being added to the CISA KEV list.</span></li></ul></div></div><section aria-labelledby="blog-post-article-tags-title" class="py-[30px] border-t border-gray-platinum mt-7" data-testid="blog-post-article-tags"><h2 class="mb-[14px] text-black-rich text-[18px] font-normal leading-[110%] tracking-[-0.36px]" id="blog-post-article-tags-title">Article tags</h2></section><footer data-testid="blog-post-footer"></footer> <img src="https://www.rapid7.com/cdn/images/blt65a432ba319f4043/6846abddaf18306debe6cf4d/ETR.webp" width="300" style="width:auto;height:auto;max-width:100%;max-height:450px;object-fit:contain;display:block;border-radius:4px;" loading="lazy" /><div class="blog-content" data-testid="content-widget"><div class="flex flex-col [&amp;_*+h2]:mt-[50px] [&amp;_h2]:mb-[18px] [&amp;_*+h3]:mt-[20px] [&amp;_h3]:mb-[12px] [&amp;_*+h4]:mt-[20px] [&amp;_h4]:mb-[12px] [&amp;_*+h5]:mt-[20px] [&amp;_h5]:mb-[12px] [&amp;_p:not(:last-child)]:mb-[12px] [&amp;_li:not(:last-child)]:mb-[12px] [&amp;_blockquote]:mt-[20px] [&amp;_blockquote]:mb-[20px] [&amp;_blockquote]:pt-[6px] [&amp;_blockquote]:pb-[6px] [&amp;_blockquote]:pl-[18px] [&amp;_blockquote]:text-[32px] [&amp;_blockquote]:border-l-[4px] [&amp;_blockquote]:border-[#D7D5D3] [&amp;_blockquote]:font-medium [&amp;_blockquote]:leading-[120%] [&amp;_pre]:my-[20px] [&amp;_pre&gt;code]:block [&amp;_pre&gt;code]:p-[16px] [&amp;_pre&gt;code]:rounded-[10px] [&amp;_pre&gt;code]:bg-code-block [&amp;_pre&gt;code]:text-code-block [&amp;_pre&gt;code]:overflow-x-auto hover:[&amp;_a]:decoration-primary-sinopia focus:[&amp;_a]:outline-dashed focus:[&amp;_a]:outline-[2px] focus:[&amp;_a]:outline-primary-sinopia visited:[&amp;_a]:text-primary-sinopia hover:[&amp;_a]:text-black-rich focus:[&amp;_a]:text-black-rich [&amp;_p]:text-gray-charcoal [&amp;_a]:text-gray-charcoal [&amp;_ul]:text-gray-charcoal [&amp;_ol]:text-gray-charcoal [&amp;_blockquote]:text-black-rich prose max-w-none"><h2 id="overview" style="direction:ltr">Overview</h2><p style="direction:ltr"><span style="font-size:undefined">On October 21, 2026, the Node.js Project </span><a data-gtm-cta="published-a-security-advisory" data-gtm-location="content-rte-link" href="https://nodejs.org/en/blog/vulnerability/october-2026-security-releases#nodejs-brotli-decoder-out-of-bounds-write-permits-remote-code-execution-cve-2026-111497---high" rel="noopener" target="_blank"><span style="font-size:undefined">published a security advisory</span></a><span style="font-size:undefined"> for </span><a data-gtm-cta="cve-2026-111497" data-gtm-location="content-rte-link" href="https://www.cve.org/CVERecord?id=CVE-2026-111497" rel="noopener" target="_blank"><span style="font-size:undefined">CVE-2026-111497</span></a><span style="font-size:undefined">, an out-of-bounds write in the Brotli decoder bundled with Node.js. The vulnerability affects the Node.js </span><span style="color:rgb(24, 128, 56);font-size:undefined">26.x</span><span style="font-size:undefined">, </span><span style="color:rgb(24, 128, 56);font-size:undefined">24.x</span><span style="font-size:undefined">, and </span><span style="color:rgb(24, 128, 56);font-size:undefined">22.x</span><span style="font-size:undefined"> release lines. Node.js rates the issue High, while Google, the CVE Numbering Authority (CNA), gives it a critical CVSSv4 score of </span><a data-gtm-cta="9-2" data-gtm-location="content-rte-link" href="https://www.first.org/cvss/calculator/4.0#CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N" rel="noopener" target="_blank"><span style="font-size:undefined">9.2</span></a><span style="font-size:undefined">.</span></p><p style="direction:ltr"><span style="font-size:undefined">An attacker who can supply Brotli data that an application decompresses with </span><span style="color:rgb(24, 128, 56);font-size:undefined">node:zlib</span><span style="font-size:undefined"> can corrupt process memory. According to Node.js, this corruption can lead to a process crash, disclosure of sensitive process memory, or remote code execution. Exposure therefore depends on whether an application passes attacker-controlled compressed data to the affected decoder.</span></p><p style="direction:ltr"><span style="font-size:undefined">On October 27, 2026, CVE-2026-111497 was </span><a data-gtm-cta="added" data-gtm-location="content-rte-link" href="https://www.cisa.gov/known-exploited-vulnerabilities-catalog?field_cve=CVE-2026-111497" rel="noopener" target="_blank"><span style="font-size:undefined">added</span></a><span style="font-size:undefined"> to the U.S. Cybersecurity and Infrastructure Security Agency's (CISA) list of known exploited vulnerabilities (KEV), based on evidence of active exploitation. Given the vulnerability's potential to disclose memory or enable remote code execution (RCE), Rapid7 recommends that organizations prioritize remediation.</span></p><h2 id="technical-overview" style="direction:ltr">Technical overview</h2><p style="direction:ltr"><span style="font-size:undefined">CVE-2026-111497 is classified as an out-of-bounds write (</span><a data-gtm-cta="cwe-787" data-gtm-location="content-rte-link" href="https://cwe.mitre.org/data/definitions/787.html" rel="noopener" target="_blank"><span style="font-size:undefined">CWE-787</span></a><span style="font-size:undefined">) and an unchecked return value (</span><a data-gtm-cta="cwe-252" data-gtm-location="content-rte-link" href="https://cwe.mitre.org/data/definitions/252.html" rel="noopener" target="_blank"><span style="font-size:undefined">CWE-252</span></a><span style="font-size:undefined">). Per the vendor advisory, the decoder handled an invalid Brotli block switch as a temporary need for more input instead of a permanent format error. The streaming decoder then continued appending input bytes to an eight-byte internal buffer, allowing malformed input to write beyond the buffer and corrupt process memory.</span></p><p style="direction:ltr"><span style="font-size:undefined">The vulnerability originates in Google Brotli, which the affected Node.js release lines bundle as a dependency. The CVE record identifies affected upstream Brotli ranges on all platforms as versions </span><span style="color:rgb(24, 128, 56);font-size:undefined">1.0.3</span><span style="font-size:undefined"> before </span><span style="color:rgb(24, 128, 56);font-size:undefined">1.0.10</span><span style="font-size:undefined">, </span><span style="color:rgb(24, 128, 56);font-size:undefined">1.1.0</span><span style="font-size:undefined"> before </span><span style="color:rgb(24, 128, 56);font-size:undefined">1.1.1</span><span style="font-size:undefined">, and </span><span style="color:rgb(24, 128, 56);font-size:undefined">1.2.0</span><span style="font-size:undefined"> before </span><span style="color:rgb(24, 128, 56);font-size:undefined">1.2.1</span><span style="font-size:undefined">. The Node.js Project remediated its bundled decoder in the fixed Node.js releases listed below.</span></p><p style="direction:ltr"><span style="font-size:undefined">Because CVE-2026-111497 affects the upstream Google Brotli decoder, its reach is not limited to Node.js. Vendor and project advisories have also identified affected implementations in </span><a data-gtm-cta="bun" data-gtm-location="content-rte-link" href="https://github.com/oven-sh/bun/security/advisories/GHSA-663w-cv8g-jj2p" rel="noopener" target="_blank"><span style="font-size:undefined">Bun</span></a><span style="font-size:undefined">, Python's </span><a data-gtm-cta="brotli" data-gtm-location="content-rte-link" href="https://github.com/pypa/advisory-database/blob/main/vulns/brotli/PYSEC-2026-4322.yaml" rel="noopener" target="_blank"><span style="font-size:undefined">Brotli</span></a><span style="font-size:undefined"> and </span><a data-gtm-cta="brotlicffi" data-gtm-location="content-rte-link" href="https://github.com/pypa/advisory-database/blob/main/vulns/brotlicffi/PYSEC-2026-4323.yaml" rel="noopener" target="_blank"><span style="font-size:undefined">brotlicffi</span></a><span style="font-size:undefined"> packages, </span><a data-gtm-cta="net" data-gtm-location="content-rte-link" href="https://devblogs.microsoft.com/dotnet/dotnet-october-2026-oob-security-updates/" rel="noopener" target="_blank"><span style="font-size:undefined">.NET</span></a><span style="font-size:undefined">, </span><a data-gtm-cta="envoy" data-gtm-location="content-rte-link" href="https://github.com/envoyproxy/envoy/security/advisories/GHSA-3wvj-j6qm-62mr" rel="noopener" target="_blank"><span style="font-size:undefined">Envoy</span></a><span style="font-size:undefined"> and </span><a data-gtm-cta="istio" data-gtm-location="content-rte-link" href="https://istio.io/latest/news/security/istio-security-2026-007/" rel="noopener" target="_blank"><span style="font-size:undefined">Istio</span></a><span style="font-size:undefined">, </span><a data-gtm-cta="brotli4j" data-gtm-location="content-rte-link" href="https://github.com/hyperxpro/Brotli4j/security/advisories/GHSA-x524-jrqf-vwq6" rel="noopener" target="_blank"><span style="font-size:undefined">brotli4j</span></a><span style="font-size:undefined">, and </span><a data-gtm-cta="operating-system-packages" data-gtm-location="content-rte-link" href="https://access.redhat.com/security/vulnerabilities/RHSB-2026-015" rel="noopener" target="_blank"><span style="font-size:undefined">operating-system packages</span></a><span style="font-size:undefined">. Affected versions, default exposure, and remediation vary by product; the presence of an affected decoder does not by itself establish exposure unless an application processes attacker-controlled Brotli data. Organizations should consult the relevant downstream vendor or distribution advisories to identify affected versions, assess exposure, and determine appropriate remediation.</span></p><h2 id="mitigation-guidance" style="direction:ltr">Mitigation guidance</h2><p style="direction:ltr"><span style="font-size:undefined">Vendor-supplied security updates are available to remediate CVE-2026-111497. Organizations running an affected Node.js release should upgrade on an urgent basis, outside of normal patch cycles:</span></p><ul><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined">Node.js </span><span style="color:rgb(24, 128, 56);font-size:undefined">22.x</span><span style="font-size:undefined"> releases before </span><span style="color:rgb(24, 128, 56);font-size:undefined">22.23.4</span><span style="font-size:undefined"> are affected; upgrade to </span><span style="color:rgb(24, 128, 56);font-size:undefined">22.23.4</span><span style="font-size:undefined"> or later.</span></p></li><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined">Node.js </span><span style="color:rgb(24, 128, 56);font-size:undefined">24.x</span><span style="font-size:undefined"> releases before </span><span style="color:rgb(24, 128, 56);font-size:undefined">24.22.1</span><span style="font-size:undefined"> are affected; upgrade to </span><span style="color:rgb(24, 128, 56);font-size:undefined">24.22.1</span><span style="font-size:undefined"> or later.</span></p></li><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined">Node.js </span><span style="color:rgb(24, 128, 56);font-size:undefined">26.x</span><span style="font-size:undefined"> releases before </span><span style="color:rgb(24, 128, 56);font-size:undefined">26.12.1</span><span style="font-size:undefined"> are affected; upgrade to </span><span style="color:rgb(24, 128, 56);font-size:undefined">26.12.1</span><span style="font-size:undefined"> or later.</span></p></li></ul><p style="direction:ltr"><span style="font-size:undefined">The vendor states that end-of-life Node.js release lines should also be treated as affected when a security release occurs. Organizations using an end-of-life release should migrate to a supported, fixed release line. Node.js has not published a vendor-supported workaround; if an immediate upgrade is not possible, Rapid7 recommends restricting or disabling application paths that decompress untrusted Brotli data as a temporary exposure-reduction measure.</span></p><p style="direction:ltr"><span style="font-size:undefined">For the latest mitigation guidance, please refer to the </span><a data-gtm-cta="node-js-security-advisory" data-gtm-location="content-rte-link" href="https://nodejs.org/en/blog/vulnerability/october-2026-security-releases#nodejs-brotli-decoder-out-of-bounds-write-permits-remote-code-execution-cve-2026-111497---high" rel="noopener" target="_blank"><span style="font-size:undefined">Node.js security advisory</span></a><span style="font-size:undefined">.</span></p><h2 id="rapid7-customers" style="direction:ltr">Rapid7 customers</h2><h3 style="direction:ltr"><span style="color:rgb(67, 67, 67)">Exposure Command, Vulnerability Management, and Nexpose</span></h3><p style="direction:ltr"><span style="font-size:undefined">Exposure Command, Vulnerability Management, and Nexpose customers can assess exposure to CVE-2026-111497 with an authenticated vulnerability check for Linux, macOS, and Windows, available in the October 26 content release.</span></p><h2 id="updates" style="direction:ltr">Updates</h2><ul><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined"><strong>October 26, 2026</strong></span><span style="font-size:undefined">: Initial publication.</span></p></li><li><span style="font-size:undefined"><strong>October 26, 2026</strong></span>: Updated the Exposure Command, Vulnerability Management, and Nexpose section to reflect coverage availability.</li><li><span style="font-size:undefined"><strong>October 27, 2026</strong></span><span style="font-size:undefined">: Updated Overview to add a reference to CVE-2026-111497 being added to the CISA KEV list.</span></li></ul></div></div><section aria-labelledby="blog-post-article-tags-title" class="py-[30px] border-t border-gray-platinum mt-7" data-testid="blog-post-article-tags"><h2 class="mb-[14px] text-black-rich text-[18px] font-normal leading-[110%] tracking-[-0.36px]" id="blog-post-article-tags-title">Article tags</h2></section><footer data-testid="blog-post-footer"></footer> https://www.rapid7.com/blog/post/etr-cve-2026-111497-critical-out-of-bounds-write-in-the-node-js-brotli-decoder cyber Mon, 26 Oct 2026 17:32:46 +0000 Simplify User Access Management with SCIM on Rapid7 Command Platform https://www.rapid7.com/blog/post/pt-scim-simplifies-user-access-management-uam-command-platform <img src="https://www.rapid7.com/cdn/images/blt3cc8c945f314ec1f/68b9a045a7d14357b3ba893b/blog-hero-texture-lines.jpg" width="300" style="width:auto;height:auto;max-width:100%;max-height:450px;object-fit:contain;display:block;border-radius:4px;" loading="lazy" /><div class="blog-content" data-testid="content-widget"><div class="flex flex-col [&amp;_*+h2]:mt-[50px] [&amp;_h2]:mb-[18px] [&amp;_*+h3]:mt-[20px] [&amp;_h3]:mb-[12px] [&amp;_*+h4]:mt-[20px] [&amp;_h4]:mb-[12px] [&amp;_*+h5]:mt-[20px] [&amp;_h5]:mb-[12px] [&amp;_p:not(:last-child)]:mb-[12px] [&amp;_li:not(:last-child)]:mb-[12px] [&amp;_blockquote]:mt-[20px] [&amp;_blockquote]:mb-[20px] [&amp;_blockquote]:pt-[6px] [&amp;_blockquote]:pb-[6px] [&amp;_blockquote]:pl-[18px] [&amp;_blockquote]:text-[32px] [&amp;_blockquote]:border-l-[4px] [&amp;_blockquote]:border-[#D7D5D3] [&amp;_blockquote]:font-medium [&amp;_blockquote]:leading-[120%] [&amp;_pre]:my-[20px] [&amp;_pre&gt;code]:block [&amp;_pre&gt;code]:p-[16px] [&amp;_pre&gt;code]:rounded-[10px] [&amp;_pre&gt;code]:bg-code-block [&amp;_pre&gt;code]:text-code-block [&amp;_pre&gt;code]:overflow-x-auto hover:[&amp;_a]:decoration-primary-sinopia focus:[&amp;_a]:outline-dashed focus:[&amp;_a]:outline-[2px] focus:[&amp;_a]:outline-primary-sinopia visited:[&amp;_a]:text-primary-sinopia hover:[&amp;_a]:text-black-rich focus:[&amp;_a]:text-black-rich [&amp;_p]:text-gray-charcoal [&amp;_a]:text-gray-charcoal [&amp;_ul]:text-gray-charcoal [&amp;_ol]:text-gray-charcoal [&amp;_blockquote]:text-black-rich prose max-w-none"><p style="direction:ltr"><span style="font-size:undefined">Managing access to security tools shouldn't require another manual process. As organizations grow, keeping user accounts and permissions up to date becomes increasingly complex. Employees join, change roles, and leave, creating a constant need to update access across applications.</span></p><p style="direction:ltr"><span style="font-size:undefined">When these processes rely on manual administration, delays and oversights can introduce unnecessary work and security risk.</span></p><p style="direction:ltr"><span style="font-size:undefined">Rapid7 Command Platform now supports System for Cross-domain Identity Management (SCIM), enabling customers to automate user provisioning and deprovisioning through their existing identity provider (IdP).</span></p><p style="direction:ltr"><span style="font-size:undefined">This helps organizations reduce administrative overhead, maintain more consistent access controls, and manage identity at scale.</span></p><h2 id="automate-user-access-throughout-the-employee-lifecycle" style="direction:ltr">Automate user access throughout the employee lifecycle</h2><p style="direction:ltr"><span style="font-size:undefined">SCIM is an open standard that enables identity providers, such as Okta, to automatically manage user accounts in connected applications.</span></p><p style="direction:ltr"><span style="font-size:undefined">With SCIM enabled, Rapid7 Command Platform customers can:</span></p><ul><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined"><strong>Automate provisioning:</strong></span><span style="font-size:undefined"> Create accounts when employees join or need access.</span></p></li><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined"><strong>Keep user information current:</strong></span><span style="font-size:undefined"> Synchronize supported user attributes as information changes.</span></p></li><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined"><strong>Simplify offboarding:</strong></span><span style="font-size:undefined"> Automatically deactivate accounts when users no longer require access.</span></p></li><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined"><strong>Manage groups at scale:</strong></span><span style="font-size:undefined"> Synchronize group membership to help streamline access administration.</span></p></li></ul><p style="direction:ltr"><span style="font-size:undefined">Rather than manually updating accounts in Command Platform, administrators can manage supported identity lifecycle changes through their existing IdP.</span></p><h2 id="less-administration-more-consistent-access-control" style="direction:ltr">Less administration, more consistent access control</h2><p style="direction:ltr"><span style="font-size:undefined">Consider a common scenario: An employee leaves the organization. Without automated provisioning, an administrator must remember to deactivate that employee's access across their applications. If an account is missed, it could remain active longer than intended.</span></p><p style="direction:ltr"><span style="font-size:undefined">With SCIM, changes made in the organization's identity provider can automatically trigger corresponding account updates in Command Platform.</span></p><p style="direction:ltr"><span style="font-size:undefined">By introducing SCIM at the platform level, Rapid7 helps organizations:</span></p><ul><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined">Reduce operational overhead by eliminating repetitive account-management tasks.</span></p></li><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined">Strengthen access governance by reducing stale accounts and keeping user information aligned with identity provider policies.</span></p></li><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined">Scale more efficiently by centralizing identity lifecycle management for supported Command Platform applications.</span></p></li></ul><p style="direction:ltr"><span style="font-size:undefined">For organizations with security and compliance requirements, these capabilities also help support consistent onboarding and offboarding processes.</span></p><h2 id="get-started-with-scim" style="direction:ltr">Get started with SCIM</h2><p style="direction:ltr"><span style="font-size:undefined">SCIM support is now available to Rapid7 Command Platform customers.</span></p><p style="direction:ltr"><span style="font-size:undefined">Platform administrators can configure SCIM through Command Platform's SSO settings using their existing identity provider. SCIM is disabled by default and requires configuration before automated provisioning begins.</span></p><p style="direction:ltr"><span style="font-size:undefined">For prerequisites and setup instructions, visit the</span><a data-gtm-cta="command-platform-scim-integration-documentation" data-gtm-location="content-rte-link" href="https://docs.rapid7.com/insight/scim/" rel="noopener" target="_blank"><span style="font-size:undefined"> Command Platform SCIM integration documentation</span></a><span style="font-size:undefined">.</span></p></div></div><section aria-labelledby="blog-post-article-tags-title" class="py-[30px] border-t border-gray-platinum mt-7" data-testid="blog-post-article-tags"><h2 class="mb-[14px] text-black-rich text-[18px] font-normal leading-[110%] tracking-[-0.36px]" id="blog-post-article-tags-title">Article tags</h2></section><footer data-testid="blog-post-footer"></footer> <img src="https://www.rapid7.com/cdn/images/blt3cc8c945f314ec1f/68b9a045a7d14357b3ba893b/blog-hero-texture-lines.jpg" width="300" style="width:auto;height:auto;max-width:100%;max-height:450px;object-fit:contain;display:block;border-radius:4px;" loading="lazy" /><div class="blog-content" data-testid="content-widget"><div class="flex flex-col [&amp;_*+h2]:mt-[50px] [&amp;_h2]:mb-[18px] [&amp;_*+h3]:mt-[20px] [&amp;_h3]:mb-[12px] [&amp;_*+h4]:mt-[20px] [&amp;_h4]:mb-[12px] [&amp;_*+h5]:mt-[20px] [&amp;_h5]:mb-[12px] [&amp;_p:not(:last-child)]:mb-[12px] [&amp;_li:not(:last-child)]:mb-[12px] [&amp;_blockquote]:mt-[20px] [&amp;_blockquote]:mb-[20px] [&amp;_blockquote]:pt-[6px] [&amp;_blockquote]:pb-[6px] [&amp;_blockquote]:pl-[18px] [&amp;_blockquote]:text-[32px] [&amp;_blockquote]:border-l-[4px] [&amp;_blockquote]:border-[#D7D5D3] [&amp;_blockquote]:font-medium [&amp;_blockquote]:leading-[120%] [&amp;_pre]:my-[20px] [&amp;_pre&gt;code]:block [&amp;_pre&gt;code]:p-[16px] [&amp;_pre&gt;code]:rounded-[10px] [&amp;_pre&gt;code]:bg-code-block [&amp;_pre&gt;code]:text-code-block [&amp;_pre&gt;code]:overflow-x-auto hover:[&amp;_a]:decoration-primary-sinopia focus:[&amp;_a]:outline-dashed focus:[&amp;_a]:outline-[2px] focus:[&amp;_a]:outline-primary-sinopia visited:[&amp;_a]:text-primary-sinopia hover:[&amp;_a]:text-black-rich focus:[&amp;_a]:text-black-rich [&amp;_p]:text-gray-charcoal [&amp;_a]:text-gray-charcoal [&amp;_ul]:text-gray-charcoal [&amp;_ol]:text-gray-charcoal [&amp;_blockquote]:text-black-rich prose max-w-none"><p style="direction:ltr"><span style="font-size:undefined">Managing access to security tools shouldn't require another manual process. As organizations grow, keeping user accounts and permissions up to date becomes increasingly complex. Employees join, change roles, and leave, creating a constant need to update access across applications.</span></p><p style="direction:ltr"><span style="font-size:undefined">When these processes rely on manual administration, delays and oversights can introduce unnecessary work and security risk.</span></p><p style="direction:ltr"><span style="font-size:undefined">Rapid7 Command Platform now supports System for Cross-domain Identity Management (SCIM), enabling customers to automate user provisioning and deprovisioning through their existing identity provider (IdP).</span></p><p style="direction:ltr"><span style="font-size:undefined">This helps organizations reduce administrative overhead, maintain more consistent access controls, and manage identity at scale.</span></p><h2 id="automate-user-access-throughout-the-employee-lifecycle" style="direction:ltr">Automate user access throughout the employee lifecycle</h2><p style="direction:ltr"><span style="font-size:undefined">SCIM is an open standard that enables identity providers, such as Okta, to automatically manage user accounts in connected applications.</span></p><p style="direction:ltr"><span style="font-size:undefined">With SCIM enabled, Rapid7 Command Platform customers can:</span></p><ul><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined"><strong>Automate provisioning:</strong></span><span style="font-size:undefined"> Create accounts when employees join or need access.</span></p></li><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined"><strong>Keep user information current:</strong></span><span style="font-size:undefined"> Synchronize supported user attributes as information changes.</span></p></li><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined"><strong>Simplify offboarding:</strong></span><span style="font-size:undefined"> Automatically deactivate accounts when users no longer require access.</span></p></li><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined"><strong>Manage groups at scale:</strong></span><span style="font-size:undefined"> Synchronize group membership to help streamline access administration.</span></p></li></ul><p style="direction:ltr"><span style="font-size:undefined">Rather than manually updating accounts in Command Platform, administrators can manage supported identity lifecycle changes through their existing IdP.</span></p><h2 id="less-administration-more-consistent-access-control" style="direction:ltr">Less administration, more consistent access control</h2><p style="direction:ltr"><span style="font-size:undefined">Consider a common scenario: An employee leaves the organization. Without automated provisioning, an administrator must remember to deactivate that employee's access across their applications. If an account is missed, it could remain active longer than intended.</span></p><p style="direction:ltr"><span style="font-size:undefined">With SCIM, changes made in the organization's identity provider can automatically trigger corresponding account updates in Command Platform.</span></p><p style="direction:ltr"><span style="font-size:undefined">By introducing SCIM at the platform level, Rapid7 helps organizations:</span></p><ul><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined">Reduce operational overhead by eliminating repetitive account-management tasks.</span></p></li><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined">Strengthen access governance by reducing stale accounts and keeping user information aligned with identity provider policies.</span></p></li><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined">Scale more efficiently by centralizing identity lifecycle management for supported Command Platform applications.</span></p></li></ul><p style="direction:ltr"><span style="font-size:undefined">For organizations with security and compliance requirements, these capabilities also help support consistent onboarding and offboarding processes.</span></p><h2 id="get-started-with-scim" style="direction:ltr">Get started with SCIM</h2><p style="direction:ltr"><span style="font-size:undefined">SCIM support is now available to Rapid7 Command Platform customers.</span></p><p style="direction:ltr"><span style="font-size:undefined">Platform administrators can configure SCIM through Command Platform's SSO settings using their existing identity provider. SCIM is disabled by default and requires configuration before automated provisioning begins.</span></p><p style="direction:ltr"><span style="font-size:undefined">For prerequisites and setup instructions, visit the</span><a data-gtm-cta="command-platform-scim-integration-documentation" data-gtm-location="content-rte-link" href="https://docs.rapid7.com/insight/scim/" rel="noopener" target="_blank"><span style="font-size:undefined"> Command Platform SCIM integration documentation</span></a><span style="font-size:undefined">.</span></p></div></div><section aria-labelledby="blog-post-article-tags-title" class="py-[30px] border-t border-gray-platinum mt-7" data-testid="blog-post-article-tags"><h2 class="mb-[14px] text-black-rich text-[18px] font-normal leading-[110%] tracking-[-0.36px]" id="blog-post-article-tags-title">Article tags</h2></section><footer data-testid="blog-post-footer"></footer> https://www.rapid7.com/blog/post/pt-scim-simplifies-user-access-management-uam-command-platform cyber Tue, 27 Oct 2026 12:24:04 +0000 How Rapid7 InsightGovCloud Supports BOD 22-01 Compliance https://www.rapid7.com/blog/post/pt-insightgovcloud-supports-bod-22-01-compliance <img src="https://www.rapid7.com/cdn/images/bltebc2810157aecfaf/68af2715c53b04810df94abb/blog-hero-generic-pixel.jpg" width="300" style="width:auto;height:auto;max-width:100%;max-height:450px;object-fit:contain;display:block;border-radius:4px;" loading="lazy" /><div class="blog-content" data-testid="content-widget"><div class="flex flex-col [&amp;_*+h2]:mt-[50px] [&amp;_h2]:mb-[18px] [&amp;_*+h3]:mt-[20px] [&amp;_h3]:mb-[12px] [&amp;_*+h4]:mt-[20px] [&amp;_h4]:mb-[12px] [&amp;_*+h5]:mt-[20px] [&amp;_h5]:mb-[12px] [&amp;_p:not(:last-child)]:mb-[12px] [&amp;_li:not(:last-child)]:mb-[12px] [&amp;_blockquote]:mt-[20px] [&amp;_blockquote]:mb-[20px] [&amp;_blockquote]:pt-[6px] [&amp;_blockquote]:pb-[6px] [&amp;_blockquote]:pl-[18px] [&amp;_blockquote]:text-[32px] [&amp;_blockquote]:border-l-[4px] [&amp;_blockquote]:border-[#D7D5D3] [&amp;_blockquote]:font-medium [&amp;_blockquote]:leading-[120%] [&amp;_pre]:my-[20px] [&amp;_pre&gt;code]:block [&amp;_pre&gt;code]:p-[16px] [&amp;_pre&gt;code]:rounded-[10px] [&amp;_pre&gt;code]:bg-code-block [&amp;_pre&gt;code]:text-code-block [&amp;_pre&gt;code]:overflow-x-auto hover:[&amp;_a]:decoration-primary-sinopia focus:[&amp;_a]:outline-dashed focus:[&amp;_a]:outline-[2px] focus:[&amp;_a]:outline-primary-sinopia visited:[&amp;_a]:text-primary-sinopia hover:[&amp;_a]:text-black-rich focus:[&amp;_a]:text-black-rich [&amp;_p]:text-gray-charcoal [&amp;_a]:text-gray-charcoal [&amp;_ul]:text-gray-charcoal [&amp;_ol]:text-gray-charcoal [&amp;_blockquote]:text-black-rich prose max-w-none"><h2 id="an-introduction-to-cisa-s-bod-22-01">An introduction to CISA’s BOD 22-01</h2><p style="direction:ltr"><span style="font-size:undefined">Issued nearly four years ago, the U.S. Cybersecurity and Infrastructure Security Agency (CISA) Binding Operational Directive 22-01 (BOD 22-01) has been adopted across both public and private sector organizations as a framework to ensure timely remediation of vulnerabilities being exploited by adversaries. By establishing a catalog of known exploited vulnerabilities (KEVs) and emphasizing a risk-based, prioritized approach, it provides a clear model for organizations to strengthen their cybersecurity posture and reduce exposure to real-world threats.</span></p><p style="direction:ltr"><a data-gtm-cta="insightgovcloud" data-gtm-location="content-rte-link" href="/solutions/compliance/fedramp/" rel="noopener" target="_self"><span style="font-size:undefined">InsightGovCloud</span></a><span style="font-size:undefined">, Rapid7’s FedRAMP-authorized suite of security solutions, helps organizations implement BOD 22-01 by providing automated vulnerability scanning, real-time alerts for KEVs, and reporting aligned with regulatory requirements. Public and private sector teams can quickly identify at-risk assets, prioritize remediation efforts based on active exploitation, and maintain an auditable record of compliance. By leveraging our secure, cloud-based platform, organizations gain continuous visibility, streamlined vulnerability management, and the confidence that remediation aligns with federal cybersecurity standards.</span></p><h2 id="how-insightgovcloud-stacks-up-against-key-bod-22-01-requirements">How InsightGovCloud stacks up against key BOD 22-01 requirements</h2><h3><span style="font-size:undefined">Requirement 1: Maintain continuous inventory and visibility</span></h3><ul><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined">InsightVM, included in the suite, supports continuous and automated discovery of both external and internal assets through Discovery Connections, which allow organizations to continuously poll network sources like Active Directory, AWS, and Azure to enumerate connected hosts and launch scans. </span></p></li><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined">For cloud environments, Rapid7 InsightCloudSec will continuously inventory the entire environment for the creation of new resources and automatically scan and assess those resources against compliance frameworks.</span></p></li><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined">Rapid7 also maintains up-to-date inventory of CISA KEVs with an industry leading 90% coverage for both on-premise and cloud based host vulnerabilities.</span></p></li></ul><h3><span style="font-size:undefined">Requirement 2: Remediate CISA KEV findings on a prioritized schedule</span></h3><ul><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined">Continuous ingestion of CISA KEV catalog by Rapid7 ensures that detection and prioritization of KEV’s can be streamlined and native to one platform.</span></p></li><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined">Automatically detect and triage assets with KEVs across cloud and hybrid environments.</span></p></li><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined">Prioritize CISA KEV’s across your entire environment and establish remediation projects to quickly and collaboratively remediate KEVs.</span></p></li></ul><h3><span style="font-size:undefined">Requirement 3: Establish policies and enforcement</span></h3><ul><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined">Collaborative remediation and compliance goals automatically track and assign vulnerabilities to the right teams with organizational defined timelines and real time dashboards to measure progress.</span></p></li></ul><h3><span style="font-size:undefined">Requirement 4: Automate reporting</span></h3><ul><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined">Rapid7 has predefined exports in Cyberscope XML reporting format for seamless ingestion into reports for CyberScope submissions as per </span><span style="font-size:undefined"><em>CyberScope Automated Data Feeds Submission Manual</em></span><span style="font-size:undefined"> published by the U.S. Office of Management and Budget.</span></p></li><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined">Built-in audit trail to demonstrate adherence with BOD 22-01. </span></p></li></ul><h2 id="why-agencies-and-contractors-choose-insightgovcloud">Why agencies and contractors choose InsightGovCloud</h2><p style="direction:ltr"><span style="font-size:undefined">Rapid7 InsightGovCloud is designed to support the rigorous requirements of state and local government agencies. The benefits are many, but among the top are its deployment into a FedRAMP Authorized environment – meeting federal security and compliance requirements at every level – its seamless integration into an existing security ecosystem, and its out-of-the-box alignment with CISA and CMMC security mandates. </span></p><p style="direction:ltr"><span style="font-size:undefined">Agencies and contractors enjoy a future-proof tool in that Rapid7 is continuously updating against the ever-growing KEV catalog, as well as unmatched visibility and control through leadership-friendly reporting. Get to know the platform better </span><a data-gtm-cta="here" data-gtm-location="content-rte-link" href="https://www.rapid7.com/solutions/compliance/fedramp/" rel="noopener" target="_blank"><span style="font-size:undefined">here</span></a><span style="font-size:undefined">.</span></p></div></div><section aria-labelledby="blog-post-article-tags-title" class="py-[30px] border-t border-gray-platinum mt-7" data-testid="blog-post-article-tags"><h2 class="mb-[14px] text-black-rich text-[18px] font-normal leading-[110%] tracking-[-0.36px]" id="blog-post-article-tags-title">Article tags</h2></section><footer data-testid="blog-post-footer"></footer> <img src="https://www.rapid7.com/cdn/images/bltebc2810157aecfaf/68af2715c53b04810df94abb/blog-hero-generic-pixel.jpg" width="300" style="width:auto;height:auto;max-width:100%;max-height:450px;object-fit:contain;display:block;border-radius:4px;" loading="lazy" /><div class="blog-content" data-testid="content-widget"><div class="flex flex-col [&amp;_*+h2]:mt-[50px] [&amp;_h2]:mb-[18px] [&amp;_*+h3]:mt-[20px] [&amp;_h3]:mb-[12px] [&amp;_*+h4]:mt-[20px] [&amp;_h4]:mb-[12px] [&amp;_*+h5]:mt-[20px] [&amp;_h5]:mb-[12px] [&amp;_p:not(:last-child)]:mb-[12px] [&amp;_li:not(:last-child)]:mb-[12px] [&amp;_blockquote]:mt-[20px] [&amp;_blockquote]:mb-[20px] [&amp;_blockquote]:pt-[6px] [&amp;_blockquote]:pb-[6px] [&amp;_blockquote]:pl-[18px] [&amp;_blockquote]:text-[32px] [&amp;_blockquote]:border-l-[4px] [&amp;_blockquote]:border-[#D7D5D3] [&amp;_blockquote]:font-medium [&amp;_blockquote]:leading-[120%] [&amp;_pre]:my-[20px] [&amp;_pre&gt;code]:block [&amp;_pre&gt;code]:p-[16px] [&amp;_pre&gt;code]:rounded-[10px] [&amp;_pre&gt;code]:bg-code-block [&amp;_pre&gt;code]:text-code-block [&amp;_pre&gt;code]:overflow-x-auto hover:[&amp;_a]:decoration-primary-sinopia focus:[&amp;_a]:outline-dashed focus:[&amp;_a]:outline-[2px] focus:[&amp;_a]:outline-primary-sinopia visited:[&amp;_a]:text-primary-sinopia hover:[&amp;_a]:text-black-rich focus:[&amp;_a]:text-black-rich [&amp;_p]:text-gray-charcoal [&amp;_a]:text-gray-charcoal [&amp;_ul]:text-gray-charcoal [&amp;_ol]:text-gray-charcoal [&amp;_blockquote]:text-black-rich prose max-w-none"><h2 id="an-introduction-to-cisa-s-bod-22-01">An introduction to CISA’s BOD 22-01</h2><p style="direction:ltr"><span style="font-size:undefined">Issued nearly four years ago, the U.S. Cybersecurity and Infrastructure Security Agency (CISA) Binding Operational Directive 22-01 (BOD 22-01) has been adopted across both public and private sector organizations as a framework to ensure timely remediation of vulnerabilities being exploited by adversaries. By establishing a catalog of known exploited vulnerabilities (KEVs) and emphasizing a risk-based, prioritized approach, it provides a clear model for organizations to strengthen their cybersecurity posture and reduce exposure to real-world threats.</span></p><p style="direction:ltr"><a data-gtm-cta="insightgovcloud" data-gtm-location="content-rte-link" href="/solutions/compliance/fedramp/" rel="noopener" target="_self"><span style="font-size:undefined">InsightGovCloud</span></a><span style="font-size:undefined">, Rapid7’s FedRAMP-authorized suite of security solutions, helps organizations implement BOD 22-01 by providing automated vulnerability scanning, real-time alerts for KEVs, and reporting aligned with regulatory requirements. Public and private sector teams can quickly identify at-risk assets, prioritize remediation efforts based on active exploitation, and maintain an auditable record of compliance. By leveraging our secure, cloud-based platform, organizations gain continuous visibility, streamlined vulnerability management, and the confidence that remediation aligns with federal cybersecurity standards.</span></p><h2 id="how-insightgovcloud-stacks-up-against-key-bod-22-01-requirements">How InsightGovCloud stacks up against key BOD 22-01 requirements</h2><h3><span style="font-size:undefined">Requirement 1: Maintain continuous inventory and visibility</span></h3><ul><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined">InsightVM, included in the suite, supports continuous and automated discovery of both external and internal assets through Discovery Connections, which allow organizations to continuously poll network sources like Active Directory, AWS, and Azure to enumerate connected hosts and launch scans. </span></p></li><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined">For cloud environments, Rapid7 InsightCloudSec will continuously inventory the entire environment for the creation of new resources and automatically scan and assess those resources against compliance frameworks.</span></p></li><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined">Rapid7 also maintains up-to-date inventory of CISA KEVs with an industry leading 90% coverage for both on-premise and cloud based host vulnerabilities.</span></p></li></ul><h3><span style="font-size:undefined">Requirement 2: Remediate CISA KEV findings on a prioritized schedule</span></h3><ul><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined">Continuous ingestion of CISA KEV catalog by Rapid7 ensures that detection and prioritization of KEV’s can be streamlined and native to one platform.</span></p></li><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined">Automatically detect and triage assets with KEVs across cloud and hybrid environments.</span></p></li><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined">Prioritize CISA KEV’s across your entire environment and establish remediation projects to quickly and collaboratively remediate KEVs.</span></p></li></ul><h3><span style="font-size:undefined">Requirement 3: Establish policies and enforcement</span></h3><ul><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined">Collaborative remediation and compliance goals automatically track and assign vulnerabilities to the right teams with organizational defined timelines and real time dashboards to measure progress.</span></p></li></ul><h3><span style="font-size:undefined">Requirement 4: Automate reporting</span></h3><ul><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined">Rapid7 has predefined exports in Cyberscope XML reporting format for seamless ingestion into reports for CyberScope submissions as per </span><span style="font-size:undefined"><em>CyberScope Automated Data Feeds Submission Manual</em></span><span style="font-size:undefined"> published by the U.S. Office of Management and Budget.</span></p></li><li style="direction:ltr"><p style="direction:ltr"><span style="font-size:undefined">Built-in audit trail to demonstrate adherence with BOD 22-01. </span></p></li></ul><h2 id="why-agencies-and-contractors-choose-insightgovcloud">Why agencies and contractors choose InsightGovCloud</h2><p style="direction:ltr"><span style="font-size:undefined">Rapid7 InsightGovCloud is designed to support the rigorous requirements of state and local government agencies. The benefits are many, but among the top are its deployment into a FedRAMP Authorized environment – meeting federal security and compliance requirements at every level – its seamless integration into an existing security ecosystem, and its out-of-the-box alignment with CISA and CMMC security mandates. </span></p><p style="direction:ltr"><span style="font-size:undefined">Agencies and contractors enjoy a future-proof tool in that Rapid7 is continuously updating against the ever-growing KEV catalog, as well as unmatched visibility and control through leadership-friendly reporting. Get to know the platform better </span><a data-gtm-cta="here" data-gtm-location="content-rte-link" href="https://www.rapid7.com/solutions/compliance/fedramp/" rel="noopener" target="_blank"><span style="font-size:undefined">here</span></a><span style="font-size:undefined">.</span></p></div></div><section aria-labelledby="blog-post-article-tags-title" class="py-[30px] border-t border-gray-platinum mt-7" data-testid="blog-post-article-tags"><h2 class="mb-[14px] text-black-rich text-[18px] font-normal leading-[110%] tracking-[-0.36px]" id="blog-post-article-tags-title">Article tags</h2></section><footer data-testid="blog-post-footer"></footer> https://www.rapid7.com/blog/post/pt-insightgovcloud-supports-bod-22-01-compliance cyber Wed, 28 Oct 2026 13:16:39 +0000 hourly1