Skip to main content
Threat Intelligence · October 22, 2026

PHP2Shell CVE-2026-109618: Attackers Were In Before the Patch

PHP2Shell combines two critical unauthenticated RCE flaws in core PHP, and attackers were exploiting it before the patches landed. Patching closes the hole; it doesn't tell you who already walked through it.

Vijilan· 7 min read
PHP2Shell CVE-2026-109618: Attackers Were In Before the Patch

PHP2Shell is the name researchers gave to CVE-2026-109618 and CVE-2026-109619, two critical unauthenticated remote code execution vulnerabilities in core PHP. The PHP project shipped emergency patches after researchers confirmed exploitation attempts had already begun before fixed versions were publicly available. If you run PHP anywhere in your stack, this is not a patch-and-forget event.

Key takeaways

  • PHP2Shell covers CVE-2026-109618 and CVE-2026-109619, unauthenticated RCE flaws affecting core PHP, not a single plugin or CMS.
  • Exploitation attempts were observed before patches were released, which means any affected host had exposure before a fix existed.
  • AWS and Cloudflare warned that exploit attempts are hitting millions of targets as scanning scales up post-disclosure.
  • Updating PHP removes the vulnerability going forward. It does not tell you whether a web root was already touched during the exposure window.

What is PHP2Shell (CVE-2026-109618, CVE-2026-109619)?

PHP2Shell refers to a pair of critical, unauthenticated remote code execution vulnerabilities in the PHP interpreter itself, tracked as CVE-2026-109618 and CVE-2026-109619. Because the flaws sit in core PHP rather than a specific application, any site, CMS, or custom codebase running an affected PHP version is a candidate for exploitation, regardless of what framework sits on top of it.

That breadth is what makes PHP2Shell different from a single-product CVE. Tenable's FAQ and watchtowr's analysis both walk through why unauthenticated RCE in the interpreter layer turns into a volume problem fast: there is no single vendor patch cadence to wait on, just a long list of hosting environments, each on its own update schedule.

When did exploitation actually start?

Exploitation started before public patches existed, not after. SecurityWeek reported that attackers were already probing and exploiting PHP2Shell prior to the fixed releases landing, and a follow-up piece confirmed patches arrived as the first exploitation attempts hit sensors. The Register's coverage adds that AWS confirmed attacks began before public disclosure, which is the detail that changes the response calculus for every MSP managing PHP-backed infrastructure.

The practical consequence: a clean CVE scan run today tells you what's patchable, not what already happened. SecurityWeek separately warned that mass exploitation was expected once technical details leaked, and cybernews reported that Amazon and Cloudflare were already seeing exploit attempts scale into the millions as opportunistic scanning picked up the pace.

Who is affected, and how do I check?

Any environment running an unpatched, affected PHP version is exposed, including hosted CMS platforms, custom web applications, and internal tools built on PHP. Brandefense published a free check alongside the list of fixed versions, and SocRadar's breakdown covers which versions remain vulnerable by branch.

ActionWhat it tells youWhat it misses
Version/patch scanWhich hosts still run vulnerable PHPWhether that host was already compromised
Log review for the exploit patternRecent exploitation attemptsActivity before logging or retention started
Full SOC hunt across web root, process tree, egressEvidence of prior compromise and lateral movementNothing, this is the step that actually answers the question

Help Net Security's summary and Datadog's technical analysis both lay out detection guidance, including the file and process signatures worth checking before you mark a ticket closed.

Why patching PHP doesn't answer the real question

Patching PHP closes CVE-2026-109618 and CVE-2026-109619 going forward. It does not tell you who exploited the hole during the window before the fix existed, and sansec's research along with Unit 42's threat brief both describe the kind of webshell and backdoor activity that gets dropped during exactly this kind of pre-disclosure exploitation window.

This is the part MSPs keep underestimating with vulnerabilities like PHP2Shell: a ticket to upgrade PHP is necessary, but it's a prevention action, not an investigation. If an attacker already landed a web shell four days before the patch shipped, upgrading the interpreter doesn't remove the shell, it just stops the next one from getting dropped the same way.

Vijilan Security's Global SOC treats a disclosure like PHP2Shell as a hunt trigger, not just a patch-management line item. Analysts look for web-root file drops that don't match deployment history, anomalous PHP-worker child processes spawning shells or outbound tools, and egress connections from web hosts that have no business talking to the internet directly. When one of those shows up, the response isn't a ticket, it's isolating the box. That distinction, between detecting and acting, is what ThreatRespond™ and ThreatHunt™ are built around: hunting for the thing the patch can't retroactively undo, then containing it before it spreads further across the environment.

For partners running PHP-heavy client estates, this is also a good moment to pressure-test whether your current tooling gives you process-tree and egress visibility on every web host, or just a vulnerability scanner that tells you what to patch next. Co-managed SIEM and 24/7 SOC monitoring exist specifically so that question has an answer before the next PHP2Shell-sized event, not during it.

What should MSPs do about PHP2Shell right now?

