1. Red
  2. Learn
  3. Is my host patched?

Is Render patched for PHP2Shell? How to confirm yours

Render PHP2Shell status at our 26 October 2026 check: no native PHP runtime, so your Docker image decides. How to rebuild, redeploy and confirm the fix.

By run.cloud security teamPublished 26 October 20269 min readHow we check facts
On this page
  1. Does Render run PHP for me?
  2. What does Render say it patches?
  3. Why does a restart on Render not fix it?
  4. How do I fix it on Render?
  5. How do I check the PHP version Render is running?
  6. What do I ask Render?
  7. Am I affected? A three-state self-test
  8. What if my Render service runs PHP 8.1 or older?
  9. Was anything exploited on Render?

Render's own documentation says it has no native PHP runtime: PHP runs from a Docker image you supply. At our check on 26 October 2026 we found no Render PHP2Shell notice, so the PHP in your service is whatever your image contains. Rebuild the image on PHP 8.5.12, 8.4.27, 8.3.36 or 8.2.35, deploy it, then check the running service.

FactDetailSource
CVE idsCVE-2026-109618 and CVE-2026-109619, CVSS v4 9.2 eachGHSA-w8hw-w9fx-j79w, GHSA-6wmf-4rv5-p3rp
Fixed releases8.5.12 · 8.4.27 · 8.3.36 · 8.2.35, dated 22 October 2026 in the changelogPHP notice, changelog
Render PHP supportPHP is not native; "deploy a Docker image" (26 October 2026)Render language support
Render PHP2Shell noticeNone found in the Render changelog, which had three October entries and tooling releases, none about PHP (26 October 2026)Render changelog
Render status pagestatus.render.com loaded; incidents listed through 24 October, none about PHP or either CVE (26 October 2026). Our 24 October fetch had returned an errorstatus.render.com
Official php imageFour fixed releases listed on Debian and Alpine variants; no 8.1 or olderDocker library
ExploitationHoneypot attempts from 17 October (vendor-claimed); neither CVE in the CISA entries we could readAWS, CISA
CheckedRender pages 26 October 2026; PHP, Docker and CISA rows 24 October 2026this page

Our earlier host matrix, snapshot 22 October, listed Render as "Unknown" with no patch note. That has not changed at this check. The wider picture is covered in the rest of this article.

Does Render run PHP for me?

Render's language support page lists Node.js and Bun, Python, Ruby, Go, Rust and Elixir as natively supported. For anything else it says to deploy a Docker image, and it names PHP as an example. It discusses no PHP versions.

Other image-based platforms put you in the same position, as with rebuilding on Fly.io or redeploying a Heroku app. That decides who owns the fix. On a native runtime, the platform picks the language version at build time. For PHP on Render, you pick it, in a Dockerfile or in an image you built elsewhere. A site on Render is in scope for PHP2Shell if that image runs PHP to serve web requests, whatever the framework on top. The PHP project says every installation serving web requests is in scope (php.net, 21 October 2026). The write-up of which installs are affected has the full scope.

Sites on Render that do not run PHP are not affected by this bug. A Node.js, Python or static service has no PHP engine to fix.

What does Render say it patches?

Render's shared responsibility model says Render is responsible for making sure the underlying operating systems are patched and for keeping the runtime environments for supported programming languages and frameworks up to date. It lists application-level configuration and regular security assessments as the customer's.

The page does not mention customer container images or base images. Because PHP is not a supported language on Render's own list, we read that sentence as not covering your PHP. This is our reading, not a Render statement. If you want it confirmed, ask Render the question further down.

LayerWho owns it on RenderWhat the docs say
Host operating systemRenderRender says it patches the underlying operating systems
Native runtimes (Node.js, Python and others)Render, for supported languagesLanguage support page
PHP inside your Docker imageYouPHP is run by deploying a Docker image
Your base image tag and DockerfileYouYour build, your image
Rebuild and redeployYouManual Deploy options and deploy hooks
A Render-maintained PHP base imageNot describedWe found no such image in the docs we read

Each provider draws this line a little differently, and the other host status pages show how. On Google's side, what the Cloud Run bulletin says is a useful contrast. For the general question of who patches what, see how patching duties split between host and site owner.

Why does a restart on Render not fix it?

Render's deploys page describes Restart service as redeploying the running commit: the new instance uses the exact same Git commit and configuration as the one it replaces. The Docker image is the same one, so the PHP is the same one. The reason a restart matters on a normal server is covered in PHP-FPM restart after update. On Render, a restart cannot do the job at all, because the code you need is not in the image yet.

Three things keep the old PHP alive after the official image moves:

  1. Layer cache. Render's Docker page says it caches all intermediate build layers. Docker's own docs say the cache for RUN instructions is not invalidated automatically between builds, so an old package layer can be reused.
  2. A mutable tag. The same Render page says its public image cache means a mutable tag such as latest might give a build that uses a cached, less recent version. It advises immutable tags or registry credentials.
  3. No redeploy on tag change. For prebuilt images, Render's image deploy docs say image-backed services do not automatically redeploy when a new image is associated with their tag.
