PHP Scheduled an Emergency Release Because the Embargo Broke First

On 20 October 2026 the PHP security team posted a short notice to php.net. We quote it nearly in full, because its brevity is the story:

The PHP security team would like to give advance notice of an upcoming security release. It is scheduled for Wednesday, 21 October 2026 at 14:00 UTC. It addresses two critical vulnerabilities, both rated CVSS v4.0 9.2. All PHP users are encouraged to prepare now so they can upgrade as soon as the release is available. We reserve the right to release earlier should details of either vulnerability become public, or should evidence of active exploitation appear in the wild. Full details, affected versions, and the fixed versions will be published with the release.

That is the complete set of facts PHP has stated. No CVE identifiers. No affected versions. No fixed versions. No vulnerability class. Projects do not publish advance notices like this casually, and the sentence reserving the right to release early is not boilerplate — it is the tell that the coordination plan had already failed.

What PHP has confirmed, and what it has not

Nearly every detail now circulating about these flaws originates outside the PHP project. Keeping the two columns separate matters here more than usual, because the discrepancies between them are substantial.

Confirmed by PHP: a release on 21 October at 14:00 UTC; two vulnerabilities; both rated CVSS v4.0 9.2; details to follow with the release.

Not from PHP: the identifiers CVE-2026-109618 and CVE-2026-109619; the characterisation as remote code execution; the claim that PHP 5, 6, 7 and 8 are affected; the assertion that only PHP 8 will receive patches; and a severity of CVSS 10.0.

The chain of custody for those claims runs through the leak itself. BleepingComputer reports that a since-deleted Hacker News post by a user named “petecooper” claimed two critical PHP RCEs would be disclosed on 22 October, named both CVE identifiers, scored them 10.0 and said they reached back to PHP 5. watchTowr subsequently confirmed to BleepingComputer that the vulnerabilities are real, gave the same two identifiers, described them as RCE affecting PHP 5 through 8, and said CEO Benjamin Harris's team believes it has reproduced CVE-2026-109618 — while declining to publish technical detail until patches ship. watchTowr also stated the original embargo date was Thursday at 11:00 ET, which is not the date PHP has scheduled.

So the two most load-bearing numbers disagree. PHP says CVSS v4.0 9.2 for each; the leak and watchTowr say 10.0. Those are not the same claim, and they may not even be the same scoring system — a v3.1 10.0 and a v4.0 9.2 can describe the same bug, since v4.0 reweights several metrics and rarely reaches 10.0 for a vulnerability without a scope change. We have no way to reconcile them before the release, and neither does anyone else outside the embargo. Treat 9.2 as the attributable figure, because it is the only one with a named source that has actually seen the advisories.

The version-range claim deserves the same caution for a different reason. PHP 5, 6 and 7 are all end of life and receive no security releases; PHP 6 was never released at all as a production branch. “Affects PHP 5, 6, 7 and 8” is therefore a statement about where the defective code exists, not a statement about what gets fixed. If the underlying bug is that old, the practical consequence is that a very large population of unmaintained installations will never receive a patch, regardless of what PHP ships tomorrow. That is a real and serious consequence — and it is also, at the moment, unverified.

Why the pre-announcement is the right call

Once an embargo leaks, a project has three bad options: ship immediately with a rushed fix, hold the original date and let attackers work with a head start, or do what PHP did — compress the timeline, say so publicly, and tell operators to stage now. The advance notice converts a window in which only attackers know something into a window in which defenders at least know when.

It is the same structural problem Go faced last week and solved differently. In CVE-2026-111943 the Go team shipped a fix whose entire public description was four sentences and eight hashes, naming no certificate authority, because naming it early would have told the key holder how long their window was. PHP has made the mirror-image choice: it cannot ship first and explain later, because a source release requires every downstream packager to rebuild, so instead it is explaining the schedule early and the substance late. Both are partial disclosure under time pressure. Neither is comfortable, and both beat the alternative.

What is notably absent is any claim of exploitation. watchTowr explicitly said it has not observed in-the-wild exploitation despite the leak, and PHP's notice treats exploitation as a contingency that would accelerate the release rather than something already happening. As of this writing that remains the position.

What to do before 14:00 UTC

PHP asked users to “prepare now.” Concretely, the work that pays off regardless of what the advisory turns out to say:

  • Inventory first. Enumerate every PHP interpreter you actually run, including the ones you forgot: FPM pools, CLI cron jobs, container base images, bundled appliance runtimes, and the PHP inside third-party products. The release note will give version ranges; you want the list ready before it does, not after.
  • Pre-stage packages and rebuild paths. If you build images, make sure a rebuild is a one-command operation today. If you depend on a distribution, confirm which PHP channel you track and how quickly it has historically followed upstream security releases.
  • Identify your end-of-life installs now. Anything on PHP 7 or earlier may well be in the affected range with no fix coming. Those systems need a decision — upgrade, isolate, or retire — and that decision takes longer than a patch window.
  • Do not act on the leaked details. There is no mitigation to apply for a vulnerability whose class and trigger are unpublished. Configuration changes made on the strength of a deleted forum post are guesses with an outage risk and no security benefit.
  • Watch for an earlier release. PHP explicitly reserved the right to move the date forward. Subscribe to the ANNOUNCE list rather than refreshing news sites.
  • Plan the post-release read. When the advisories land, the two things that determine your exposure are the affected version ranges and whether the trigger is reachable from untrusted input in your configuration. Everything else is secondary.

One last note for readers whose estates are mostly AI and agent infrastructure rather than classic web stacks: PHP is easy to assume you do not run. It is also what a great many of the self-hosted dashboards, CMS installs, wikis, admin panels and legacy internal tools around those estates are built on — the same category of quietly-present dependency that produced the Drupal Field UI RCE earlier this week. Run the inventory even if you expect it to come back empty.

Our verification was read-only. The text of the advance notice, the 21 October 2026 14:00 UTC release time, the count of two vulnerabilities, the CVSS v4.0 9.2 ratings, the early-release reservation and the commitment to publish details with the release were read first-hand from the PHP.net 2026 news archive. The CVE identifiers CVE-2026-109618 and CVE-2026-109619, the remote-code-execution characterisation, the PHP 5 through 8 version claim, the CVSS 10.0 figure, the deleted Hacker News post, the original Thursday 11:00 ET embargo date, watchTowr’s reproduction claim and its statement that no in-the-wild exploitation has been observed were read from BleepingComputer’s report and are attributed to it and to watchTowr throughout rather than adopted as confirmed fact. No PHP installation, host or third-party service was probed, and no exploit detail is reproduced because none is public. Brave Search was used for discovery only. This article describes the state of the disclosure before the scheduled release; the advisories themselves will supersede it.

Sources: