The problem in two sentences
An unauthenticated HTTP request can corrupt PHP’s internal state and lead to code execution, before the application even starts. WordPress, Magento, PrestaShop or an in-house app: every site served by PHP is in scope, patched or not. According to the PHP security team, every installation serving web requests is affected: PHP-FPM, Apache with mod_php, php-cgi, FrankenPHP and LiteSpeed. The risk is rated highest for mod_php, where a working exploit has been demonstrated.
The full technical details are in advisories GHSA-w8hw-w9fx-j79w and GHSA-6wmf-4rv5-p3rp.
Timeline
The public fix now tells attackers where to look: expect attacks to ramp up against servers that are not yet updated.
What we did at OnetSolutions
Mitigation in place before the fix. On October 21, before the fixed releases shipped, we disabledsession.upload_progress on all our web hosting servers, for every PHP version on offer (7.0 to 8.4). We checked the effective values version by version.
Fix installed the same day. Our teams were on it from the moment the flaws leaked and followed the situation throughout. The fixed PHP releases went onto all our web hosting the same day they were published, for every version on offer, including PHP 7.0 to 8.1, which get a backported fix. The mitigation stays in place on top.
Monitoring. Real-time malware scanning stays on across our web hosting servers.
The mitigation narrows the attack surface; it does not close it. The PHP team is clear: only updating fixes these flaws.
Assess your exposure
You run your VPS, so installing the fix there is up to you. The commands follow.
Update PHP
Linux distributions received the patches in advance, so their packages follow within hours of the release.If you cannot update right away
The PHP team lists measures that close some of the known attack paths. It warns that they do not make an installation safe.Against CVE-2026-109619 (stale global state)
Disable upload progress tracking inphp.ini or a conf.d file loaded at startup, then restart every worker. ini_set() or a .user.ini is not enough: the setting has to apply before the request is parsed.
/etc/php/8.3/fpm/pool.d/www.conf):
fatal_error_backtraces = 0: it closes the confirmed attack path through fatal error backtraces.
Against CVE-2026-109618 (out of memory)
Lower the maximum request size:post_max_size = 8M if the application takes no file uploads, 32M if it does, with upload_max_filesize below post_max_size.
The PHP team also suggests memory_limit = -1, provided a container or cgroup memory limit protects the server. Without that limit a single worker can eat all of the machine’s memory, so do not apply it lightly.
Check
session.upload_progress.enabled => Off.

