By Adrian Cheek, Senior Cybercrime Researcher
Two critical vulnerabilities in PHP have put renewed attention on a familiar operational question: how many internet-facing PHP services are running versions that no longer receive upstream security fixes?? We examined existing internet-scan records to measure the PHP versions that services disclose to the public internet. The result was 2,220,231 service records across 224 countries. Nearly three quarters advertised a PHP branch no longer supported by the PHP project.
That finding does not mean 1.6 million servers are confirmed vulnerable to PHP2Shell. It shows how large the older-branch population is, and why a simple instruction to install the latest PHP release does not cover every environment. Some older PHP versions continue to receive security fixes through operating-system vendors; others are embedded in products whose update path depends on a manufacturer.
Flare Academy Discord Community
The Flare Academy Discord is where security practitioners and threat researchers break down findings like this one. Join the conversation and connect with the community working on these issues daily.
✓ Connect with security practitioners and threat intelligence researchers
✓ Access exclusive research discussions, methodology deep-dives, and analyst Q&As
Using previously collected records from two commercial internet-scanning platforms, Flare focused on the X-Powered-By HTTP response header, which can disclose a PHP version when the expose_php setting is enabled.
The unit of measurement is an internet-facing service record, not a unique server or website. A single host listening on several ports can contribute multiple records. Conversely, PHP deployments that suppress the header, sit behind intermediaries or fall outside platform coverage are not included. The figures describe the observed version-disclosing population, not every PHP installation on the internet.
| Measurement | Observed records |
|---|---|
| PHP version-disclosing services | 2,220,231 |
| Countries represented | 224 |
| PHP 8.2–8.5 (upstream supported) | 606,608 (27.3%) |
| Older PHP branches (outside upstream support) | 1,613,623 (72.7%) |
The four supported branches were measured directly. The older-branch total is the remainder after those records were subtracted from the observed population.
The PHP project supplied emergency fixes for CVE-2026-109618 and CVE-2026-109619 in PHP 8.5.12, 8.4.27, 8.3.36 and 8.2.35. Public technical guidance describes the flaws as capable of unauthenticated remote code execution, with risk extending to PHP deployments that serve web requests. That urgency makes the age of the installed PHP estate an immediate operational concern.
Of the version-disclosing services in Flare’s dataset, 606,608 advertised one of the four upstream-supported branches. The remaining 1,613,623 advertised versions outside the PHP project’s maintenance window. PHP 8.1 and 8.0 together accounted for 188,138 records; another 1,425,485 advertised versions below PHP 8.0 or fell into the residual category outside the measured PHP 8 branches.
This finding does not mean 1.6 million servers are confirmed vulnerable to PHP2Shell. An unsupported upstream branch is not necessarily an unpatched machine. Distributions and appliance vendors can backport security changes without replacing the upstream version number. Conversely, an old device whose supplier no longer issues security updates may need to be isolated, replaced or retired. The external header cannot tell those situations apart.
Two strings alone made up 21.3% of all observed records: PHP 7.4.3 appeared 246,881 times and PHP 7.4.33 appeared 225,216 times. Across the dataset, the 18 most common exact version strings represented 1,040,475 records, or 46.9%.
Those strings have different meanings. PHP 7.4.33 is the final upstream PHP 7.4 release. PHP 7.4.3 is also associated with Ubuntu 20.04 packaging, where security fixes can be backported while the reported upstream version stays the same. Treating every banner as an exact measure of installed security patches would obscure that distinction.
Five version strings associated with operating-system distribution packages accounted for 418,288 observed service records, 18.8% of the entire dataset. These records form an uncertainty category: the same advertised version might exist on a host that received maintained vendor security updates or one that missed years of patches.
For example, 28,442 records advertised PHP 8.1.2, a string associated with Ubuntu 22.04. PHP 8.1 is outside upstream maintenance, but Ubuntu may continue providing security backports under its own support policy. By contrast, Ubuntu 20.04 moved beyond standard maintenance in 2025; continued coverage depends on the applicable maintenance arrangements and installed package revision. Neither case can be settled from the HTTP header.
This is why external attack-surface discovery and internal patch verification must be joined. A response header can identify where to look. Package-manager evidence and vendor advisories are needed to establish what is actually installed and fixed.
A regional sample from one US state reinforced another practical issue. Across two scanning platforms, the sample comprised 101 and 89 hosts respectively, and showed 54 PHP version strings. The platforms’ service labels included:
Categories can overlap and the sample is not representative of the global population.
The PHP header appeared on ports including 81, 82, 250, 557, 1443, 3333, 8080, 8081, 8888, 9021 and 9022. A security inventory restricted to ports 80 and 443 could overlook interfaces that administrators use to reach appliances and other equipment.
17 hosts in the regional sample advertised PHP 5.1.6, the same web-server version and an identical vendor-default TLS certificate associated with a consumer storage platform. That clustering is consistent with a shared firmware lineage, although it cannot establish the product’s current patch availability. It illustrates why remediation sometimes involves product support and replacement decisions rather than an ordinary application upgrade.
In a scanning-platform snapshot examined roughly two hours after the reported fixed releases were published, we found eight records advertising the new release strings on one platform: five on PHP 8.4.27 and three on PHP 8.5.12. The second platform showed one matching host.
This is a baseline for when fixed-release banners became visible in the scanning data, not a global patch-adoption rate. Commercial scanning platforms refresh records at different times, so observed timestamps and actual host updates cannot be equated. Repeating the queries under consistent collection rules may help track later visibility.
PHP2Shell is a time-sensitive vulnerability event, but the data points to a longer-lived maintenance issue. In the observed population, older PHP branches substantially outnumber upstream-supported ones. Many of these deployments may be maintained through downstream packaging, and some may not be vulnerable. Yet the public banner alone cannot show which are protected, which are unsupported by their actual vendors, or which can be updated promptly.
The practical lesson is to treat exposed version data as a starting point for verification—not as a patch verdict—and to include the appliance and management-interface estate when measuring PHP risk.
Flare Academy Discord Community
The Flare Academy Discord is where security practitioners and threat researchers break down findings like this one. Join the conversation and connect with the community working on these issues daily.
✓ Connect with security practitioners and threat intelligence researchers
✓ Access exclusive research discussions, methodology deep-dives, and analyst Q&As
We analyzed already-published records from two commercial internet-scanning services. Counts refer to service records disclosing PHP versions through HTTP headers and are subject to data freshness, scan coverage, repeated ports, proxy behavior and banner accuracy. The 224-country distribution reflects platform geolocation. This research did not test hosts for PHP2Shell or establish compromise. The regional appliance observations are illustrative, not a global estimate. All numerical exposure findings are from Flare’s internal measurement; external sources below support vulnerability and patch descriptions.
We ran the same inventory across our own estate, since the measurement above shows that a version banner is a starting point rather than a record of patch state, and that holds for any interpreter an organization depends on.
PHP2Shell operational guidance, NCSC Netherlands (October 21, 2026): https://github.com/NCSC-NL/php2shell
PHP2Shell technical analysis, Wiz Research (October 21, 2026): https://www.wiz.io/blog/php2shell-php-rce
Emergency patch reporting (October 21, 2026): https://www.helpnetsecurity.com/2026/10/21/php2shell-php-vulnerabilities-patched-cve-2026-109618-cve-2026-109619/