Threat briefing

PHP2Shell.
What happened?

Two critical flaws in PHP can let an attacker run code on a web server. The PHP team has proved that remote code execution is possible. Fixed releases are available now.

📅 22 October 2026⏱ 6 minute read✍️ RoboShadow research
php
9.2CVSS v4
2 flawsRemote code execution
The 30 second version

If PHP serves web requests, update it now. Do not wait for proof of attacks in the wild.

Critical

PHP's rating for both flaws

Unauthenticated

An attacker may not need a login

Fix available

Released 21 October 2026

The background

A web request can become server access

PHP runs much of the web. These flaws sit inside PHP itself, below the website or application that people see. An attacker can send specially prepared web requests that corrupt the PHP worker's memory.

CVE-2026-109618

An attacker forces PHP to run out of memory while it is still processing request data. Cleanup can then use invalid memory. With careful preparation, that memory corruption can run attacker-controlled code.

PHP demonstrated remote code execution over HTTP against Apache mod_php.

CVE-2026-109619

PHP workers handle many requests. In some cases, data from one request can remain after PHP has freed its memory. A later request can reuse that stale data, leak memory and run code.

PHP validated remote code execution in both mod_php and PHP-FPM paths.
Why "PHP2Shell"? It is a useful shorthand for the pair of flaws and their route to code execution. It is not the official name used by PHP.
Before release

Vendors were warned

PHP pre-notified Linux distribution and long-term-support vendors so they could prepare fixes.

21 October

PHP shipped updates

Four supported branches received fixed releases. Source backports were supplied for some older branches.

22 October

Patch now

Working exploitation has been demonstrated. There is no complete workaround that replaces updating.

Check in RoboShadow

Find PHP without guesswork

RoboShadow now checks specifically for these vulnerabilities. You can also use the manual checks below to find where PHP is present across your environment.

Detection update live

As of 1:30 pm UK time (12:30 pm GMT) on 22 October, RoboShadow can tell you, "You have this vulnerability."

This is a specific vulnerability result, rather than a general warning that PHP may be present.

When will it appear in your account? The update cannot change existing results immediately. RoboShadow must first receive fresh data from your External Scanner, LAN Scanner, OWASP Scanner or device scans. You may need to run a rescan or recalculate your results before the new detection appears.

Scan reachable services

Use the LAN Scanner, External Scanner and OWASP Scanner to find web services that disclose PHP or show a vulnerable route.

Check installed software

Agent inventory can find PHP packages on managed devices, including command line, CGI and FPM packages.

Verify the package

Compare the full package build with its Linux or LTS vendor advisory. A backported fix may keep an older PHP version number.

Earlier outreach

We emailed the RoboShadow users we identified

Before the specific detection update went live, we contacted users whose existing evidence showed that PHP may be present. That email was a prompt to investigate, not a claim that the organisation had been compromised.

What to do now

Update first. Then verify

PHP says updating is the only safe choice. Temporary configuration changes can reduce exposure, but they are not complete fixes.

Find every PHP web runtime

Include internet-facing and internal services. Check mod_php, PHP-FPM, php-cgi, FrankenPHP and LiteSpeed.

Prioritise exposed mod_php

PHP considers mod_php the highest risk path because unauthenticated code execution was demonstrated before application code runs.

Install a fixed release

Use the fixed upstream version or a package that your Linux or LTS vendor confirms contains the backported fix.

Restart PHP and web workers

Restart workers after patching so no process continues to run the old code or hold unsafe state.

Retest the service

Run the relevant External, LAN, OWASP or device scan again, then recalculate if needed. Record the vendor package build when the banner still reports an older upstream version.

Retire unsupported PHP

PHP 8.1 and older are unsupported upstream. PHP 8.2 reaches end of life on 31 December 2026.

Fixed upstream releases
PHP 8.2.35PHP 8.3.36PHP 8.4.27PHP 8.5.12

Older Linux package numbers may still be safe if the vendor has backported the fix. Confirm against the vendor's security advisory.

Common questions

What we know today

Has this been exploited in the wild?

PHP's security team has demonstrated working unauthenticated remote code execution. As of 22 October 2026, CISA has not listed either CVE in its Known Exploited Vulnerabilities catalogue, and we have no official confirmation of attacks in the wild. That does not mean attacks are not happening.

Is an internal PHP service safe?

No. Risk depends on whether an attacker can reach the service. An internal service can still be exposed through a compromised device, another network segment or an unsafe proxy route.

Can I rely on the version in a web banner?

No. It is useful evidence, but it can be stale, hidden or changed. Linux vendors can also add the security fix without changing the upstream PHP version shown in the banner.

Is there a workaround if I cannot patch today?

PHP published several ways to reduce exposure, including changes to memory limits, multipart request handling and worker state. PHP is clear that these are incomplete. Use the official advisory for emergency mitigation details and patch as soon as possible.

See what is exposed

Check your estate with RoboShadow

Find reachable services and installed PHP packages, then focus your team on the systems that need verification first.

Start free