Patched for you
The platform runs PHP and updates it; the customer does nothing.
- fixed Google Cloud: Google App Engine Standard PHP runtime PHP 8.2+ supported runtimes
Research collected from outside sources and what this site derives from them; every fact links to a saved copy of its source Research or story?
Who can get a fix for php2shell, for which version of PHP, and from whom. Upstream is the PHP project; downstream is everyone who ships PHP to someone else: operating systems, hosting panels, cloud platforms, container images, paid support. The downstream rows are the NCSC-NL inventory's own rows at commit cca173c64ec5 (22 October, 08:40 UTC), each named exactly so the gate can check it is there and has the status quoted. The inventory changes by the hour; these are the statuses at that commit.
46 fixed · 206 still affected · 418 under investigation · 3 not affected, of 674 products in the NCSC-NL inventory at commit cca173c64ec5 NCSC-NL
Each PHP branch, what the PHP project itself shipped for it, and some of the companies that shipped a fix for it anyway, or had not yet.
| PHP branch | Upstream | What the PHP project shipped | In the CVE record | Downstream, at the inventory commit | Sources |
|---|---|---|---|---|---|
| 8.5, 8.4, 8.3, 8.2 | supported | Releases 8.5.12, 8.4.27, 8.3.36 and 8.2.35, with signed tags and Windows binaries; the full engine change | yes |
| php.net php-src CVE record NCSC-NL |
| 8.1 | end of life | A minimal source backport on a branch; no release, no binaries | no |
| php.net CISA |
| 8.0 | end of life | A minimal source backport on a branch; no release, no binaries | no |
| php.net |
| 7.4 | end of life | A 17-file commit labelled 'Minimal mitigation for EOL version', on a branch; no release, no binaries | no |
| php-src php/php-src, read from a clone |
| 7.3 down to 5.x | end of life | Nothing: no backport, no branch | no |
| NCSC-NL Wiz on X CERT-FR |
The same fix arrives in very different ways depending on who a site gets its PHP from. Read from the NCSC-NL inventory, row by row.
The platform runs PHP and updates it; the customer does nothing.
The platform or image publisher has a fixed runtime, and nothing already running changes until its owner rebuilds. 'Existing deployments are not automatically patched' is Google's phrase for App Engine Flexible.
The distribution backports the fix into the PHP version it shipped, and an ordinary system update installs it.
A commercial supplier backports the fix to an end-of-life version for customers of its extended-support programme: Canonical under Ubuntu Pro and Ubuntu Pro Legacy Support for PHP 5.5, 7.0, 7.2 and 7.4; CloudLinux and TuxCare for 7.4 and 8.0.
Shared hosting runs the PHP its panel ships, often several versions side by side; the site owner can only pick among them. Here the panels part ways: cPanel backported to 7.4, 8.0 and 8.1; Plesk's end-of-life Linux builds and all its Windows builds were still affected.
The product embeds its own PHP and its supplier had not shipped a fix at that commit. Most of the inventory is here or further back: 418 of 674 rows were still under investigation.
The reason an operator hesitates: the fix is not invisible.
The story behind this page is Why can't every version of PHP just be patched?, with the editor's argument on who should own patching. The data is data/patching.json; the gate checks that every downstream row names a product in the inventory with the status shown.