Vulnerability

PHP session upload progress remote code execution (CVE-2026-115560)

A remote code execution path in PHP session upload progress.

CVE ID
CVE-2026-115560
CVSS
No CVSS score yet (NVD and the CVE program had no record on 23 October)
Affected product
PHP, session upload progress feature
Exploited
Unknown
Published
23 October 2026

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.

Profile MapVulnerability
  1. CVECVE-2026-115560
  2. ProductPHP PHP, session upload progress feature
  3. Fix Steps5actions listedTest your upload forms · Apply the PHP2Shell updates

What it allows

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.

The Setup PHP Describes

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.

Claims From Public Repositories

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.

How It Differs From PHP2Shell

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.

Who is affected

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:

  • The application configures php_binary or php_serialize as the session serialize handler.
  • The application code switches it to php with ini_set() before session_start().
  • Session upload progress is enabled.

Who Can Rule Itself Out

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.

Timeline

  1. 21 Oct 2026

    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.

  2. 23 Oct 2026

    PHP posts an informational advisory on session upload progress and names CVE-2026-115560. A full advisory is due with the next bugfix release.

  3. 23 Oct 2026

    Between 16:37 and 18:31 UTC, three GitHub repositories appear that claim lab proofs of concept for the id.

  4. 23 Oct 2026

    The CISA KEV file released at 17:00 UTC does not list the id.

What to do

  1. Turn off session upload progress

    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.

  2. Search your code for the handler switch

    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.

  3. Test your upload forms

    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.

  4. Apply the PHP2Shell updates

    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.

  5. Watch for the full advisory

    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.

Questions

Is CVE-2026-115560 patched?

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.

Am I affected if I use WordPress or another popular application?

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.

Is CVE-2026-115560 being exploited?

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.

Is this the same as PHP2Shell?

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.

In our research

  1. PHP Warns of a New RCE Path in Session Upload Progress (CVE-2026-115560) October 2026
  2. PHP End of Life: Which Versions Still Get Security Fixes October 2026
  3. PHP2Shell Timeline: The First 60 Hours, in Data October 2026
  4. PHP2Shell: Two Critical PHP Flaws Reported as RCE, CVE-2026-109618 and CVE-2026-109619 October 2026

Sources

  1. Informational advisory: Session upload progress PHP.net
  2. Security advisory: Critical remote code execution vulnerabilities, update now PHP.net
  3. GHSA-6wmf-4rv5-p3rp: RCE via stale global state PHP on GitHub
  4. Session upload progress PHP manual
  5. PHP2Shell vulnerabilities VulnCheck