Patch every PHP instance to a fixed version immediately, using the version lists published by JFrog or Google Cloud's response guidance. Then run a hunt, not just a scan, across every PHP host that was internet-facing during the exposure window, looking specifically for activity that predates the patch timestamp.

Don't treat a clean current-state scan as proof of a clean history. Huntress's rapid response write-up and Abstract Security's analysis both reinforce the same point: the exploitation window started before public awareness, so logs and endpoint telemetry from that period are the only honest source of truth.

If your clients' PHP environments don't have retained logs or endpoint visibility going back far enough to cover the pre-disclosure window, that's the gap to close before the next core-language vulnerability lands, not after.

Next step

If you're not confident your current tooling would have caught web-root activity during the days before PHP2Shell was disclosed, that's worth a direct look. See how ThreatHunt™ and ThreatRespond™ close that exact gap, and what a SOC for MSPs actually watches for when a core-language CVE lands with a head start already in play.

Sources

  1. PHP2Shell
  2. PHP2Shell: Fixed PHP Versions and Free Check - Brandefense
  3. PHP RCE FAQ: PHP2Shell CVE-2026-109618 & CVE-2026-109619
  4. PHP2Shell - Critical vulnerabilities in PHP (CVE-2026-109618, CVE-2026-109619): detection, analysis, and remediation
  5. PHP2Shell: Critical PHP RCE (CVE-2026-109618, CVE-2026-109619)
  6. PHP2Shell: All You Need to Know About CVE-2026-109618 and CVE-2026-109619 - JFrog Security Research
  7. PHP2Shell: Mass Exploitation Looms for Leaked Critical PHP Flaws - SecurityWeek
  8. PHP2Shell: Critical PHP vulnerabilities patched, update now! - Help Net Security
  9. PHP2Shell CVE-2026-109618 & 109619: Affected Versions & Fix
  10. CVE-2026-109618 and CVE-2026-109619: Critical Unauthenticated Remote Code Execution in PHP
  11. php2shell (CVE-2026-109618, CVE-2026-109619): Critical PHP RCE FAQ
  12. Threat Brief: Critical Vulnerabilities in PHP: CVE-2026-109618, CVE-2026-109619
  13. Responding to core PHP vulnerabilities CVE-2026-109618 and CVE-2026-109619
  14. Rapid Response: php2shell, Leaked Critical PHP Vulnerabilities (CVE-2026-109618 & CVE-2026-109619)
  15. PHP2Shell: Critical PHP RCE Vulnerabilities CVE-2026-109618 and CVE-2026-109619
  16. PHP2Shell Exploitation Started Days Before Patches - SecurityWeek
  17. PHP2Shell exploit attempts hit millions, Amazon and Cloudflare warn
  18. PHP2Shell Patches Land as First Exploitation Attempts Hit Sensors - SecurityWeek
  19. Hackers pile on PHP2Shell as AWS reveals attacks began before disclosure
  20. PHP Issues Emergency Patches for Two Critical PHP2Shell RCE Flaws as Exploit Attempts Emerge

Found this useful? Send it to someone who needs it.

Threat notes, once a week

What our SOC actually saw this week: new attack patterns, the detections we shipped against them, and what it means if you run an MSP. Written by the analysts, not by marketing.

One email a week. One click to stop, and we do not sell your address to anyone.

Talk to a security expert

See what 24/7 looks like when the SOC actually acts.

Book a 20-minute platform walkthrough: no slide deck, just the console.

Book a walkthrough →

Questions this answers

What is PHP2Shell and which CVEs does it cover?

PHP2Shell is the name given to CVE-2026-109618 and CVE-2026-109619, two critical unauthenticated remote code execution vulnerabilities in core PHP. Because the flaws sit in the interpreter rather than a single application or plugin, any site or tool running an affected PHP version is a potential target, regardless of the framework built on top of it.

Did exploitation of PHP2Shell start before the patch was available?

Yes. Security researchers and AWS confirmed exploitation attempts began before the PHP project's fixed versions and public disclosure landed. That means scanning current PHP versions alone won't tell you whether a host was compromised during the exposure window, only whether it's currently patchable.

Is updating PHP enough to resolve a PHP2Shell exposure?

Updating PHP closes CVE-2026-109618 and CVE-2026-109619 going forward, but it does not remove anything an attacker may have already planted during the pre-patch exploitation window, such as a web shell or backdoor. A hunt across web root files, process activity, and outbound connections is needed to confirm the host wasn't already compromised.

How can MSPs tell if a client's PHP host was already exploited?

Look for web-root files that don't match deployment history, PHP worker processes spawning unexpected child processes or shells, and outbound connections from web hosts that shouldn't be initiating external traffic. A patch ticket alone won't surface any of that; it takes log review and endpoint visibility covering the days before disclosure.

What should an MSP do first when a core PHP vulnerability like this is disclosed?

Patch every affected PHP instance immediately using the vendor-published fixed versions, then run a hunt across hosts that were internet-facing during the exposure window rather than relying on a clean current-state scan. Confirm log and endpoint retention actually covers the pre-disclosure period before assuming there's nothing to find.