PHP session upload progress vulnerability after the PHP2Shell patch PHP published an informational advisory on 23 October 2026 warning of a remaining remote code execution vector in its session upload progress feature, tracked as CVE-2026-115560, two days after the 21 October releases (PHP 8.5.12, 8.4.27, 8.3.36 and 8.2.35) fixed the two original PHP2Shell vulnerabilities, CVE-2026-109618 and CVE-2026-109619. The project says the new scenario is unlikely because it requires session.serialize_handler set to php_binary or php_serialize, application code switching the handler to php via ini_set(), and session.upload_progress.enabled left on. The recommended mitigation is setting session.upload_progress.enabled=0 at the server level and restarting PHP workers until the next regular bugfix release. Originally published at hamzaahmadaslam.com https://hamzaahmadaslam.com/blog/php-session-upload-progress-vulnerability . How this article was made: drafted with AI assistance from a researched brief, then checked against primary documentation before publishing. The PHP session upload progress vulnerability remains open after the PHP2Shell patch. On 23 October 2026, php.net warned about an unlikely remote code execution path tracked as CVE-2026-115560; the 21 October security releases still fix the two original PHP2Shell vulnerabilities. Set session.upload progress.enabled=0 in server-level PHP configuration and restart your PHP workers until the next regular bugfix release. The PHP project published an informational advisory on 23 October https://www.php.net/archive/2026.php 2026-10-23-1 , two days after releasing fixes for CVE-2026-109618 and CVE-2026-109619. The new advisory describes an unlikely route to remote code execution RCE , where an attacker can cause a server to run code. | Date | Event | Source | |---|---|---| | 21 Oct 2026 | PHP 8.5.12, 8.4.27, 8.3.36 and 8.2.35 released with fixes for the two original PHP2Shell vulnerabilities. | php.net | | 21 Oct 2026 | Issue 24481 opened, reporting a separate unserialize use-after-free problem. | php-src GitHub | | 22 to 23 Oct 2026 | Hosted Power released updates to its php uploadprogress guard extension, including version 3.2.4 on 23 October. | Hosted Power GitHub | | 23 Oct 2026 | PHP published the session upload progress advisory and assigned CVE-2026-115560 to the remaining vector. | php.net | The earlier CVE-2026-109619 advisory https://github.com/php/php-src/security/advisories/GHSA-6wmf-4rv5-p3rp recommended disabling session upload progress. That blocked its confirmed session-related attack paths, but not every variant of CVE-2026-109619. It offered no protection against CVE-2026-109618. PHP says updating is the only complete response to the original vulnerabilities. Disabling upload progress adds protection against the remaining session-related risk. A session lets PHP retain temporary information between requests from the same visitor. PHP can track file upload progress through session data. According to the PHP session upload progress manual https://www.php.net/manual/en/session.upload-progress.php , tracking starts when a multipart upload includes a form field named by session.upload progress.name . The default field name is PHP SESSION UPLOAD PROGRESS . Another request can read the stored information to update an upload progress indicator. The feature has existed since PHP 5.4.0 and is enabled by default. Upload progress operates during request parsing, before the application's ordinary PHP code runs. That early processing is why it appeared in the original PHP2Shell advisory. The confirmed CVE-2026-109619 session path involved internal state surviving between requests. The new advisory concerns a narrower combination of session settings. Upload progress bars can use other methods, including JavaScript. Test your site's uploads after disabling this PHP feature instead of assuming every progress indicator depends on it. PHP calls the CVE-2026-115560 scenario unlikely because all three conditions must occur: session.serialize handler as either php binary or php serialize . session start , application code changes that handler to php using ini set . session.upload progress.enabled remains enabled. The serialize handler controls how PHP converts session information into a stored format and reads it back. The names php , php binary and php serialize refer to different storage formats. An application that uses php serialize consistently does not match the described condition. Neither does one that uses the default php handler without changing it at runtime. PHP explicitly says applications that never change their serialize handler at runtime can keep upload progress enabled. Ask your hosting provider or developer to confirm: A hosting dashboard showing session.serialize handler=php provides only part of the answer. Application code may change that setting. If nobody has checked the code, disabling upload progress is the simpler precaution. Search the site's PHP files for references to the serialize handler. From a WordPress installation directory, run: grep -RIn --include=' .php' 'session.serialize handler' wp-content/ Inspect matches in plugins, themes, must-use plugins and custom code. Search application and vendor directories outside wp-content when relevant. Look for an ini set call changing session.serialize handler to php before session start . Check the original handler value in php.ini and PHP-FPM pool settings. A search with no matches cannot establish safety when configuration changes occur elsewhere or use dynamically constructed code. As of 23 October 2026, php.net has published neither a separate affected-version list nor a fix date for CVE-2026-115560. The narrow CVE-2026-115560 condition should not distract from servers still missing the original PHP2Shell fixes. PHP 8.1 and older receive no new releases from the PHP project. For the October emergency, PHP provided minimal source backports for PHP 7.4, 8.0 and 8.1 on branches named PHP-