What counts as an RBP

A CVE ID in the Reserved state that is referenced in one or more public sources while no CVE Record has been published. That is the CVE Program's own definition, quoted from RBP Policy v2.0.0 and still live in the cve.org glossary.

RBP is a state, not a verdict. The policy defines the state on its own terms, then separately conditions its notification steps on an RBP “in violation of Program Rules 4.5.1.4 or 4.5.1.6 exceeding the 72 hours”, and assigns that determination to Roots, TL-Roots and the Secretariat. The headline count on this site is the state, which makes it the Program's own definition, measured from outside. Violation language is confined to the rule column, always marked candidate, and never aggregated into the headline.

State comes from the CVE Services reservation endpoint, which returns it directly:

GET https://cveawg.mitre.org/api/cve-id/CVE-2026-2574
{"cve_id":"CVE-2026-2574","cve_year":"2026",
 "state":"RESERVED","owning_cna":"[REDACTED]"}

This matters because the more commonly used /api/cve/ endpoint returns 404 for a reserved ID, making it indistinguishable from an ID that was never allocated. Using the reservation endpoint instead means a row here is a confirmed reservation and not an inference about absence. IDs that were never allocated return CVE_ID_NOT_FOUND and are excluded. That screens IDs that do not exist. It does not screen a mistyped ID that happens to land on a real reserved neighbour, which passes every check this site makes, so some small number of rows are likely transcription errors in the citing advisory rather than genuine RBPs.

The bulk CVE List contains zero reserved records, and the cvelistV5 git tree carries none either, so no tool sourcing only from those can see any of this.

Is the pipeline healthy?

How often this site has actually published, which feeds the last run read, what each returned and which standing caps fire on every run are all on the status page. They are kept apart from this page deliberately: those figures describe one run and change four times a day, while everything here is a claim about the method and is true of every run.

The clock

A tracker entry is a public source, and is not a Public Disclosure. RBP Policy v2.0.0 defines membership as an ID "referenced in one or more public sources", and a distribution tracker entry is squarely that, so those rows are counted. But the 72-hour rules in 4.5.1.4 and 4.5.1.6 run from Publicly Disclosing, which the rules exemplify as an advisory or a Fix. A tracker record is created when the tracker ingests the ID, not when anybody disclosed anything.

So the published clock_origin says which kind of source dated each row, and days_public is unchanged either way: "referenced for N days" is true of a tracker entry, and only "N days late" is not.

Rows are reportable once publicly referenced for at least 7 days, which is 2.3x the 72-hour window. That multiple is derived from the buffer in force, not asserted: the buffer is configurable and the sentence was previously true only at seven days or more.

The buffer does not separate an overdue record from an embargo. An earlier version of this page claimed it absorbed coordinated-disclosure windows. It does not, and no buffer length could: a multi-party embargo and an overdue record have identical signatures from outside, and the live median here is around six weeks. Some listed rows are legitimately held. This site cannot tell which, and says so rather than implying the buffer settled it.

What the buffer does is make latency an implausible explanation, which is a weaker and more defensible claim.

Days public is a floor, not a deadline measure. It counts from the earliest public advisory this site can see. The rule's clock starts when the CNA became aware of the disclosure, and that is not observable from outside. So the column reads days public and never days overdue.

3 reserved IDs are excluded entirely because their feeds publish no usable date. They cannot be aged at any threshold, which is a permanent limit on coverage rather than a temporary gap.

Which rule, and why it is never a MUST outright

4.5.1.6 SHOULD is the default: publish within 72 hours of becoming aware that a third party disclosed. This is the ordinary case, where a distribution or ecosystem advisory appears first.

4.5.1.4 MUST applies where the CNA itself disclosed. This site claims it only when the owning CNA's own advisory feed carried the advisory:

  • redhat: redhat
  • microsoft: msrc
  • mozilla: mozilla

Aggregators are deliberately excluded even where they carry a CNA's data. OSV re-publishes GHSA, so an OSV row is not evidence that GitHub disclosed anything. Counting it would upgrade a SHOULD to a MUST on the strength of a mirror.

