On this page
- Which DigitalOcean product are you on?
- What did DigitalOcean say about App Platform?
- Does restarting my App Platform app apply the fix?
- How do I patch a Droplet?
- What about 1-Click images and Functions?
- What do I ask DigitalOcean support?
- Am I affected? A three-state self-test
- Was anything exploited on DigitalOcean?
- Is there a newer PHP issue to watch?
- What is the bug, without the exploit?
DigitalOcean's only PHP2Shell notice that we found is an App Platform release note dated 22 October 2026: the PHP buildpack now includes the fixed versions, and you must force a rebuild and deploy to use them. We found no DigitalOcean notice about Droplets, which you administer yourself. Confirm the fixed PHP package and a restart or redeploy time.
| Fact | Detail | Source |
|---|---|---|
| CVE ids | CVE-2026-109618 and CVE-2026-109619, CVSS v4 9.2 | GHSA-w8hw-w9fx-j79w, GHSA-6wmf-4rv5-p3rp |
| Fixed upstream releases | 8.5.12 · 8.4.27 · 8.3.36 · 8.2.35, dated 22 October 2026 in the changelog | PHP notice, changelog |
| App Platform | Buildpack 298 added the fixed versions; DigitalOcean says force rebuild and deploy (22 October 2026) | DigitalOcean release notes |
| Droplets | No DigitalOcean PHP2Shell notice found. You connect by console or SSH and manage the server | Droplet Console docs |
| DigitalOcean status page | No PHP or CVE entry at our check | status.digitalocean.com |
| Exploitation | Honeypot attempts from 17 October (vendor-claimed); neither CVE in the CISA entries we could read | AWS, CISA |
| Checked | 26 October 2026 | this page |
Our earlier host matrix, snapshot 22 October, listed DigitalOcean as "Unknown". The App Platform release note landed that same day, so the status below is newer than that snapshot. The rest of the matrix is in the host-by-host breakdown, and the other hosting guides are collected under the hosts topic.
Which DigitalOcean product are you on?
"DigitalOcean" is several products with different owners of the PHP. The answer to "who patches" changes with the product, so find yours first.
| Product | Who patches PHP | What DigitalOcean says (26 October 2026) | Your action |
|---|---|---|---|
| App Platform (PHP buildpack) | You trigger it; DigitalOcean supplies the buildpack | Release note of 22 October: fixed versions added, force rebuild and deploy | Force rebuild and deploy, then read the build log |
| Droplet (Ubuntu, Debian and others) | You | Nothing PHP2Shell-specific found | Update the PHP package, restart the workers |
| Droplet from a 1-Click image (LAMP, WordPress and others) | You, once it is created | Marketplace page does not say who updates packages afterwards | Treat as a Droplet you own |
| Functions (PHP runtime) | Unknown | Runtime page lists PHP 8.0 and 8.2 to 8.5; no PHP2Shell note found | Ask DigitalOcean support |
| Your own container on any of the above | You | Not applicable | Rebuild the image, replace the container |
The PHP project says every PHP installation serving web requests is in scope: PHP-FPM, mod_php, php-cgi, FrankenPHP and LiteSpeed (php.net, 21 October 2026). Which product you use changes who acts, not whether the fix is needed.
What did DigitalOcean say about App Platform?
DigitalOcean's release notes carry one October 2026 entry, dated 22 October. It says the PHP buildpack moved to version 298 and added PHP 8.5.3 to 8.5.12, 8.4.18 to 8.4.27, 8.3.31 to 8.3.33, 8.3.35 to 8.3.36 and 8.2.31 to 8.2.35. It states that 8.5.12, 8.4.27, 8.3.36, 8.2.35 and 8.1.34 include fixes for the two CVEs.
The same entry gives two instructions. Force rebuild and deploy your app to use a patched runtime. If composer.json pins an exact PHP version, change it to a range such as ^8.5.0 so a patched version can be selected. The note does not use the name "PHP2Shell"; it names the CVE ids.
The buildpack reference agrees. At our check it listed the default as 8.5.12, ranges up to 8.4.27, 8.3.36, 8.2.35 and 8.1.34, and said it was last verified 23 October 2026. PHP 8.1 is end of life upstream, and the PHP project shipped minimal source backports for it (php.net). Plan a move off it; what to do on an end-of-life PHP has the options.
Does restarting my App Platform app apply the fix?
No. DigitalOcean's docs say a restart redeploys an exact copy of your container without fetching updates. A force rebuild redeploys with the latest source and builds a new container image. The patched buildpack only matters to a rebuilt image.
In the control panel the path is Apps, your app, Actions, Force Rebuild and Deploy. You can choose whether to clear the build cache.
An app whose composer.json pins an exact PHP version may rebuild onto the same unpatched version. That is the trap specific to this platform. Read the build log after the deploy: DigitalOcean's deployment docs show it under the Activity tab. The log should show the PHP version the build resolved.
- Open your app's
composer.jsonand note whether PHP is pinned to an exact version - Change an exact pin to a range inside a supported branch, for example
^8.5.0 - Run Force Rebuild and Deploy, and note the deployment time on the Activity tab
- Read the build log and write down the resolved PHP version
- Repeat for every component and every app that uses PHP, including workers and staging
How do I patch a Droplet?
A Droplet is a server you administer. We found no DigitalOcean PHP2Shell notice about Droplets and no entry on its status page at our check. That is silence, and it means the PHP on your Droplet is whatever your package manager last installed.
Open the Web Console from the Droplet's page, or use SSH (console docs, SSH docs). DigitalOcean lists the console's requirements: the Droplet agent, a supported Linux distribution, SSH allowed through firewalls, and a public IP, so Private Droplets cannot use it. Then follow the channel steps in PHP2Shell fix: patch PHP, restart workers, verify it ran.
The fixed package depends on your distribution. Canonical lists 8.1.2-1ubuntu2.28 for 22.04, 8.3.6-0ubuntu0.24.04.13 for 24.04 and 8.5.4-0ubuntu1.5 for 26.04, and tells you to restart applications after the upgrade. Debian's tracker records fixes through DSA-6574-1 for trixie and DLA-4848-1 for bookworm. Those version numbers differ from upstream ones, which is why a package can be fixed and still look old.
Then the part people skip. A PHP-FPM or Apache process loads its code when it starts. Installing the package does not replace a running worker, so the service has to restart (why the restart matters). If your Droplet runs containers, the image must be rebuilt and the container replaced (container steps).
What about 1-Click images and Functions?
DigitalOcean's Marketplace page says apps it supports are actively updated and maintained by DigitalOcean, SharkLabs apps are experimental, and others are maintained by the vendor. It does not say who updates packages on a Droplet after you create it from an image. Treat the PHP on that Droplet as yours, and do not assume the image keeps itself current.
A server built from an older image needs the package update above, whatever PHP version the image shipped with. The same Droplet-style question for another VPS provider is answered in the Linode and Akamai check.
DigitalOcean Functions lists a PHP runtime (8.0 and 8.2 to 8.5; page last verified 13 March 2026). We found no PHP2Shell note for it. That stays unknown. Ask support, using the question below.
What do I ask DigitalOcean support?
For App Platform and Functions, DigitalOcean is the party that knows. Send this and keep the reply:
For [your app or domain], is the PHP runtime that serves web requests patched for CVE-2026-109618 and CVE-2026-109619? Please give the fixed buildpack, package or backport identifier, confirm which deployment or restart happened after the fix, and say whether I need to rebuild, redeploy or change a setting such as an exact PHP pin.
For a Droplet, support cannot see inside your server, so the evidence comes from you:
- The package changelog or version naming both CVEs (
dpkg -lorapt changelogon Debian and Ubuntu) - The time the PHP-FPM or Apache service last started, later than the install time
- The PHP that serves the domain, not the command line
php -v - Every virtual host and pool, if the server runs more than one PHP version
- Any cron, queue or staging process that runs its own PHP
Am I affected? A three-state self-test
Am I affected? Where you stand right now
A passive check from outside can read headers and version hints. It cannot see your package changelog, which runtime serves each virtual host, the buildpack your last build used, or when workers started.
- Detected Your site serves PHP and a version below the fixed release for its branch is visible from outside. Treat it as exposed. On App Platform, force rebuild and deploy today. On a Droplet, update the package and restart the workers.
- Unknown The version is hidden, shows only a branch, or could be a backport. This is the common case. DigitalOcean's App Platform note covers its buildpack, not your last build. Get the build log or the package identifier and a start or deploy time from the platform or the server.
- Confirmed by owner evidence You hold a build log with a fixed resolved PHP version and a deploy time after 22 October 2026, or a package changelog naming both CVEs with a service start after the install. The runtime is patched. Whether anything got in earlier is a separate question.
No scan, ours included, moves you from "unknown" to "confirmed".
Was anything exploited on DigitalOcean?
We found no DigitalOcean statement on that, and no breach report tied to its platform. Across the internet, AWS reported PHP2Shell attempts against its honeypots on 17 October, four days before disclosure, and again on 21 October. AWS says it is unclear whether those attempts would have succeeded on real systems (AWS Security Blog, vendor-claimed). In the CISA catalog entries we could read on 24 October, neither CVE appeared (CISA KEV). We did not search the whole catalog by CVE id, so check it yourself.
If your PHP was reachable and unpatched from 17 October, look for PHP files you did not upload, scheduled tasks you did not create, new administrator accounts and unexpected outbound connections from the server. A patch does not remove anything planted earlier. The steps are in a walkthrough for checking a compromised site.
Is there a newer PHP issue to watch?
The PHP project posted an informational advisory on 23 October 2026 for a separate issue, CVE-2026-115560, tied to session upload progress. It recommends setting session.upload_progress.enabled=0 until the next regular bugfix release, and says the full advisory comes with that release (php.net). The changelog showed no 8.5.13 entry at our check (PHP 8 changelog). It is a different issue from the two PHP2Shell CVEs. We will update this page when PHP publishes more.
What is the bug, without the exploit?
Both CVEs are memory-safety problems in the PHP engine, reachable by an unauthenticated web request. CVE-2026-109618 is remote code execution through out-of-memory handling that leaves request data partly initialised. CVE-2026-109619 is remote code execution through request state that outlives its memory and is reused by a later request in the same worker (php.net). We do not reproduce exploit material, and you do not need it to fix a server or an app. A plainer walk-through is in the two CVEs explained, and every fixed release by branch is in the fixed-versions table.
Not sure which of your sites run PHP on DigitalOcean? The inventory guide shows how to list them. The free scan reads the stack your site serves and matches each version to known vulnerabilities. It is a lookup: it can say a version is affected, not whether your setup is exposed.
Questions people ask
Is DigitalOcean patched for PHP2Shell?
It depends on the product. For App Platform, DigitalOcean's release notes of 22 October 2026 say the PHP buildpack now has fixed versions and tell you to force a rebuild and deploy. For a Droplet we found no DigitalOcean notice, and you administer the server, so the PHP on it is yours to update and restart.
How do I know if my DigitalOcean Droplet is vulnerable to PHP2Shell?
Open the Droplet Console or connect by SSH, then check the installed PHP package and its changelog for both CVE ids. Then confirm the PHP-FPM or Apache service started after that package was installed. A version number alone can mislead, because Ubuntu and Debian backport fixes and keep the old number.
I use App Platform. What do I have to do?
DigitalOcean says to force rebuild and deploy your app so it selects a patched runtime. If your composer.json pins an exact PHP version, change it to a range so a fixed version can be chosen. Then read the build log of the new deployment to see which PHP version was resolved.
Does restarting my App Platform app apply the PHP fix?
DigitalOcean's docs say a restart redeploys an exact copy of the existing container without fetching updates. The fixed buildpack only reaches your app through a force rebuild and deploy. Restart alone does not change the PHP your app was built with.
My WordPress Droplet came from a 1-Click image. Who patches PHP?
DigitalOcean's Marketplace page says supported apps are maintained by DigitalOcean, but it does not say who updates packages on a Droplet after you create it. Treat the Droplet as yours. Update the PHP packages from your distribution and restart the PHP workers.
Does updating WordPress fix PHP2Shell on DigitalOcean?
No. The two flaws are in the PHP engine, not in WordPress or its plugins. The fix is a patched PHP runtime on the server or in the build, followed by a restart or redeploy.
Sources
- DigitalOcean App Platform release notes, 22 October 2026DigitalOcean's own dated entry: PHP buildpack 298, fixed PHP versions, and the instruction to force rebuild and deploy.
- DigitalOcean docs: PHP buildpack reference (App Platform)Supported PHP ranges, default 8.5.12, buildpack version 298. Page says last verified 23 October 2026.
- DigitalOcean docs: force rebuild and deploy an App Platform appA restart redeploys an exact copy of the container. A force rebuild pulls fresh and rebuilds.
- DigitalOcean docs: view build logs and deployment history
- DigitalOcean docs: open the Droplet Console
- DigitalOcean docs: connect to a Droplet with SSH
- DigitalOcean Marketplace: maintenance of 1-Click App imagesSays who maintains an app by support level. Does not say who updates packages on a Droplet after creation.
- DigitalOcean docs: Functions runtimesLists a PHP runtime (8.0, 8.2 to 8.5). Page last verified 13 March 2026. We found no PHP2Shell note for it.
- DigitalOcean statusNo PHP, CVE-2026-109618 or CVE-2026-109619 entry at our 26 October check.
- PHP security notice, 21 October 2026 (php.net)Fixed releases, scope, and the 23 October follow-up naming CVE-2026-115560.
- GHSA-w8hw-w9fx-j79w: CVE-2026-109618 (php/php-src advisory)
- GHSA-6wmf-4rv5-p3rp: CVE-2026-109619 (php/php-src advisory)
- PHP 8 changelog (php.net)8.5.12 and 8.4.27 are dated 22 October 2026. No 8.5.13 entry at our check.
- Canonical: PHP2Shell vulnerability fixes available (Ubuntu blog)Fixed package per Ubuntu release, and the instruction to restart applications after the upgrade.
- Debian security tracker: CVE-2026-109618
- Amazon Threat Intelligence: PHP2Shell exploitation attempts seen in MadPot honeypots before disclosure (AWS Security Blog, 21 October 2026)Vendor telemetry. AWS says it is unclear whether the attempts would have succeeded on real systems.
- CISA Known Exploited Vulnerabilities catalogNeither CVE appeared in the entries we could read. We did not run a full catalog search by CVE id. Check it directly.
Facts on this page are dated and point at the primary source next to them. If a vendor status changes after the date shown, the vendor's page wins; tell us at support@run.cloud and we will update it.