Critical PHP Vulnerabilities (CVE-2026-109618, CVE-2026-109619): What RunCloud Is Doing

PHP is scheduled to release fixes for two critical vulnerabilities today at 14:00 UTC. Both are rated CVSS 9.2. Both are reported to allow remote code execution without authentication on default PHP installs and as details leaked before the patch, exploits are already circulating.

What We’re Doing Now

We’ve disabled session.upload_progress on all servers as a temporary mitigation. Public research points to this feature as the attack path. It isn’t an official fix, but it closes the known route until patches land.

Adverse impacts of this: If your app uses PHP’s built-in upload progress tracking, progress bars may stop updating. Uploads still work. Most apps track progress in JavaScript and won’t notice.

Optional: Extra Protection with NGINX Templates

The attack needs a multipart/form-data request (the format used for file uploads). Blocking or limiting those requests at Nginx stops it before it reaches PHP.

We’ve released two Nginx config templates.

Please pick the one that fits your site:

Variant 1: Allow uploads on specific paths, block the rest. Multipart requests are only allowed on the paths you list, with a rate limit of 5 requests/minute. Edit the paths and limit to match your site before using it.

Variant 2: Block all multipart requests. For sites that never accept file uploads or multipart form submissions. Use as is.

You can find these templates here:

https://manage.runcloud.io/settings/nginx/templates/public

Before you pick Variant 2, check whether your site accepts uploads anywhere. WordPress uses multipart for media uploads, plugin/theme installs and many contact forms. If any of those apply, use Variant 1 and allow those paths (for WordPress, usually /wp-admin/async-upload.php, /wp-admin/update.php, /wp-admin/media-new.php, plus any form endpoints).

These templates apply to NGINX-based stacks only. They don’t apply to OpenLiteSpeed or LiteSpeed Enterprise.

How patches will roll out

Patches will be applied automatically to all supported PHP versions (8.2 and newer). You don’t need to do anything.

Timing depends on your stack:

- Native (NGINX / NGINX+Apache): We build our own PHP packages. We’ll build and release patched versions as soon as PHP publishes the fix.
- Docker / Containerized: These use Ondřej Surý’s PHP packages. We’ll release as soon as Ondřej publishes patched builds.
- OpenLiteSpeed / LiteSpeed Enterprise: These use LiteSpeed’s own PHP builds (lsphp). We’ll update as soon as the LiteSpeed team releases patched versions.

We’ll update this post as each stack is patched.

If you run PHP 8.1 or older

PHP 8.1 and older are end-of-life. PHP’s official fixes cover only 8.2 and newer. Assume your version will not get an official fix. RunCloud will not release patched builds for PHP 8.1 or older.

Switch your web apps to PHP 8.2 or newer before 14:00 UTC today. You can change the PHP version for each web app from the RunCloud dashboard.

Test your app after switching. Most modern WordPress and Laravel apps run fine on 8.2+. Older plugins or custom code may need updates.

The temporary mitigation stays active on older versions, but it’s not a replacement for upgrading. Don’t leave a site on end-of-life PHP once the details go public.

Recommended for Everyone

Be on PHP 8.2 or newer. That’s the only way to keep getting security fixes.

Updates

21 Oct, 8:00 UTC: Temporary mitigation applied to all servers.
21 Oct, 8:30 UTC: NGINX templates released.
21 Oct, 22:00 UTC: Patched builds released for Native and OpenLiteSpeed / LiteSpeed Enterprise. Rolling out automatically.
Native: patched build available
OpenLiteSpeed / LiteSpeed Enterprise: patched build available
Docker / Containerized: pending

If you have any questions, please reach out to support by opening a ticket in your dashboard as they’ll be able to provide the most specific guidance.

6 Likes

Maintenance mode has been lifted, so the RunCloud dashboard and API are back up. If any API requests failed while maintenance mode was active, please retry them now. Requests made during that window were rejected, not queued, so nothing will run on its own later.

Where the patches stand

We’re now testing the patched PHP builds before we apply them to your servers. A security patch that breaks a web application isn’t a fix, so we’re checking these builds carefully first rather than pushing them out untested.

Parts of the rollout still depend on third parties publishing their own patched builds, so we can’t give an exact time yet. Here’s where each stack is:

  • Native (NGINX / NGINX + Apache): patched builds in testing.
  • Docker / Containerized: waiting on patched builds from Ondřej Surý’s PHP packages.
  • OpenLiteSpeed / LiteSpeed Enterprise: waiting on patched lsphp builds from the LiteSpeed team.

Once testing passes, patches will be applied automatically to PHP 8.2 and newer. You don’t need to do anything.

In the meantime

  • The temporary mitigation (session.upload_progress disabled) stays active on all servers until the patches land.
  • If any of your web applications still run PHP 8.1 or older, now is a good time to switch them to PHP 8.2 or newer from the dashboard. Those versions won’t receive an official fix.

We’ll post here again as each stack is patched. Thank you for your patience while we get this done as smoothly as possible.

If you have any questions, please open a ticket in your dashboard or email [email protected] from the email associated with your account, and we’ll get back to you as soon as possible (as the support team will be able to see exactly which servers you have in your account and their server stack (Native, Containerized, etc.). Thank you.

9 Likes

Update: patched PHP builds are now available

The patched PHP builds for CVE-2026-109618 and CVE-2026-109619 are now published in the RunCloud package repository for these stacks:

  • Native (NGINX / NGINX + Apache): available.
  • OpenLiteSpeed / LiteSpeed Enterprise: available.
  • Docker / Containerized: not available yet. We’re still waiting on patched builds and will post here as soon as they’re out.

Patched builds roll out to your servers on PHP 8.2 and newer automatically, so you don’t need to do anything. The rollout isn’t instant, so if you want to apply the patch immediately, please keep reading:

Want the patch right now?

If you’d rather not wait for the automatic rollout, you can install it yourself on a Native, OpenLiteSpeed or LiteSpeed Enterprise server.

Connect to the server over SSH as root (or a user with sudo) and run:

apt update && apt upgrade -y

Warning: this upgrades every package on the server that has an update waiting, not only PHP. Services such as PHP-FPM and your web server restart during the upgrade, which can briefly interrupt your sites. Run it at a quiet time and make sure you have a recent backup first. If you’re not comfortable doing this, wait for the automatic rollout.

A separate update for containerized servers will follow.

About the dashboard today

The RunCloud dashboard and API were interrupted several times today while we pushed the patched builds out. Both are back up now.

Still in place

  • The temporary mitigation (session.upload_progress disabled) stays active on all servers.
  • If any of your web applications still run PHP 8.1 or older, switch them to PHP 8.2 or newer from the dashboard. Those versions won’t receive an official fix, and the patched builds above don’t cover them.

What’s next

We’ll follow up tomorrow with a detailed write-up of what happened today, including the dashboard interruptions. We’ll also post here as soon as patched builds for containerized servers are available.

Thank you for your patience. We know today has been disruptive, and we appreciate you bearing with us. We took preventative measures to ensure that both our and, by extension, your infrastructure were as protected as they could be.

If you have any questions, please open a ticket in your dashboard or email [email protected] from the email address associated with your account. The support team can see which servers you have and which stack each one runs, so they can give you the most specific answer.