PHP2Shell

The critical, unauthenticated remote code execution flaw in PHP. Here's how PentX finds it, and the free way to know if you're exposed.

CRITICAL CVE-2026-109618 CVE-2026-109619 Unauthenticated RCE
2
Related CVEs
4
PHP branches patched
<60s
To check your site
$0
Cost, no sign-up
The vulnerability

What is PHP2Shell?

PHP2Shell is a critical weakness in the PHP engine itself. A single crafted request to an affected PHP application can be escalated into arbitrary code execution on the server: no login, no credentials, no user interaction. If you run PHP, it is the kind of flaw that turns a web page into a shell.

⚡

Unauthenticated

No account and no privileged access required. Anyone who can reach the application can attempt it.

🔗

Remote code execution

Successful exploitation runs attacker-controlled code with the privileges of the web process.

🌐

Internet-wide blast radius

PHP powers a large share of the web. The affected version range spans years of releases, including every end-of-life branch.

Detection

How PentX finds it

Finding PHP2Shell exposure is the hard part: the tell is subtle and most scanners miss it. PentX looks for it the way a real attacker would, during live, autonomous testing, so you learn you're exposed before someone else does.

Fingerprint the stack

PentX reads the PHP version from response headers, cookies and page content, the same signals an attacker reads first.

Match the advisory

That version is checked against the PHP2Shell fix table, including every end-of-life branch that will never get a patch.

Flag what is not provably safe

Anything that cannot be confirmed patched is surfaced rather than hidden, so a stripped or unknown version never reads as safe.

Verify continuously

PentX re-tests your surface so a regression or a forgotten host does not quietly reintroduce the exposure.

Are you affected?

Affected PHP versions

If you can't prove you're on a patched release, assume you're exposed. End-of-life branches will never get a fix.

PHP branch
Status
What to do
4.x – 8.1 (EOL)
Vulnerable
No upstream fix exists. Upgrade to a supported, patched release.
8.2 < 8.2.35
Vulnerable
Upgrade to 8.2.35 or later.
8.3 < 8.3.36
Vulnerable
Upgrade to 8.3.36 or later.
8.4 < 8.4.27
Vulnerable
Upgrade to 8.4.27 or later.
8.5 < 8.5.12
Vulnerable
Upgrade to 8.5.12 or later.
8.2.35 / 8.3.36 / 8.4.27 / 8.5.12 +
Patched
You're protected against PHP2Shell on these releases.

Don't guess. Check.

Run the free PentX PHP2Shell checker. It sends read-only requests, reads your PHP version, and tells you in seconds whether you're exposed: no payloads, no account, no cost.

Read-only · No sign-up · Results in under a minute

Remediation

How to fix PHP2Shell

1

Find your version

Check the PHP version on every host and container. The free checker does this for your public endpoints in seconds.

2

Upgrade

Move to 8.2.35, 8.3.36, 8.4.27 or 8.5.12 (or later). On an EOL branch, upgrade to a supported one. There is no back-port.

3

Verify continuously

Re-check after you patch, and keep watching. PentX re-tests your surface so a regression or a forgotten host doesn't slip back in.

FAQ

PHP2Shell, answered

What is PHP2Shell? +

PHP2Shell is a critical, unauthenticated remote code execution vulnerability in PHP, tracked as CVE-2026-109618 and CVE-2026-109619. It lets an attacker turn an ordinary request to a PHP application into arbitrary code execution on the server, with no credentials required.

Which PHP versions are affected? +

Every PHP branch below 8.2 is end of life and has no fix, so it's treated as vulnerable. On supported branches, the fixes are 8.2.35, 8.3.36, 8.4.27 and 8.5.12; anything below those is vulnerable.

Is PHP 5.x or 7.x affected? +

Yes. PHP 5.x and 7.x are end of life and receive no security patches, including for PHP2Shell. If you're still running them, treat them as vulnerable and upgrade to a supported, patched release.

How do I check if my site is vulnerable? +

Use the free PentX PHP2Shell checker. It sends only read-only requests, reads your PHP version, and tells you in seconds whether you're exposed. No account and no payload required.

How do I fix it? +

Upgrade PHP to a patched release for your branch: 8.2.35, 8.3.36, 8.4.27 or 8.5.12 or later. On an end-of-life branch (8.1 or below), upgrade to a supported, patched version.