Skip to content

fix(roles/php)!: disable session upload progress and fatal error backtraces - #467

Merged
NavidSassan merged 2 commits into
mainfrom
fix/php-cve-2026-109619
Oct 23, 2026
Merged

NavidSassan merged 2 commits into
mainfrom
fix/php-cve-2026-109619

Conversation

@markuslf

@markuslf markuslf commented Oct 21, 2026 •

Copy link
Copy Markdown
Member

Mitigates CVE-2026-109619 (GHSA-6wmf-4rv5-p3rp, RCE via stale global state) by default, following the recommendations of the PHP security team.

Changes

  • session.upload_progress.enabled = Off for PHP 8.2 to 8.5 (php__ini_session_upload_progress_enabled__*_var, upstream default On).
  • fatal_error_backtraces = Off for PHP 8.5 (php__ini_fatal_error_backtraces__*_var, upstream default On).
  • Both are also set as php_admin_flag in every PHP-FPM pool. The ini alone does not hold: a .user.ini can re-enable the PERDIR upload progress, ini_set() the backtraces. php_admin_* marks the directive ZEND_INI_SYSTEM (sapi/fpm/fpm/fpm_php.c).

Verification

  • php-fpm 8.5.11 (remi) on Rocky 10, with a control run without the flags:

    without php_admin_flag with php_admin_flag
    .user.ini with session.upload_progress.enabled = On re-enabled (1) blocked (0)
    ini_set('fatal_error_backtraces', '1') re-enabled returns false, stays 0
  • extensions/molecule/php/install/verify.yml asserts the CLI and both pools report upload progress off, against a .user.ini that tries to re-enable it. php-fpm only reads a .user.ini with DOCUMENT_ROOT set (sapi/fpm/fpm/fpm_main.c), so the probe now sends it. molecule test --scenario-name php/install passed on Debian 12 and 13 and Rocky 8, 9 and 10 (converge, verify, idempotence, verify).

Not covered

  • CVE-2026-109618 (OOM corruption): the only config workaround, memory_limit=-1, is a stop-gap and would remove the memory limit after the update as well. post_max_size already defaults to 8M.
  • Only updating PHP to 8.2.35 / 8.3.36 / 8.4.27 / 8.5.12 fixes both vulnerabilities. Remi has no updated packages yet (as of 2026-10-21).

@markuslf
markuslf requested a review from NavidSassan October 21, 2026 14:12
markuslf and others added 2 commits October 23, 2026 16:35
…traces

Both are confirmed producers of CVE-2026-109619 (GHSA-6wmf-4rv5-p3rp,
RCE via stale global state). Set session.upload_progress.enabled = Off
for PHP 8.2 to 8.5 and fatal_error_backtraces = Off for PHP 8.5, in the
ini and as php_admin_flag in every FPM pool. The ini alone does not hold:
a .user.ini can re-enable the PERDIR upload progress, ini_set() the
backtraces. Verified with php-fpm 8.5.11 on Rocky 10, with a control run
without the flags.
Distribution PHP on EL8/EL9 and Ubuntu 22.04 is 7.2 to 8.1 and gets the
CVE-2026-109619 fixes as vendor backports. Document the mod_php gaps
(httpd restart, .htaccess overrides) in the README.
@NavidSassan
NavidSassan force-pushed the fix/php-cve-2026-109619 branch from a23298e to b6effeb Compare October 23, 2026 14:35
@NavidSassan
NavidSassan merged commit 33349cc into main Oct 23, 2026
13 checks passed
@NavidSassan
NavidSassan deleted the fix/php-cve-2026-109619 branch October 23, 2026 14:39
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