Free PHP2Shell scanner to detect CVE-2026-109618 and CVE-2026-109619

Scan type
  • Light scan

Read the Terms of Service

This free PHP2Shell scanner checks if your target is vulnerable to CVE-2026-109618 and CVE-2026-109619.

Both are critical remote code execution flaws in PHP core, and details leaked online before a patch existed. The PHP security team rates each one 9.2 on CVSS v4.0.

Because PHP runs underneath WordPress, Drupal, Magento, shared hosting control panels, and plenty of vendor software that never mentions it, any unpatched instance is a target.

See the technical details and mitigation steps below while we prepare a PDF report you can share with your team.

Try the full scanner free for 7 days

Deep scans, authenticated scans, professional reports.
Business email + card required · Cancel before day 8, pay nothing.

Start 7-day free trial
Vuln Scanning

What are CVE-2026-109618 and CVE-2026-109619 (PHP2Shell)?

Technical details

CVE-2026-109618 and CVE-2026-109619 are two critical remote code execution vulnerabilities in PHP core: the interpreter itself, not a framework or CMS built on top of it. Details leaked on Hacker News on October 20, 2026, two days before the planned coordinated disclosure, and the PHP security team moved its emergency release up to October 21, 2026, at 14:00 UTC.

At the time of writing, PHP has not named the vulnerable component. The leading hypothesis among researchers points to the session upload progress handler (php_session_rfc1867_callback in ext/session/session.c). PHP runs it while parsing a multipart POST request that contains a PHP_SESSION_UPLOAD_PROGRESS field, before the application script executes. The feature is enabled by default since PHP 5.4.

If that hypothesis holds, an attacker who sends a single crafted multipart request could:

  • Execute arbitrary code on the server as the PHP worker user.
  • Plant a webshell and move laterally to databases, stored secrets, and every other site the same server hosts.

PHP is the runtime behind a huge share of the web, including WordPress, Drupal, Joomla, Magento, cPanel, Plesk, and internal tools nobody remembers deploying. A remote code execution flaw in PHP core doesn't affect one application; it potentially affects every application PHP serves.

How we detect CVE-2026-109618 and CVE-2026-109619

Version fingerprinting alone is tricky for these CVEs, for two reasons. It can:

  • understate risk (many production servers hide the PHP version in their response headers) and
  • overstate it (Linux distributions often backport security fixes without changing the upstream version string).

Products affected by CVE-2026-109618 and CVE-2026-109619

The vulnerabilities live in PHP core, so every PHP deployment is in scope until the official advisory narrows the range. Unverified reports claim every version from PHP 5 onward is affected; PHP will publish the confirmed affected and fixed versions with its security release.

As things stand, the following branches are relevant:

ProductVulnerable rangeFirst patched version
PHP 8.5Not yet publishedNot yet published
PHP 8.4Not yet publishedNot yet published
PHP 8.3Not yet publishedNot yet published
PHP 8.2Not yet publishedNot yet published
PHP 8.1 and older (end of life)Reported affected (unconfirmed)No fix expected

PHP only ships fixes for its four supported branches (8.2 through 8.5). Anything older, including 8.1, 8.0, 7.x, and 5.x, is end of life and gets no vendor patch. Unofficial fixed version numbers are already circulating; ignore them until PHP publishes its own.

Note: if you run a Linux distribution's PHP packages, check your distro's security tracker as well. Backported fixes may land without the version number changing the way you expect.

PHP also hides inside vendor appliances, Windows software that bundles php.exe or php-cgi.exe, and control panels like cPanel and Plesk. These deployments need separate inventory and patching, so updating your primary web servers is not sufficient if embedded copies remain.

CVE-2026-109618 and CVE-2026-109619 severity

The PHP security team rates both vulnerabilities CVSS v4.0 base score of 9.2 (Critical). The leaked post claimed a CVSS of 10.0, but PHP's own rating is 9.2.

The high scores reflect three factors coming together:

  • No authentication required: CERT-EU reads the scores as pointing to unauthenticated remote code execution.
  • No user interaction required: nobody on the victim side needs to click anything or take any action.
  • Broad attack surface: the flaw is in the PHP runtime, so it reaches every application built on it, and the suspected trigger is a feature enabled by default.

Put together: any unpatched, internet-facing PHP server is potentially one HTTP request away from remote code execution. That's the practical summary to bring to leadership.

How attackers exploit PHP2Shell

Based on what is known so far:

  • No credentials required: reported as unauthenticated exploitation.
  • No user interaction required: the attacker does not need to trick anyone into clicking a link.
  • Remotely exploitable: the suspected trigger is a plain multipart HTTP request. watchTowr says it reproduced CVE-2026-109618.
  • Public PoC: a short exploitation video was briefly posted online and then removed (Huntress), and an unverified PoC bundle is reportedly circulating (Phoenix Security).

The real-world impact of a successful exploit is severe. Once attackers run code as the PHP worker user, they can:

  • read and modify every file in the web root
  • pull database credentials straight out of application config files
  • deploy webshells or malware for persistent access
  • pivot to other sites and services on the same server.

History suggests the window will be short. When CVE-2024-4577, a PHP flaw in CGI mode on Windows, went public in June 2024, exploit attempts hit honeypots within 24 hours.

CVE-2026-109618 and CVE-2026-109619 disclosure timeline

DateEvent
October 20, 2026 A post on Hacker News claims two critical PHP RCE flaws (CVE-2026-109618 and CVE-2026-109619) are set for disclosure on October 22. The post is taken down, but screenshots spread.
October 20, 2026 watchTowr confirms the leaked information is real and that the flaws are under embargo.
October 20, 2026 The PHP security team publishes an advance notice: two critical vulnerabilities, both CVSS v4.0 9.2, with a security release set for October 21 at 14:00 UTC.
October 20, 2026 CERT-EU publishes Security Advisory 2026-018 and recommends preparing for immediate patching.
October 21, 2026PHP security release scheduled for 14:00 UTC.

How to mitigate CVE-2026-109618 and CVE-2026-109619

The only complete remediation is upgrading PHP to a fixed version. The official advisory is available from PHP. Given that details leaked before the patch and a PoC is reportedly circulating, you may want to treat this as an emergency patch based on your infrastructure and business context.

Upgrade path:

  • PHP 8.2, 8.3, 8.4, and 8.5: upgrade to the fixed release for your branch.
  • PHP 8.1 and older: upgrade to a supported branch. If you can't, take the system off the internet or put it behind a VPN or web application firewall until you can.
  • Distro and hosting packages: check your Linux distribution and hosting provider for backported fixes, then verify with php -v that every host actually moved.
  • Audit vendor appliances, control panels, Windows software, and container images separately: embedded PHP copies require independent patching.

If you cannot update immediately, apply these temporary controls, but understand they are not fixes:

  • Set session.upload_progress.enabled = Off in the php.ini your web server actually uses (PHP-FPM or Apache, not the CLI one), then reload the service. Uploads keep working; only progress tracking stops.
  • Isolate internet-facing PHP applications from public networks until a fix is available, as CERT-EU recommends.
  • Monitor what PHP spawns. Alert on php-fpm, php-cgi, httpd, or apache2 launching shells, interpreters, or download tools. Florian Roth's free process-watcher gives you that visibility on Linux servers without endpoint detection.

Note: the upload-progress setting is based on a researcher hypothesis, not on official guidance. GMO Flatt Security and other researchers report it blocks only one of the two bugs, and PHP has published no workaround. Patching is the only reliable fix.

CVE-2026-109618 and CVE-2026-109619 references

PHP2Shell scanner report

Once the scan completes, you'll get a finding that includes:

  • CVSS score and severity rating
  • step-by-step remediation guidance you can action or share directly

You can download it as a PDF and share it with whoever handles remediation.

About our Network Vulnerability Scanner

Our Network Vulnerability Scanner is a well-rounded tool for all your network security assessments.