Four steps from a fixed PHP base to a confirmed fix on Render Fixed PHP base8.4.27 or later Rebuildnew tag, fresh layers Deploy itnot Restart service Check the serviceShell, build log Restart service reruns the old image, so it skips the first three boxes.
The path on Render. The Dockerfile edit is the first box of four.

How do I fix it on Render?

Pick the row that matches how your service gets its image. In the dashboard a service's source is either built from a Dockerfile in your repository or pulled as a prebuilt image from a registry. The Blueprint spec calls these runtime: docker and runtime: image (Blueprint spec).

Built from a Dockerfile in your repo

Render builds the image with BuildKit on each deploy (Docker docs). Change the base image line to a fixed release, for example an official php image on 8.4.27 or later. The official image library lists the four fixed releases on Debian trixie and bookworm and Alpine 3.24 and 3.23 (Docker library). Commit it. Then use Clear build cache & deploy, which Render's deploys page lists next to Deploy latest commit and Restart service.

Render's deploys page describes that option as clearing cached build artifacts. It does not say it drops every Docker layer. Changing the FROM line already gives you a different base, which is the safer lever. If you install PHP with apt or apk in a RUN line on an older base, that layer can be reused, so clear the cache as well.

Prebuilt image from a registry

Build and push a new image on a fixed release under a tag you have never used. Then either change the tag or digest in the service settings, or use Manual Deploy > Deploy latest reference, which Render's image docs give for pulling the currently tagged image. A deploy hook can also take an imgURL parameter with a different tag or digest. Everything except the tag or digest must match the service's default image URL.

Your checklist

  • List every Render service that runs PHP, including workers, cron jobs and staging copies (inventory guide)
  • Update each base image or package line to a fixed release, or to a package that names both CVEs
  • Use a new, specific image tag, not latest
  • Deploy with Clear build cache & deploy, or Deploy latest reference for prebuilt images
  • Read the deploy log and confirm it is the new build
  • Check the running service from its Shell page, then write the result down with the time

The container-side detail is on PHP2Shell Docker image patched. The general steps are in the PHP2Shell fix guide.

How do I check the PHP version Render is running?

Render's shell documentation says you can open a shell from a service's Shell page in the dashboard, with an Instance dropdown if you run several, or use render ssh. Paid web services, private services and background workers have both. Free web services have neither, so for those you rely on your build log.

In the shell, ask the PHP binary that serves requests, not the command line. For an FPM image that is the FPM binary.

php-fpm -v

php -v reports the command line binary, which can be a different build. If your base is a distribution package rather than the official image, read the package changelog for both CVE ids, because a fixed package can still report an old number (backport trap).

EvidenceWhat it showsWhat it cannot show
Dockerfile FROM lineWhat you intended to buildWhat is running
Deploy time on the serviceWhen the current instance startedThat the image has a fixed PHP
Version from the FPM binary in ShellThe build the service reportsA backport, if the number looks low
Package changelog naming both CVEsA backport on distribution packagesThat every replica and worker matches
Outside scanA version banner, if exposedImage, build time, restart time

What do I ask Render?

Only ask Render about anything Render maintains. Your image is yours. If you want their position on the PHP2Shell fixes and on the shared responsibility line above, send this and keep the reply:

For [service name or domain], is any PHP component maintained by Render, such as a base image, template or Blueprint, affected by CVE-2026-109618 or CVE-2026-109619? If yes, which fixed version or build replaces it, and do I need to redeploy? If no, please confirm that the PHP in a Docker-based service is the customer's to rebuild.

Am I affected? A three-state self-test

Am I affected? Where you stand right now

A check from outside can read a version banner if the site exposes one. It cannot see your Docker image, the time of your last build or which instance is serving.

  1. Detected The site serves PHP and the version it shows is below the fixed release for its branch. Treat it as exposed. Rebuild on a fixed PHP and deploy today.
  2. Unknown The version is hidden, shows only a branch, or could be a backport. This is the common case on Render, where Render has published nothing we could find about your image. Read your build log and the version in the service's Shell.
  3. Confirmed by owner evidence You hold a build log from after 21 October 2026 on a fixed base, and the running service reports a fixed version or a package changelog naming both CVEs. The runtime is patched. Whether anything got in earlier is a separate question.

No scan, ours included, moves you from "unknown" to "confirmed".

What if my Render service runs PHP 8.1 or older?

The PHP project says 8.1 and older no longer receive project updates. It published minimal source backports for 7.4, 8.0 and 8.1 (php.net). The official Docker library file lists no 8.1 or older tags, so a pinned php:8.1 base has no official fixed image to move to. The options are in PHP 8.1 and older. In order: move to 8.4 or 8.5 after testing, use a vendor image whose changelog names both CVEs, or apply the interim settings from the PHP notice while you plan the move. The notice says there are no complete mitigations and that updating is the only reliable route (checked 24 October 2026).

