Skip to content

fix(security): require PHP 8.5.12 for CVE-2026-109618 / CVE-2026-109619 - #1598

Merged
rumblefrog merged 2 commits into
sbpp:mainfrom
Rushaway:fix/php-cve-2026-109618
Oct 21, 2026
Merged

rumblefrog merged 2 commits into
sbpp:mainfrom
Rushaway:fix/php-cve-2026-109618

Conversation

@Rushaway

@Rushaway Rushaway commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

Summary

PHP published an urgent security advisory today (php.net, 2026-10-21): CVE-2026-109618 (GHSA-w8hw-w9fx-j79w) and CVE-2026-109619 (GHSA-6wmf-4rv5-p3rp), two critical unauthenticated remote code execution bugs fixed in PHP 8.5.12. The PHP team rates the risk highest for mod_php, which is what the production image runs (php:8.5-apache).

This PR keeps the published image from shipping a vulnerable PHP and applies the advisory's mitigations. Nothing else.

  • docker/Dockerfile.prod: the runtime stage fails the build when PHP is below PHP_MIN_VERSION (default 8.5.12). The php:8.5-apache tag floats, so a stale cache or a lagging mirror would otherwise publish an unpatched image without anyone noticing.
  • .github/workflows/docker-image.yml: pull: true on build-push-action so buildx always re-resolves the base image.
  • docker/php/prod-php.ini: session.upload_progress.enabled = 0 and fatal_error_backtraces = 0, the advisory's mitigations for the confirmed CVE-2026-109619 paths. The panel uses neither. They have to be set before request parsing (not via ini_set()), hence the ini file.
  • Docs: Docker "Upgrading" section (no PHP version named, so nothing to clean up later), and the AGENTS.md row for the prod image.

Heads-up

At the time of writing, Docker Hub's php:8.5-apache still resolves to 8.5.11. Until the official image is rebuilt, the :main / tag builds will fail on purpose at the floor check rather than publish a vulnerable image. Re-run docker-image.yml once Docker Hub ships 8.5.12, and it may be worth cutting a release afterwards so :latest picks up the patched PHP.

Test plan

  • Floor check run in the current php:8.5-apache (8.5.11): fails with floor 8.5.12, passes with floor 8.5.0
  • prod-php.ini mounted in the base image: both directives read 0
  • docker-image.yml green once Docker Hub publishes 8.5.12

@rumblefrog @maxijabase: time-sensitive security fix, could you take a look? The CVEs are already public, so a regular PR seemed fine.

🤖 Generated with Claude Code

@Rushaway
Rushaway requested review from a team and rumblefrog October 21, 2026 14:03

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we should drop the installer change. While yes we want to have folks update their PHP, the change in installer sounds like a new minimum even though nothing enforces it, especially for existing installs, and we still only require 8.5 in our composer manifest.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed, dropped in 24f678a. The wizard is back to the plain 8.5 check.


- **PHP 8.5 or newer.** This is checked by the install wizard's
"System check" step.
- **PHP 8.5.12 or newer for production.** Older 8.5 releases have two

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ditto, can drop, otherwise we'll need to clear this out in the future.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dropped in 24f678a. I also reworded the Docker "Upgrading" note so it no longer names a PHP version, for the same reason.

@Rushaway
Rushaway requested a review from rumblefrog October 21, 2026 21:44
Rushaway and others added 2 commits October 21, 2026 18:32
PHP 8.5.12 fixes two critical unauthenticated RCE bugs (OOM corruption
and stale global state). The production image runs mod_php, the
deployment the PHP security team rates highest risk.

- Dockerfile.prod: fail the build when the floating php:8.5-apache base
  is below 8.5.12 (PHP_MIN_VERSION build arg), so a stale cache or
  lagging mirror can't publish a vulnerable runtime.
- docker-image.yml: pull: true so buildx always re-resolves the base.
- prod-php.ini: session.upload_progress.enabled=0 and
  fatal_error_backtraces=0, the advisory's mitigations for the
  CVE-2026-109619 paths. The panel uses neither.
- Install wizard: warn (not block) below 8.5.12, since distros may
  backport the fix.
- Docs: prerequisites + Docker upgrade notes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Review feedback: the wizard warning read like a new minimum that nothing
enforces (composer still requires 8.5), and versioned prose would need
clearing later. The Docker build floor and php.ini mitigations stay.
Reword the Docker upgrade note so it doesn't name a PHP version.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@rumblefrog
rumblefrog force-pushed the fix/php-cve-2026-109618 branch from 24f678a to 3364e03 Compare October 21, 2026 22:32
@rumblefrog
rumblefrog added this pull request to the merge queue Oct 21, 2026
Merged via the queue into sbpp:main with commit 3d0fe27 Oct 21, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants