Vultron Protocol
This page is normative
This page is considered a core part of the Vultron Protocol. This is a normative section of the documentation.
The whole specification on one page
The specification is also published as a single page that holds every section and annex in order, for printing or for searching the whole text at once.
This page holds section 14.1 of the Vultron Protocol Specification, part of its Requirements Catalog. Each row is one requirement, and the rest of the documentation links a requirement to its row here.
14.1 Vultron Protocol
The requirements of the core Vultron protocol: the Report Management (RM), Embargo Management (EM) and Case State (CS) models, the messages that move them, and the rules that couple them.
Vultron Protocol
Requirements extracted from the Vultron Protocol documentation, covering participant state tracking, Report Management (RM), Embargo Management (EM), CVD Case State (CS) messaging, model interactions, and implementation guidance. This is the normative source for protocol behavior requirements that implementations must satisfy.
Participant State Tracking
Report Management (RM): Receiving Reports
RM Messaging
Embargo Management (EM) Process
| ID | Priority | Requirement | Related |
|---|---|---|---|
VP-04-001 |
MUST | Every embargo that a Participant accepts MUST specify an end time (endTime).An embargo with no end time never frees participants to publish, so it can keep a vul secret indefinitely and leave users exposed. A required end time also gives every participant the same date to plan releases around. |
Refines: VP-05-001 |
VP-04-002 |
MUST | A CVD case SHALL NOT have more than one active embargo at a time Participants must know which terms bind them. Two active embargoes on one case would give conflicting end times, and nobody could say when publication is allowed. |
|
VP-04-003 |
MAY | An embargo MAY be proposed An embargo is how participants agree to keep a vul private while fixes are prepared. Proposing one is how that agreement starts; without proposals participants could only disclose with no coordination window. |
|
VP-04-004 |
MAY | Once proposed, an embargo MAY be accepted or rejected An embargo binds only those who agree to it. Letting a proposal be accepted or rejected makes that agreement explicit and lets a participant refuse terms it cannot meet. |
|
VP-04-005 |
MAY | Once an embargo is accepted, a Participant MAY propose a revision of it. Circumstances change during a case: fixes slip, vendors join, exploitation appears. Revisions let participants change the terms without first ending the embargo and leaving a gap with no terms in force. |
|
VP-04-006 |
MAY | A proposed revision of an accepted embargo MAY be accepted or rejected. A revision is a proposal like any other, so the case can take the new terms or keep the terms already in force. |
Embargo Principles
Embargo Negotiation
| ID | Priority | Requirement | Related |
|---|---|---|---|
VP-06-001 |
MUST NOT | CVD Participants MUST NOT propose or accept a new embargo negotiation when information about the vulnerability is already known to the public (\(q^{cs} \in \cdots P \cdots\)), an exploit is publicly available (\(q^{cs} \in \cdots X \cdot\)), or the vulnerability is being actively exploited (\(q^{cs} \in \cdots A\)) Once the vul is public, an exploit is public, or attacks are under way, secrecy protects no one: attackers already have what they need and defenders need the information. An embargo at that point only delays defenders. |
|
VP-06-002 |
SHOULD NOT | CVD Participants SHOULD NOT propose or accept a new embargo when the fix for a vulnerability has already been deployed (\(q^{cs} \in VFDpxa\)) Once the fix is deployed there is nothing left to prepare in private. A new embargo would only delay telling users about a vul they are already protected against. |
|
VP-06-003 |
SHOULD | A Receiver that cannot accept a Reporter's proposed embargo as proposed SHOULD propose terms it can accept (VP-06-011) rather than reject the proposal outright. Reporters hold the vul and can disclose it on their own. A counter-proposal keeps them in the coordinated process and keeps the negotiation open; an outright refusal risks the reporter publishing without coordination. The Receiver still need not accept terms it cannot keep (VP-06-010), and VP-07-004 already answers a proposal longer than its default with a counter-proposal of that default. |
Refines: VP-06-011 |
VP-06-004 |
SHOULD | Participants SHOULD explicitly accept or reject embargo proposals within the period defined in their VDP or within 14 calendar days of receipt, whichever is shorter. An open proposal leaves everyone unsure whether information may be shared. A bounded reply time, never more than 14 days, makes the outcome known soon enough for participants to plan. |
|
VP-06-004b |
SHOULD NOT | Embargo agreement or rejection SHOULD NOT be tacit. Silence can be read as either yes or no, so a tacit answer leaves participants disagreeing about whether an embargo binds them. An explicit answer gives them all the same record. |
Refines: VP-06-004 |
VP-06-005 |
SHOULD | Participants SHOULD make reasonable attempts to retry embargo negotiations when prior proposals have been rejected or otherwise failed to achieve acceptance A case without an embargo leaves users exposed and fixes unprepared at disclosure. Retrying after a failed proposal gives coordination another chance before participants fall back to no embargo. |
|
VP-06-006 |
SHOULD | Participants SHOULD remain flexible in adjusting embargo terms as the case evolves Fix timelines, affected vendors and threat conditions change during a case. Terms that cannot adjust either expire before fixes are ready or keep holding after the need for them has passed. |
|
VP-06-007 |
MUST | Submitting a report when an embargo proposal is pending (\(q^{em} \in P\)) SHALL be construed as the Sender's acceptance of the proposed terms Sending the report while a proposal is pending shows the sender is willing to share under those terms. Treating the submission as acceptance avoids a report being shared with no embargo in force. |
|
VP-06-008 |
MAY | When \(q^{cs} \in VFdpxa\), CVD Participants MAY propose or accept a new embargo that prepares for timely publication or deployment (VP-06-008b). This is the one exception to VP-14-007. With a fix ready but not deployed, a short window can still help users by letting participants line up publication and deployment. Fix Ready otherwise ends embargo negotiation (VP-14-007), so this one purpose is named as the exception, allowed here though not required. |
Supersedes: VP-14-007 |
VP-06-008b |
SHOULD | Any embargo accepted when \(q^{cs} \in VFdpxa\) SHOULD be brief and used only to allow Participants to prepare for timely publication or deployment. At this point only release preparation remains. A long embargo would delay the deployment of a fix that already exists. |
Refines: VP-06-008 |
VP-06-009 |
MAY | CVD Participants MAY propose or accept an embargo in all other case states (\(q^{cs} \in \cdots pxa\)) Before the fix is ready, and while nothing is public or exploited, an embargo is what gives vendors time to prepare fixes in private. This is the case the EM process exists for. |
|
VP-06-010 |
MAY | Participants MAY accept or reject any proposed embargo as they see fit An embargo binds only those who agree. Each participant knows its own ability to keep the terms and must be free to accept or refuse. |
|
VP-06-011 |
MAY | Receivers MAY propose embargo terms they find more favorable The receiver may need more or less time than the reporter suggested. A counter-proposal lets it say so while keeping the negotiation going, rather than rejecting outright. |
|
VP-06-012 |
MAY | Participants MAY withdraw their own unaccepted Proposed embargo A proposer may learn that its proposal does not fit the case after all. Withdrawing it before acceptance stops others from accepting terms the proposer has stopped supporting. |
|
VP-06-013 |
MAY | Participants MAY interpret another Participant's failure to respond to an embargo proposal in a timely manner as a rejection of that proposal A proposer cannot wait forever for an answer. Reading silence as rejection lets it move on (VP-06-014) instead of being stuck undecided while the vul stays unaddressed. |
|
VP-06-014 |
MAY | In the absence of an explicit accept or reject response from a Receiver in a timely manner, the Sender MAY proceed consistent with an EM state of None (\(q^{em} \in N\)) Without an answer, no embargo binds the receiver, so the sender may act as if none exists. That stops an unresponsive party from blocking the sender indefinitely. |
|
VP-06-015 |
MAY | In a case where the EM state is None and for which an embargo has been proposed and either explicitly or tacitly rejected, Participants MAY take any action they choose with the report, including immediate publication When negotiation has failed, there is no agreement to keep the information private. Participants then need to be free to act in users' interest, which may mean publishing. |
|
VP-06-016 |
MAY | Participants MAY withhold a report from a Recipient until an initial embargo has been accepted A recipient given the report before agreeing to an embargo is free to disclose it. Waiting for acceptance protects the information. |
|
VP-06-017 |
MAY | Participants MAY use short embargoes to cover their report validation process and subsequently revise the embargo terms pending the outcome of their validation or prioritization processes A recipient often cannot judge how much time it needs until it has validated the report. A short initial embargo protects the report meanwhile and can be revised once the needs are known. |
Embargo Default Policies
| ID | Priority | Requirement | Related |
|---|---|---|---|
VP-07-001 |
MUST | If neither Sender nor Receiver proposes an embargo and no actor default applies, the protocol default embargo of EP-04-005 SHALL apply. A case with no embargo leaves the vul unprotected, and reaching that state only because nobody proposed terms is the least deliberate way to get there. A bounded protocol default gives every eligible case protection. |
Refines: EP-04-005 |
VP-07-014 |
MUST | A case SHALL have no embargo only where it is not embargo-eligible, that is where any of P/X/A is set (EP-04-008). A case where the vul is already public, exploited or attacked gains nothing from secrecy, so only there does no embargo exist. Every other case has an embargo, if only the protocol default (VP-07-001). |
Derives from: VP-07-001 Refines: EP-04-008 |
VP-07-002 |
MUST | A Receiver's default embargo specified in its vulnerability disclosure policy SHALL be treated as an initial embargo proposal A published default tells reporters what to expect. Treating it as a proposal makes it a real negotiating position without either side having to send a first message. |
|
VP-07-003 |
MUST | If the Receiver has declared a default embargo in its vulnerability disclosure policy and the Sender proposes nothing to the contrary, the Receiver's default embargo SHALL be considered as an accepted proposal A sender that knows the receiver's published default and offers nothing else has agreed to it in effect. Treating it as accepted puts an embargo in force at once, rather than leaving the case unprotected while waiting for a formal reply. |
|
VP-07-004 |
MUST | If the Sender proposes an embargo longer than the Receiver's default, the Receiver's default SHALL be taken as accepted and the Sender's proposal taken as a proposed revision The receiver's shorter default is acceptable to both sides: the receiver published it and the sender asked for at least that much time. Accepting it puts an embargo in force at once, and the longer request stays open as a revision. |
|
VP-07-005 |
MUST | If the Sender proposes an embargo shorter than the Receiver's default, the Sender's proposal SHALL be taken as accepted and the Receiver's default taken as a proposed revision The sender's shorter proposal is acceptable to both sides: the sender asked for it and the receiver's default allows at least that much time. Accepting it puts an embargo in force at once, and the receiver's longer default stays open as a revision. |
|
VP-07-006 |
SHOULD | Report Recipients SHOULD post a default embargo as part of their Vulnerability Disclosure Policy to set expectations with potential Reporters Reporters decide how and whether to report based on what they expect. A published default tells them how long they will be asked to wait, and gives VP-07-002 a default to apply. |
|
VP-07-007 |
SHOULD | If the Sender proposes an embargo and the Receiver has no default embargo specified by policy, the Receiver SHOULD accept the Sender's proposal With no default of its own, the receiver has no stated reason to refuse. Accepting the sender's proposal puts an embargo in force at once and keeps the reporter in the coordinated process. |
|
VP-07-008 |
SHOULD | When two or more embargo proposals are open and no embargo has yet been accepted (\(q^{em} \in P\)), Participants SHOULD accept the shortest one and propose the remainder as revisions The shortest open proposal is acceptable to every proposer, since each asked for at least that much time. Accepting it puts an embargo in force at once, and treating the rest as revisions keeps the longer requests under discussion. |
|
VP-07-009 |
SHOULD | When two or more embargo revisions are open and an embargo is active (\(q^{em} \in R\)), Participants SHOULD accept or reject them individually in earliest-to-latest expiration order Open revisions with different end times interact: accepting a later one first can make an earlier one meaningless. Deciding them in expiration order lets each be judged against the terms actually in force. |
|
VP-07-010 |
MAY | Participants MAY include a default embargo as part of a published Vulnerability Disclosure Policy A published default sets reporters' expectations and lets VP-07-002 apply. Keeping it optional leaves the protocol usable by participants who negotiate case by case. |
|
VP-07-011 |
MAY | When the Receiver has no default, the Receiver MAY propose a revision after accepting the Sender's proposal Accepting the sender's proposal secures protection at once, but the receiver may need different terms once it knows more. A later revision lets it ask without leaving the case unprotected. |
|
VP-07-012 |
MAY | When the Sender proposes longer than the Receiver's default, the Receiver MAY accept or reject the proposed extension The sender's longer request is a proposed revision, not an obligation (VP-07-004). The receiver judges whether the extra time is justified. |
|
VP-07-013 |
MAY | When the Sender proposes shorter than the Receiver's default, the Sender MAY accept or reject the Receiver's proposed revision The receiver's longer default is a proposed revision (VP-07-005), and the sender is not bound by it. The sender judges whether the extra time is acceptable. |
Multi-Party Coordination
Embargo Early Termination
Embargo Case Splits and Merges
EM Messaging
CVD Case State (CS) Messaging
| ID | Priority | Requirement | Related |
|---|---|---|---|
VP-12-001 |
SHOULD | Vendor Awareness (\(CV\)) messages SHOULD be sent only by Participants with direct knowledge of the notification (i.e., either the Participant who sent the report to the Vendor or the Vendor upon receipt of the report) Only those who took part in the notification know for certain that the vendor was told. Restricting \(CV\) to them stops second-hand reports from marking a vendor aware when it was not. |
|
VP-12-002 |
SHOULD | Once attacks are observed (\(q^{cs} \in \cdots A\)), fix development SHOULD accelerate. Attacks mean users are being harmed while no fix exists. Speeding fix development shortens that harm. |
|
VP-12-002c |
SHOULD | Once attacks are observed (\(q^{cs} \in \cdots A\)), publication and deployment SHOULD follow as soon as is practical. While attacks continue, every day without published advice or a deployed fix leaves users harmed. Publishing and deploying as soon as practical shortens that harm. |
Refines: VP-12-002 |
RM-EM Interactions
RM-EM-CS Interactions
Implementation Guidance
Embargo Representation Privacy
CASE_MANAGER Write Authority
| ID | Priority | Requirement | Related |
|---|---|---|---|
VP-17-001 |
MUST | Every change to the canonical case state MUST go through the CASE_MANAGER, so no participant changes that state directly. This single-writer axiom prevents concurrent-write races and ensures that all shared state changes flow through the actor's consistency checks and persistence layer. The CS participant-specific axes (RM, VFD) are owned by each participant's CaseParticipant record and are intentionally excluded from this restriction. |
Refines: VP-02-001 |
VP-17-002 |
MUST NOT | A participant MUST NOT update its local case replica by direct mutation from an inbound protocol message. Direct mutation from inbound messages (e.g., Add(Note)[target=VulnerabilityCase]) would bypass the ledger ordering guarantees and create divergence from the canonical case state. This path is distinct from VP-17-001 and is not a bypass of the CASE_MANAGER write constraint. |
Refines: VP-17-001 Constrains: SM-10-002 |
VP-17-003 |
MUST | A participant MUST update its local case replica only by replaying ledger entries from Announce(CaseLedgerEntry) fan-out.Ledger replay is the intended propagation mechanism for keeping participant replicas consistent with canonical case state, in the ledger's order. |
Satisfies: VP-17-002 |
Routing Topology
| ID | Priority | Requirement | Related |
|---|---|---|---|
VP-18-001 |
MUST | Outbound messages from a participant MUST follow the routing path: participant → CASE_MANAGER → CaseLedgerEntry → broadcast → participants.The ledger record provides the audit trail and ordering guarantees for all case activity. Direct peer-to-peer delivery bypasses the ledger and the broadcast idempotency controls. |
Refines: PCR-08-001 — participant-case-relationships.yaml — PCR-08 covers ledger-based broadcast |
VP-18-002 |
MUST NOT | A participant MUST NOT deliver messages directly to another participant's inbox. Direct peer-to-peer delivery bypasses the case ledger, removing the audit trail and broadcast idempotency guarantees. |
Refines: VP-18-001 |
VP-18-003 |
MUST | Delivery of outbound participant messages MUST be mediated by the CASE_MANAGER and recorded in the case ledger before being fanned out to participants. Mediation through the CASE_MANAGER ensures all case activity is ledger-ordered and consistently broadcast to all participants. |
Refines: VP-18-001 |