Because ownership is always inferred for a reserved ID, a 4.5.1.4 reading is always a candidate and never an established breach. This site cannot observe who disclosed first; it observes only that a source referenced the ID.

Under v1, no row takes 4.5.1.4 at all. That reading needs an owner, and this version attributes nothing, so the ordering it depends on is recorded as unmeasurable on every row: all 2,182 published rows are 4.5.1.6 SHOULD. The mechanism above is described because it is what this site would do if it named anyone, not because it is doing it. A page that describes a capability without saying it is switched off is a page claiming a distinction it does not draw.

How the owner is reconstructed

CVE IDs are issued to CNAs in runs, so an ID whose published neighbours all share one assigner is very likely assigned to that CNA too. A name is published only when the 3 published CVE IDs on each side all agree. Anything less abstains, and the row says unattributed.

n/a
Production precision withheld below n=20 (currently 1)
n/a
Leave-one-out, 0 decisions
0.0%
Rows Named This Run
127
Awaiting a Verdict

Coverage and precision are different things. The leave-one-out figure is measured over published IDs, which are spread evenly through the ID space. A live RBP set is not: these cluster in regions where no single CNA owns the neighbourhood, so the share of rows that can be named is lower than the validation coverage suggests. Both are shown, and they are never presented as the same number.

A second signal, a product-to-CNA map built from the corpus, is used only to corroborate. Tested on its own it reached 85% precision, below this project's floor, so it can promote a named row to Corroborated but never create a name.

No misses recorded yet. They will be listed here when they occur.

Which feeds are read, and how far they reach

alas, ubuntu, ubuntu-osv, debian, ghsa, ghsa-repos, redhat, alpine, osv, mozilla, arch, csaf, msrc, samsung, jvn, zdi, certcc

What each of these returned on the most recent run, and whether any of them failed, stopped early or shrank, is on the status page. Counts here are a floor: only configured feeds are read.

How much of the CNA landscape this site can see. Three different answers, because "covered" is doing three different jobs. They are listed together because quoting the largest one alone would overstate what the feeds actually reach.

The denominator is the CVE Program's own list of 539 certified CNAs, pinned in this repository and refreshed deliberately. It used to be the 459 distinct assigners seen publishing in a rolling 4-year window, which moves as CNAs publish, shrinks as the window rolls and steps overnight on 1 January: a percentage trended over a base like that is weather, not progress. Measuring against the roster lowers every figure below, because a CNA that has published nothing is still one whose advisories this site cannot read. A further 25 assigner name(s) in the corpus match no current roster entry, usually a rename (3DS, @huntrdev, Baicells), so coverage is understated by up to that many.

How far the feeds reach into the CNA landscape: three different readings of coverage, with what each one means and which one the launch gate uses.
FigureCNAsWhat it means
Sighted 313 / 539 (58.1%) At least one of its published CVEs was seen. Weakest reading: a single incidental reference is enough.
Effective 268 / 539 (49.7%) Seen at least 3 times, the same floor required before a CNA is named on any row. This is the figure the launch gate uses.
Own channel 3 / 539 Its own advisory feed is ingested. This bounds what can ever be read as 4.5.1.4, and nothing else.
Top 50 by volume 49 / 50 Of the 50 CNAs publishing the most CVEs, how many these feeds see at least 3 times. This is the figure the launch gate uses. A share of the whole roster says nothing about whether the CNAs that actually publish are reachable; this does. Counted on one sighting instead of 3 it would read 49, which is why the weaker number is shown here and gates nothing.

Launch gate: 98.0% of 80.0% required, measured on top-50-by-volume at the 3-sighting floor. Cleared with 9 CNA(s) to spare.

The gate was a share of the whole 539-CNA roster until 2026-08-23, and it was unreachable: only 371 roster CNAs have published three CVEs in the window at all, so that figure cannot exceed 68.8% however many feeds are added, and the threshold had never been re-derived after the metric changed underneath it. The roster share is still measured and still published above (49.7%). It no longer gates anything.

