Research collected from outside sources and what this site derives from them; every fact links to a saved copy of its source Research or story?

Risks / R01 Remote code execution on internet-facing PHP servers / R01-4

R01-4: The fix is incomplete, or a third flaw follows

Because the bailout mechanism is a class of bug and the 8.5.12 fix may be incomplete, a patched server may still be reachable by another path, resulting in a second emergency on systems already declared done.

Rating 15 high · Likelihood 3 Possible · Impact 5 Severe · Kind Security · Acceptance not recorded

Basis. Reported by Fastly and in the oss-security thread; unverified as to a specific third bug.

The path

Told inPatch at the speed of MetasploitPatch at the speed o…Where php2shell standsWhere php2shell stan…Acted on byPlatform engineers and developersPlatform engineers a…Story site agentStory site agentJournalistJournalistCarried byThe fix authors (owner)The fix authors (own…The PHP security team (treater)The PHP security tea…Organisations running PHP (bearer)Organisations runnin…Platform engineers and developers (bearer)Platform engineers a…The finders (informer)The finders (informe…RiskR01-4 The fix is incomplete, or a third flaw followsR01-4 The fix is inc…Arises fromBailout as a class of bugBailout as a class o…VulnerabilityCVE-2026-109618CVE-2026-109618CVE-2026-109619CVE-2026-109619Fixed byAn orderly unwind at the next safe pointAn orderly unwind at…A hard limit that ends the process cleanlyA hard limit that en…A soft memory limit that no longer jumpsA soft memory limit …Allocations that may fail instead of abortAllocations that may…Request globals reset so nothing survives a failureRequest globals rese…Bounded, deduplicated request parsingBounded, deduplicate…CodeZend/zend_alloc.cZend/zend_alloc.cZend/zend_execute_API.cZend/zend_execute_AP…Zend/zend_hash.cZend/zend_hash.cZend/zend_string.cZend/zend_string.cZend/zend_types.hZend/zend_types.hext/session/session.cext/session/session.…main/SAPI.cmain/SAPI.cmain/main.cmain/main.cmain/rfc1867.cmain/rfc1867.c
The risk sits in the middle. To its left, the stories that tell it, the roles and team members that act on it, and every stakeholder that carries part of it. To its right, what it arises from, the vulnerability behind that, the part of the fix that addresses it and the code the fix changed. Every line is an edge in the graph; every node is a link; hover for the full name. Vulnerabilities, stories and team members include those of the risk this one is part of; roles include those of the risks above and beneath it.

Who carries it

One risk, assigned to every stakeholder that carries part of it, with the part each plays.

StakeholderPartWhyIts register
The fix authorsownerOwn the design of the fix and its completeness.1 risk
The PHP security teamtreaterReceives and coordinates the next report.7 risks
Organisations running PHPbearerWill patch again.26 risks
Platform engineers and developersbearerRebuild and redeploy a second time, on systems already signed off.4 risks
The findersinformerAlready looking at the same code with the same tools.7 risks

What it arises from

The evidence

Treatments

TreatmentStatusWhere
The fix replaces the longjmp bailout with a delayed soft limit and a clean hard exitpartialThe fix, mapped to the code
Keep detection and filters after patchingpartialDetection and defence: what blocks php2shell and what shows it

The standards that govern it

FrameworkControlWhat it asksFamily
NIST SSDFRV.3Analyse vulnerabilities to identify their root causesFrameworks and control catalogues
NIST SSDFPW.8Test executable code to find vulnerabilitiesFrameworks and control catalogues
ISO/IEC 27001A.8.29Security testing in development and acceptanceManagement-system standards
ISO/IEC 29147 and 3011130111:handlingInvestigating, remediating and releasing the fix, and learning from itPractice and technique

The stories that tell it

On this site: The fix, mapped to the code · The code: where php2shell lives and what the fix does