It combines multiple engines and fine-tuned scan settings that surface more than 17,000 vulnerabilities, misconfigurations, and outdated services.

Each scan automatically updates your attack surface and provides an up-to-date map for planning targeted attacks or strategic lateral movements.

Explore a sample report which includes a vulnerability summary, automatically confirmed findings, evidence, and more.

See what else it can do

In a transparent benchmark, our tool outperformed the 6 most popular network scanners on the market, both open-source and commercial.

FAQs

What is PHP2Shell?

PHP2Shell (or php2shell) is the name researchers gave CVE-2026-109618 and CVE-2026-109619. It isn't PHP's name for them. If you've followed offensive security for a while, the naming pattern tells you the expected outcome: someone sends a request to your website and gets a shell on the server behind it.

Both vulnerabilities are rated critical, and both are reported to allow remote code execution in PHP core.

What is session.upload_progress?

Session upload progress is a PHP feature that tracks how much of a file upload has arrived, so an application can show a progress bar. When it's enabled and a POST request contains a field named after session.upload_progress.name (by default PHP_SESSION_UPLOAD_PROGRESS), PHP writes progress data to the session while it parses the request body.

It's enabled by default since PHP 5.4, and it runs before your application code does. That's why researchers suspect it as the entry point for PHP2Shell, and why disabling it shows up in early mitigation advice.

How widespread is the PHP2Shell exposure?

On October 20, 2026, security company Mallory counted roughly 1.5 million internet-facing hosts that advertised a PHP version in their HTTP banner. About 884,000 of them (59%) reported PHP 8.1 or older, which means no vendor patch, and another 740,000 hosts reported PHP without a version.

Banner counts aren't confirmed vulnerable systems. They do show the scale: PHP sits in front of a massive share of the web, and a big part of it runs on branches that won't get a fix.

This makes PHP2Shell a high-priority issue for hosting providers, managed service providers, and any organization running PHP applications for multiple clients.

Does disabling session.upload_progress protect against PHP2Shell?

Partially, at best. Several researchers suggest session.upload_progress.enabled = Off as a stopgap, but GMO Flatt Security and others report it closes only one of the two suspected attack paths.

It also rests on a hypothesis: PHP has not confirmed the affected component. Treat it as a way to shrink exposure while you patch, not as a replacement for the fixed PHP release.

Why are you offering a free scanner for PHP2Shell?

Every day, our team develops tools, detections, and exploits to help security professionals find vulnerabilities before attackers can exploit them.

We know the fight is unfair: security teams follow strict rules, while threat actors do whatever they want. That's why we build free tools like this one, so security teams can validate their exposure quickly, without waiting for a scheduled scan or a costly engagement.

Read more in our vulnerability research manifesto.

How do you tell if a website is running PHP?

The quickest method is checking the HTTP response headers. Many PHP setups announce themselves in the X-Powered-By header (for example, X-Powered-By: PHP/8.3.35). You can inspect this in your browser's developer tools (Network tab, select any request, Headers), or run:

curl -I https://example.com

and look for the X-Powered-By field in the output. Session cookies named PHPSESSID and .php URLs are other common giveaways.

That said, many production deployments switch off expose_php or strip the header to reduce fingerprinting surface. A missing header doesn't mean PHP isn't running. On servers you control, php -v (and php-fpm -v for the web-facing runtime) gives you the real answer.

For broader coverage, the Network Vulnerability Scanner fingerprints the technologies running on your targets through multiple signals beyond a single header. If you run WordPress, our WordPress Scanner maps the PHP-based application layer on top.

Which PHP versions still get security fixes?

PHP supports four branches at a time. Today that means 8.4 and 8.5 in active support, and 8.2 and 8.3 receiving security fixes only. Support for 8.2 ends on December 31, 2026.

Everything older (8.1, 8.0, the 7.x line, and 5.x) is end of life. If PHP2Shell reaches those branches, as early reports suggest, they stay vulnerable for good. Upgrading is the only path that ends with a patch.