Feeds surfaced 51.57% of published CVEs in the window. An RBP held by a CNA outside the sighted set is invisible here, which is the single largest reason this site understates the problem.

How this site identifies itself when it fetches. Every request carries rbp-cves/1.0 (+https://rbptracker.org), which names the client and gives any publisher a route to complain or to block it. No request sent by this pipeline claims to be a web browser, and none claims to be another tool. If a publisher ever refuses a client that identifies itself honestly, the advisories it holds go unread and are counted as unread.

Two publishers needed a different knock, and neither needed a disguise. Cisco's edge refuses a client whose identifier carries no contact route, and refuses a browser string just as firmly; it accepts the identifier above. CISA's edge serves its metadata to an ordinary desktop and refuses the cloud machines this site is built on, so its advisories are read instead from the feeds CISA's own metadata points at, published in CISA's own GitHub organisation. When that second route is used, the status page says so on the CSAF row for that run, because a route that quietly changed is a route nobody can check.

Counts are a lower bound. Only configured feeds are read, so an RBP in an ecosystem not listed above is invisible here. That is the main reason this site understates the problem.

How accurate the owner reconstruction is, and on whom

Three different accuracy figures exist and they rest on very different samples. A single number would hide that, and the composition is the part that makes any of them readable. So all three are here with theirs.

Three accuracy figures for the owner reconstruction, each with its sample size, its precision, and the composition of the sample it rests on.
Figuren PrecisionComposition
Leave-one-out, this build 0 n/a Every published 2026 ID, hidden and predicted from its neighbours.
Live grading, cumulative 1 not yet measurable Real predictions this site published, graded when the record finally published. Withheld until n=20: a ratio from 1 case(s) is a weaker claim than the 0-decision figure above, not a stronger one.

The out-of-sample probe is the lopsided one. The 100% figure this project quotes from its original validation was measured on 224 IDs that were reserved and later published, and 213 of those 224 were a single CNA. Eleven cases informed every other CNA in the Program, and both rows this project is known to have got wrong were outside the 213. That figure is kept in the plan for provenance and is not the number on this page. The leave-one-out figure above is measured over 0 decisions across many CNAs, which is why it is the one shown.

Contiguous-run length is recorded on every prediction from now on, so a future build can report accuracy by block width. Without it there is no way to separate "the method is accurate" from "the method is accurate on wide blocks and has never been tested on narrow ones", and it cannot be backfilled: it is a property of the corpus at prediction time and the corpus moves.

Why one CNA holds most of the named rows

Because of block width and feed coverage, not behaviour. A CNA is nameable here when its published CVE IDs form runs wide enough for the 3-either-side test to resolve and this site reads its advisories. A CNA that assigns from large contiguous blocks and publishes through a feed we ingest will dominate this list. A CNA that assigns sparsely, or publishes only through a channel we do not read, is invisible here no matter how long it sits on a record.

A row may be an ID delegated TO a CNA rather than withheld BY it. RBP Policy v2.0.0, quoting CNA Rule 4.5.1.4:

“If the CNA does not publish within 72 hours, then the CNA’s Root MAY direct the appropriate CNA-LR to publish a CVE Record for the assigned CVE ID. Ownership of the CVE Record MAY be transferred.”

So a Root, TL-Root or CNA-LR can end up holding IDs precisely because it is the mechanism the policy defines as the remedy. Nothing observable from outside distinguishes an ID a CNA-LR accepted for a third-party requester from one a vendor reserved for its own advisory: the reservation endpoint redacts the owner and publishes no role, no requester and no delegation record. This site does not infer one, because the data does not support it.

So is the largest holder the worst offender? No, and this site cannot support that reading. It is the CNA whose ID blocks are widest and whose advisories this site reads best, which makes it the most visible holder rather than the largest one. Any CNA outside the 268 CNAs these feeds reach could hold more and never appear here at all.