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?

GRC · Risks · Stakeholders · Frameworks · The graph · Explore · Gaps · From the network

What the risk graph is missing

The graph shows what is joined; this page shows what is not. Each gap below is a rule, written as data in data/grc-gaps.json, computed over the 713 nodes and 1418 edges at every release: a control no test reaches, code nobody owns, a risk no story tells, a join an agent inferred that nobody has checked. Each names who could close it; each item opens in the explorer.

95controls joined to no code or test that implements them (of 95)16code with no owner one step away (of 16)9code no test reaches (of 16)14risks no story tells (of 34)0risks with no treatment (of 34)0risks with no owner (of 34)0vulnerabilities no test reaches (of 2)815edges inferred by an agent, not yet checked (of 1418)

Controls joined to no code or test that implements them: 95 of 95

A security requirement with nothing that implements or exercises it. Today every control is joined only through the risks it governs, so none is shown to be implemented or tested. Looks at every control for a path to test or code within 3 steps through tests, realised_in, located_in, implemented_by. Who could close it: GRC desk.

The 95, each opening in the explorer

Code with no owner one step away: 16 of 16

A file that matters to a risk with nobody named against it. Looks at every code for a path to stakeholder or member or role within 1 step. Who could close it: GRC desk.

The 16, each opening in the explorer

Code no test reaches: 9 of 16

Changed or named code with no test joined through its remediation. Looks at every code for a path to test within 2 steps through realised_in, tests. Who could close it: dev@php.newsroom.

The 9, each opening in the explorer

Risks no story tells: 14 of 34

A risk on the register that no story on the site explains to a reader. Looks at every risk for a path to story within 1 step. Who could close it: Journalist.

The 14, each opening in the explorer

Risks with no treatment: 0 of 34

A risk with nothing recorded that reduces it. Looks at every risk for a path to treatment within 1 step. Who could close it: GRC desk.

None: every one reaches it.

Risks with no owner: 0 of 34

A risk nobody holds. Looks at every risk for a path to stakeholder or role within 1 step through owned_by. Who could close it: GRC desk.

None: every one reaches it.

Vulnerabilities no test reaches: 0 of 2

A flaw whose fix nobody can show is tested. Looks at every vulnerability for a path to test within 2 steps. Who could close it: dev@php.newsroom.

None: every one reaches it.

Edges inferred by an agent, not yet checked: 815 of 1418

A join an agent made that nobody has checked against a source, the code or a person. Who could close it: GRC desk.

VerbEdgesExample
tests232Zend/tests/oom_SplFixedArray___unserialize.phpt tests Allocations that may fail instead of abort
governed_by139Remote code execution on internet-facing PHP serve governed_by ISO/IEC 27001 A.8.8: Management of technical vulne
part_of76The PHP project part_of Everyone with PHP in the path
shown_on58Remote code execution on internet-facing PHP serve shown_on The two flaws
arises_from51The allocator's longjmp-based bailout on out-of-me arises_from CVE-2026-109618: RCE via OOM corruption
tracked_by45The editor tracked_by Dinis Cruz
protected_by41Remote code execution on internet-facing PHP serve protected_by Update to 8.5.12, 8.4.27, 8.3.36 or 8.2.35
owned_by40Remote code execution on internet-facing PHP serve owned_by Organisations running PHP
told_in26Remote code execution on internet-facing PHP serve told_in Where php2shell stands: many sites dark, millions
treated_by24Remote code execution on internet-facing PHP serve treated_by The PHP project
borne_by22Remote code execution on internet-facing PHP serve borne_by People who use PHP services
informed_by15Remote code execution on internet-facing PHP serve informed_by Agencies and CERTs
concerns12The coordinated disclosure broke before the fix wa concerns CVE-2026-109618: RCE via OOM corruption
raised_by11The coordinated disclosure broke before the fix wa raised_by The finders
briefed_by9Board and executives briefed_by Board member or executive
located_in8Agents that read the open web and can publish located_in admin/build/release.sh
regulated_by6Patched builds published before the embargo lifted regulated_by The PHP security team

A rule is a kind of node, what it should reach, within how many steps and through which verbs. Add one to the data and it appears here at the next release. A gap is not a fault: some are there by design (a control in a framework the fix commit was never meant to test); the page says where to look, not what to conclude.