HomeRésuméOpen SourceWorkBlog
    Table of contents
  1. (top)
  2. Discovery
  3. Mitigation
  4. Releasing
    1. Monday, 2026.10.19
    2. Tuesday, 2026.10.20
    3. Wednesday, 2026.10.21
  5. Deployment

PHP2Shell: a Timeline

Thursday, 22 October 2026

Much has been written about the PHP2Shell vulnerabilities in recent days, and much more will be published in the coming weeks. My goal in this article is to provide a concrete timeline of key events, without passing judgement. I have my own thoughts on how things played out, but will reserve them for a future blog post.

PHP2Shell concerns two related vulnerabilities that could allow unauthenticated remote code execution in affected PHP deployments. The vulnerabilities were assigned CVE-2026-109618 and CVE-2026-109619, and fixes were released in PHP 8.2.35, 8.3.36, 8.4.27, and 8.5.12.

As a release manager, I was privy to some internal discussions, and as one of the release managers for PHP 8.5, I actually did some of the things discussed below (including tagging and creating tarballs for PHP 8.5.12). I have only included events and times that are verifiable with public information. This timeline is not exhaustive, but should cover the main points of interest, up to and including the public release of the fixes.

Discovery

Mitigation

Releasing

All times given are in UTC.

Monday, 2026.10.19

The tags and tarballs created on Monday were not published to public GitHub repositories until Wednesday, as discussed below. On Monday, the code for the releases was settled, but the tags were not pushed to php/php-src, nor were the tarballs uploaded to php/web-php-distributions.

As I have previously written, PHP releases are normally tagged on Tuesdays; creating the tags on Monday was unusual. The decision not to make the tags public at the time was also inconsistent with the existing documentation for the release process; a pull request is open to align the documentation with the new practice.

At the time these tags were created, the releases were still expected to be made public on Thursday (in line with PHP's normal release schedule). The date is evident from the dates in the NEWS files for each release. The coordinated releases were originally scheduled for 14:00 UTC on Thursday, October 22.2

Tuesday, 2026.10.20

Wednesday, 2026.10.21

PHP 8.4 and 8.5 are actively maintained, while PHP 8.2 and 8.3 continue to receive security fixes. PHP 8.1 and older branches are no longer supported, although due to the severity of these issues, minimal backports were published.

GitHub does not appear to publicize when the git tags with the fixes were pushed to GitHub. GitHub reports that the GPG signatures on those tags were all verified at 13:35 the same day, so they must have been on GitHub by then. Git does have the functionality to push both branches and tags to a repository (e.g. from a local machine to GitHub) in an atomic operation, so it is possible that the tags were pushed to GitHub at 13:35 in the same operation that pushed the branches, but no public record establishes that this was the case.

Deployment

Fixes to the vulnerabilities were confidentially shared with multiple vendors under embargo before the public release yesterday, giving those organizations the opportunity to deploy fixes to the sites under their control before the vulnerabilities were made public.

Administrators of other websites that run on PHP should upgrade immediately if they have not already done so. Upgrading is the only complete solution to these vulnerabilities. See the advisory on php.net for more information.


  1. More details can be found in the audit report, available on the PHP Foundation site. ↩

  2. The PHP Foundation, "Today’s PHP Security Release, and How We’re Strengthening PHP Security," PHP Foundation, October 21, 2026. ↩ ↩ ↩ ↩ ↩ ↩ ↩ ↩

  3. Elizabeth Barron, "Announcing the Ecosystem Security Team at the PHP Foundation," PHP Foundation, May 18, 2026. ↩

  4. "php2shell by Calif Research," Calif, October 21, 2026. ↩

  5. Time identified based on git history of the php/php-src repository. ↩ ↩ ↩ ↩

  6. Time identified based on git history of the php/web-php-distributions repository. ↩ ↩ ↩ ↩

  7. Time identified based on git history of the php/web-php repository. ↩

  8. The PHP security team to php.announce, "Upcoming Critical PHP Security Release," October 20, 2026. ↩

  9. Kirill Firsov (@k_firsov), "php2shell", Twitter, October 20, 2026. ↩

  10. ftfyyyyyy, comment on "Security advisory: Critical remote code execution vulnerabilities, update now", Hacker News, October 21, 2026. ↩

  11. Time identified based on the GitHub activity logs of the php/web-php-distributions repository. ↩

  12. Time identified based on the GitHub activity logs of the php/web-php repository. ↩

  13. Times identified based on the GitHub security advisory pages. ↩

  14. Time identified based on the GitHub activity logs of the php/php-src repository. ↩

Tags: