
A week has passed since fixes for the critical PHP vulnerabilities known as PHP2Shell (CVE-2026-109618 / 109619) were released. On October 26, CISA in the United States added them to its catalog as vulnerabilities being exploited in the wild. Even so, a huge amount of PHP around the world has still not been updated.
This article is for people who aren’t sure whether their own site is safe. It sets out how many have not updated and what to check now, in order. For the technical details, see the summary for engineers. The figures are as of the evening of October 28, Japan time.
Censys scans the PHP exposed to the internet and counts it by version, according to whether the version is fixed. This is the display as of October 28 (Censys PHP2Shell Exposure Tracker; latest data to 14:10 UTC, 23:10 Japan time).
| Group | Services | Meaning |
|---|---|---|
| On a fixed version | about 12 million | 8.2.35, 8.3.36, 8.4.27 or 8.5.12 and later |
| Not fixed, fix available | about 8.4 million | 8.2 to 8.5, before the fixed release. An update solves it |
| Not fixed, no official fix | about 24 million | 8.1 and earlier. Migration is needed |
| Version unknown | about 65.14 million | 59% of the total. Cannot be judged |
A “service” is an IP address or hostname plus a port. It is not a count of organizations or of servers. One server can run several sites.
Of the roughly 45 million services whose version is visible, 73.3% (about 32.7 million) are not fixed. The most common version is PHP 7.4.33, at about 6.93 million (15.5%).
Even on the branches that have a fix, only about half have updated (Censys, October 28).
| Branch | On the fixed release | Share |
|---|---|---|
| PHP 8.2 (fixed in 8.2.35) | about 3.12M of 5.98M | 52.3% |
| PHP 8.3 (fixed in 8.3.36) | about 4.04M of 7.82M | 51.7% |
| PHP 8.4 (fixed in 8.4.27) | about 2.15M of 3.22M | 67.0% |
| PHP 8.5 (fixed in 8.5.12) | about 2.60M of 3.34M | 77.9% |
In the last 24 hours, Censys first saw about 400,000 services on a fixed version. Since the release on October 21, it has seen about 10.61 million move to one.
More important than the exact figures: a very large number of services have not updated, in the world and in Japan.
Through October 23, the reports were mostly about attack attempts, and no solid report of success could be confirmed. That has changed.
The honeypot result is from one setup (a single Apache worker and a 128 MiB memory limit). How many real sites have been compromised is unknown. But attacks now succeed in practice, so there is no reason left to put the update off.
The Israeli security company Dream reports that firewalls were compromised in attacks using PHP2Shell. The product is Palo Alto’s PAN-OS (report published October 26, updated October 29; Dream). JPCERT/CC also added this to its alert on October 29 (JPCERT/CC, in Japanese). Palo Alto itself updated its Unit 42 threat brief on the same day, October 29, and wrote that PHP2Shell “is being actively exploited against PAN-OS management interfaces that are exposed to the internet.” It says it independently verified the same attacker’s tooling and confirmed Dream’s results (Unit 42).
Dream’s report is the investigators’ own work. It names no attacker, and notes that it could not recover the Active Directory results. Palo Alto, for its part, says the affected devices were about 0.02% of its installed base, those with a management interface exposed to the internet, and that it contacted each affected customer individually. The management interface is not exposed by default (Unit 42. The figure is Palo Alto’s own and has not been independently verified). Where reports and primary sources disagree is covered in a separate article. What matters for readers of this article:
Who updates PHP depends on how you run it.
| How it runs | Who updates | What to do |
|---|---|---|
| Rental server (Sakura, Xserver, Lolipop! and others) | The provider | Most providers finished their fixes by October 23. Check which PHP version you use. If you picked an old version, you may be outside the update |
| VPS, cloud or your own server | You (or your administrator) | Update to a fixed version and restart PHP |
| Left to a web agency or maintenance company | The agency or company | Ask three things. (1) Which PHP version is it, and was it updated after October 21? (2) If 8.1 or earlier, when will it migrate? (3) Has anyone checked for intrusion since October 17? |
| Firewalls and other appliances | The appliance vendor | Check the vendor’s notice for an update that includes the PHP fix. Also review whether the management interface is exposed to the internet |
Updating a CMS such as WordPress does not help if PHP itself is unfixed. Conversely, if PHP is updated, the CMS-side fix is not required for this issue (summary for engineers).
| Version in use | Status | Next step |
|---|---|---|
| 8.2.35, 8.3.36, 8.4.27, 8.5.12 or later | Fixed | Go to the check in step 5 |
| 8.2 to 8.5, earlier than the numbers above | Not fixed; a fix exists | Update to a fixed version and restart PHP |
| 8.1 or earlier (8.0, 7.4, 7.2, 5.6 and so on) | No official fix | Migrate to a supported 8.2 or later. Until then, go to step 4 |
| Shows an earlier number, but the provider says it is fixed | The fix may have been pulled in alone | Check the provider’s notice to see whether that version is covered |
PHP 8.2 reaches end of life on December 31, 2026 (PHP announcement). While you are updating, plan the migration too.
If you are moving off an old version, you need to confirm that your site or system runs on the newer PHP. Don’t switch production all at once. Test in a test environment first.
None of these makes you safe. They only buy time until you update.
session.upload_progress.enabled). The settings are in the summary for engineersEven after you install a fixed version, an intrusion stays if someone got in before the release or before your update. Attacks began four days before the fixes were released.
Ask your maintenance company or administrator to check the following.
curl, wget or the likeIf something looks suspicious, isolate that server and replace every password PHP can see (database, API keys and so on). The detailed checklist is in the summary for engineers.
If you’d like help finding where your PHP runs, updating it, or checking for intrusion, get in touch below.
We are currently taking free consultations on security. Questions like "Is our site safe?" or "Where should we start checking?" are welcome.
