Article
PHP Warns of a New RCE Path in Session Upload Progress (CVE-2026-115560)
PHP has no patch yet for CVE-2026-115560, an unlikely RCE path in session upload progress. See who is affected and the setting to change…
Quick links
Press Enter to search, Esc to close
Vulnerability
A remote code execution path in PHP session upload progress.
In short
CVE-2026-115560 is a remote code execution path in PHP session upload progress. PHP posted an informational advisory on 23 October 2026 and calls the issue unlikely in practice. It needs an application that sets session.serialize_handler to php_binary or php_serialize and then switches it to php at runtime before session_start(). PHP has no patch yet. It suggests session.upload_progress.enabled=0 until the next regular bugfix release, and will publish a full advisory then.
PHP calls CVE-2026-115560 an "unlikely RCE vector" in session upload progress. The feature lets an application follow a file upload through the PHP session, so a page can draw a progress bar. PHP says that in one unusual setup the feature can lead to remote code execution. PHP has not yet published how the attack works. It will do so in a full advisory with the next regular bugfix release.
Three things must be true together. The application sets session.serialize_handler to php_binary or php_serialize in its configuration. It then switches the handler to php at runtime with ini_set() before it calls session_start(). Session upload progress must also still be on, and the PHP manual lists it as on by default.
Applications that never change the serialize handler at runtime can keep the feature on, says PHP. The stopgap it suggests is session.upload_progress.enabled=0 until the next bugfix release.
On 23 October, six public GitHub repositories named the id. The newest, created at 18:31 UTC, says it holds a lab on PHP 8.5.12 where the handler switch leads to object injection and then command execution. That is the author's claim, and we have not verified it. The same text says no CVSS score, weakness type or affected range had been published. We did not run or link any of the repositories.
PHP2Shell is the name for CVE-2026-109618 and CVE-2026-109619, fixed on 21 October in PHP 8.5.12, 8.4.27, 8.3.36 and 8.2.35. PHP's advisory for CVE-2026-109619 already lists turning off upload progress as a mitigation, and that is why the same setting is named again. PHP's note does not say the 21 October releases fix CVE-2026-115560. Sources differ on which id covers which upload-progress path: VulnCheck ties the upload-progress scans it saw to CVE-2026-109618, while PHP gives CVE-2026-115560 to the serializer switch. Our PHP security news post on CVE-2026-115560 and the PHP2Shell analysis carry the wider story.
PHP has not published an affected version range, and the id had no NVD or CVE program record when we looked at 18:42 UTC on 23 October. What it has published is a set of conditions, not versions:
php_binary or php_serialize as the session serialize handler.php with ini_set() before session_start().PHP says applications that never change the serialize handler at runtime can keep the feature on. Because the trigger lives in application code, the version PHP reports to the outside does not show it. Our free PHP check compares versions for CVE-2026-109618 and CVE-2026-109619 only and does not test this id.
PHP releases 8.5.12, 8.4.27, 8.3.36 and 8.2.35 for PHP2Shell. Its CVE-2026-109619 advisory lists turning off upload progress as a mitigation.
PHP posts an informational advisory on session upload progress and names CVE-2026-115560. A full advisory is due with the next bugfix release.
Between 16:37 and 18:31 UTC, three GitHub repositories appear that claim lab proofs of concept for the id.
The CISA KEV file released at 17:00 UTC does not list the id.
Set session.upload_progress.enabled=0 in php.ini, the FPM pool or the server configuration, then restart every PHP worker. PHP's advisory for CVE-2026-109619 says to set it administratively and restart every worker. PHP's 21 October security note adds that the setting must apply before request parsing, so do not rely on ini_set() or FPM .user.ini.
Search your code and configuration for session.serialize_handler and for ini_set calls that change it. A switch to php that runs before session_start() is the case PHP describes.
Turning the feature off stops any page that reads upload progress from the session, such as a progress bar, from working. Test the forms before and after the change.
Update PHP to 8.5.12, 8.4.27, 8.3.36 or 8.2.35 if you have not yet. These fix CVE-2026-109618 and CVE-2026-109619. PHP has not said they fix CVE-2026-115560.
PHP will publish a full advisory for CVE-2026-115560 with the next regular bugfix release. Update then, and keep upload progress off if you do not need it.
Not yet. PHP says it handles the issue in its regular release cycle and will publish a full advisory with the next release. Its note does not say the 21 October releases fix it.
Only if the application sets the serialize handler to php_binary or php_serialize and then switches it to php at runtime before session_start(), with upload progress on. PHP says applications that never change the handler can keep the feature on. Check your own code.
PHP's advisory does not mention exploitation and calls the setup unlikely in practice. The id was not in the CISA KEV file released on 23 October. GitHub authors claim lab proofs of concept, which we have not verified.
No. PHP2Shell is CVE-2026-109618 and CVE-2026-109619, fixed on 21 October. The mitigation overlaps, and sources differ on which id covers which upload-progress path.
Take control of your digital security with an exclusive demo of our AI-driven threat intelligence platform.