Spectra Assure Free Trial
Get your 14-day free trial of Spectra Assure for Software Supply Chain Security
Get Free TrialMore about Spectra Assure Free TrialPHP2Shell is a pair of critical PHP runtime vulnerabilities, CVE-2026-109618 and CVE-2026-109619, that let an unauthenticated attacker run code on a web server with crafted HTTP requests. Both are rated CVSS v4.0 9.2. The PHP project fixed them on October 21, 2026, in PHP 8.2.35, 8.3.36, 8.4.27, and 8.5.12.
The ReversingLabs Research Team has analyzed both vulnerabilities, mapped which PHP releases are affected, and added PHP2Shell detection to Spectra Assure so affected PHP components can be found inside compiled software packages. This entry covers what we found and how to remediate.
The name says it all: PHP in, shell out. The flaws sit in the PHP engine, not in a framework or plugin. Our analysis shows that even a minimal "Hello World" app running on an affected PHP build can be exposed.
PHP2Shell is new, but the code it lives in is not. PHP has powered the web since 1995, and the vulnerable error-handling paths date back to PHP 5.4, released in 2012. They sat in production for more than a decade.
Our research team sees PHP2Shell as the latest in a recurring pattern: a flaw in how PHP receives and processes requests, not in application code, turns into server takeover at scale.
Year | Vulnerability | What happened |
2026 | PHP2Shell (CVE-2026-109618, CVE-2026-109619) | Use-after-free and memory corruption after fatal errors enable unauthenticated RCE |
2024 | CVE-2024-4577 | PHP-CGI argument injection on Windows, quickly exploited by ransomware operators |
2019 | CVE-2019-11043 | PHP-FPM buffer underflow behind certain NGINX configurations, exploited soon after disclosure |
2012 | CVE-2012-1823 | PHP-CGI query-string flaw let attackers pass command-line arguments to PHP |
Date (2026) | Event |
Aug 1 | First vulnerability found during an AI-assisted audit of PHP's source code |
Aug 11 | First vulnerability reported to PHP |
Aug 19 | A second, independent team finds the flaws |
Aug 20 | Unauthenticated RCE confirmed against Drupal |
Aug 21 | Unauthenticated RCE confirmed against WordPress |
Aug 24 | Second research team reports its findings to PHP |
Sep 21 | PHP security team acknowledges the reports and begins a coordinated fix |
Oct 20 | Details and a "php2shell" proof-of-concept script leak before the embargo; PHP pre-announces an emergency release |
Oct 21 | PHP ships 8.2.35, 8.3.36, 8.4.27, and 8.5.12; public disclosure; attack traffic reported |
The flaws were found independently by researchers at Calif and Wiz. About 81 days passed between first discovery and the patch, and working exploits against major CMSs existed within two days of the second team's discovery.
Both flaws share one root cause: PHP does not clean up safely when a request dies from a fatal or out-of-memory error. Internal state is left half-built or pointing at memory that has already been freed, and the next request handled by the same worker trusts it.
CVE | What our analysis shows | Result |
CVE-2026-109618 | An out-of-memory failure during request setup, including session upload-progress handling, leaves the unserializer's internal state published after its memory is freed. A related path leaves the session ID pointing at freed memory. | Memory corruption leading to RCE; remote leak of server memory through the PHPSESSID cookie, even when the app never calls session_start() |
CVE-2026-109619 | After a fatal error, the stored error backtrace keeps pointing at freed memory. Separately, OPcache metadata can fall out of sync while a script is being cached. | Cross-request use-after-free and cross-worker type confusion leading to RCE |
Attackers are already mutating payloads to slip past web application firewall rules, so treat WAF coverage as a stopgap, not a fix.
PHP2Shell is the clearest sign yet that AI has changed the speed of vulnerability discovery. Two independent teams found the same decade-old flaws within 18 days of each other, both using frontier AI models.
The tools that audited PHP can be pointed at any widely deployed runtime, parser, or library. Old, trusted code is now being re-read at machine speed, and the time from bug to exploit is shrinking.
Our research team's view: defenders can't wait for a vendor bulletin to learn what's inside their software. They need an inventory of the components inside critical systems before the next disclosure, so the next AI-found flaw is a lookup, not an investigation.
Patching the PHP servers you manage is the easy part. The harder question is whether your inventory is complete.
Enterprises run commercial software they don't build: digital banking platforms, file-transfer tools, network appliances, admin consoles, and virtual appliances. Many ship with an embedded PHP runtime that never appears in internal dependency scans. Because PHP2Shell needs no special application code, any embedded PHP that serves web requests is a candidate. Those products can only be fixed when the vendor rebuilds, tests, and ships a new release.
In our analysis of software packages, two issues come up again and again:
Vendor advisories help, but they are claims. Independent analysis of the software itself gives you the evidence to judge risk and verify the fix. For the full response playbook, read our companion piece, PHP2Shell: What security teams need to know.
The ReversingLabs Research Team recommends five steps:
Can't see inside your vendor software? ReversingLabs is offering PHP2Shell Exposure Assessments. Using Spectra Assure's new PHP2Shell detection, our team inspects selected third-party software packages and reports embedded PHP components and versions, findings tied to CVE-2026-109618 and CVE-2026-109619, and which packages need investigation or vendor remediation.
Use this table to check a PHP version. Run php -v on the server, or check the base image tag in your Dockerfile.
Your PHP version | PHP2Shell status | What to do |
8.5.12 or later | Fixed | Confirm every worker was restarted |
8.5.0 to 8.5.11 | Affected | Upgrade to 8.5.12 |
8.4.27 or later | Fixed | Confirm every worker was restarted |
8.4.0 to 8.4.26 | Affected | Upgrade to 8.4.27 |
8.3.36 or later | Fixed | Confirm every worker was restarted |
8.3.0 to 8.3.35 | Affected | Upgrade to 8.3.36 |
8.2.35 or later | Fixed, but end of life Dec 31, 2026 | Plan a move to 8.4 or 8.5 |
8.2.0 to 8.2.34 | Affected | Upgrade to 8.2.35, then plan a move to 8.4 or later |
7.4, 8.0, 8.1 | Affected, unsupported | No official release. Use a vendor-patched build or source backport, or upgrade |
5.4 to 7.3 | Affected, no fix | Upgrade to a supported branch |
Embedded in vendor software | Unknown until verified | Version strings can hide backports. Request an Exposure Assessment |
Our research team expects PHP2Shell to mark the start of a pattern, not a one-off.
The organizations that respond fastest will be those that can already answer, with evidence, "Which of our critical software contains this component?"
PHP2Shell is the name for CVE-2026-109618 and CVE-2026-109619, two critical PHP engine vulnerabilities that allow unauthenticated remote code execution and remote memory leaks.
Every release from PHP 5.4 onward, up to the fixed releases: 8.2.35, 8.3.36, 8.4.27, and 8.5.12. See the version table above.
No. The flaws are in the PHP engine, so you must update PHP itself and restart its workers.
No. Even a minimal "Hello World" PHP app on an affected version can be vulnerable.
Working exploit code is circulating and attack traffic has been reported. Treat unpatched, internet-facing PHP as urgent.
Disabling session upload progress, capping request sizes, and WAF rules reduce exposure. None of them is a complete fix; updating is the only safe choice.
Yes. Two research teams found it independently using frontier AI models, with human experts guiding the work.
Ask vendors for specific evidence, and verify it with independent analysis. The ReversingLabs PHP2Shell Exposure Assessment identifies embedded PHP components and related findings in selected packages.

Source scanners, SBOMs, certificate managers and questionnaires all answer a different question — and none of them inspects the software that shipped.

ReversingLabs expanded the published hashes into a staging server, five stagers, two lure files and the domain-to-server links.

MFT and other trusted systems collect files, access and connections. Patching and inspecting what moves through it are separate defenses.