Was anything exploited on Render?

We found no Render statement on that and no breach report tied to its platform. AWS reported PHP2Shell attempts against its honeypots from 17 October, four days before disclosure, and says it is unclear whether any attempts would have succeeded on real systems (AWS, vendor-claimed). The CISA catalog entries we could read on 24 October, dated 8 to 23 October, did not include either CVE (CISA). We did not run a full search by CVE id, so check it yourself.

If a service was reachable and unpatched from 17 October, look in uploaded files and mounted disks for PHP files you did not put there, new admin accounts, scheduled tasks and unexpected outbound connections. Replacing a container does not remove anything stored on a persistent disk or in a database. The list is in a step-by-step compromise checklist. Wondering whether a WordPress site on Render is covered? Does PHP2Shell affect WordPress answers that.

PHP posted a separate informational notice on 23 October for CVE-2026-115560, tied to session upload progress, and recommends session.upload_progress.enabled=0 until the next bugfix release (php.net). The changelog showed no 8.5.13 entry at our check (PHP 8 changelog).

If you manage Render services for clients, the agency triage list groups the work by owner. If you want an outside view of what a site shows, 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 Render patched for PHP2Shell?

We found no Render notice about PHP2Shell at our 26 October 2026 check. Render's docs say it has no native PHP runtime and that PHP runs from a Docker image you supply, so the PHP version is whatever your image contains. Rebuild the image on a fixed PHP release, redeploy it, and check the running service.

I restarted my Render service. Does that apply the PHP fix?

No. Render's docs say Restart service starts a new instance on the same Git commit and configuration as the running one. Nothing in your image changes, so the PHP stays the version it was built with. You need a new build or a new image reference, then a deploy.

How do I check which PHP version my Render service is running?

Open the service's Shell page in the dashboard, or connect with render ssh, and ask the PHP binary that serves requests for its version. For PHP-FPM images that is php-fpm -v. Then compare the deploy time with the time your image was built. Free web services have no shell, so use your build log instead.

My Render service uses a prebuilt image from Docker Hub. What do I do?

Build and push a new image on a fixed PHP release under a tag you have not used before, then point the service at it or use Manual Deploy. Render's docs say image-backed services do not redeploy when a tag moves, and that a mutable tag such as latest can return a cached older image.

Does updating WordPress fix PHP2Shell on Render?

No. The two flaws are in the PHP engine, not in WordPress or its plugins. On Render the fix is a rebuilt Docker image on a fixed PHP release, then a deploy of that image.

Can a scan tell me my Render site is patched?

No. From outside, a scan can see a version banner if your site exposes one. It cannot see your image, your build time or when the service last deployed. Treat an outside result as detected or unknown. Only your build log and the running service confirm the fix.

Sources

  1. Render docs: language supportLists Node.js/Bun, Python, Ruby, Go, Rust and Elixir as native, and names PHP as a language you run by deploying a Docker image. Checked 26 October 2026.
  2. Render changelogThree October 2026 entries (1, 16 and 22 October) and tooling releases dated 21 October, none about PHP or a CVE. Checked 26 October 2026.
  3. Render docs: Docker on RenderBuildKit builds, layer caching, and the public image cache that can return an older image for a mutable tag.
  4. Render docs: deploysManual deploy options, including Clear build cache & deploy, and what Restart service does.
  5. Render docs: deploying a prebuilt imageImage-backed services do not redeploy when a tag moves; Manual Deploy and deploy hooks do.
  6. Render docs: deploy hooksThe imgURL parameter selects a different tag or digest.
  7. Render docs: opening a shellDashboard Shell page and render ssh, with availability by service type.
  8. Render docs: shared responsibility modelRender says it patches the operating systems and the runtimes for supported languages. It does not mention customer container images.
  9. PHP security notice, 21 October 2026, with 23 October follow-up (php.net)CVE ids, fixed releases, scope, source backports for 8.1 and older. Checked 24 October 2026.
  10. GHSA-w8hw-w9fx-j79w: CVE-2026-109618 (php/php-src advisory)
  11. GHSA-6wmf-4rv5-p3rp: CVE-2026-109619 (php/php-src advisory)
  12. PHP 8 changelog (php.net)8.5.12 and 8.4.27 dated 22 October 2026. No 8.5.13 entry at our check.
  13. Docker Official Image: php (library definition)Lists 8.5.12, 8.4.27, 8.3.36 and 8.2.35 on Debian trixie and bookworm and Alpine 3.24 and 3.23. No 8.1 or older. Checked 24 October 2026.
  14. Docker docs: build cache invalidationSays the cache for RUN instructions is not invalidated automatically between builds.
  15. 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.
  16. CISA Known Exploited Vulnerabilities catalogNeither CVE appeared in the entries shown on 24 October 2026 (entries dated 8 to 23 October). We did not run a full search by CVE id.

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.