Skip to content

Report Management Interactions Between CVD Participants

Each Participant in a case has their own instance of the RM state model. Participants can change their local state independent of the state of other Participants. Events within a CVD case may trigger a state transition in one Participant while no transition occurs in another. For example, in particpants interact from the accepted state we showed that even though the sender is the one taking the action, it is the recipient's state that changes. The table below lists role-based actions.

Finder/Reporter Vendor Coordinator Action RM Transition
Discover Vulnerability (hidden) Receive Report
Analyze Discovery (hidden) Validate Report
Decide whether to initiate CVD (hidden) Prioritize Report
Notify Vendor Participants Interact from Accepted
Notify Coordinator Participants Interact from Accepted
Receive Report Receive Report
Validate Report Validate Report
Prioritize Report Prioritize Report
Pause Work Prioritize Report
Resume Work Prioritize Report
Close Report Case Closure

A few examples of this model applied to common CVD and MPCVD case scenarios follow.

The Secret Lives of Finders

While the Finder's Received, Valid, and Invalid states are useful for modeling and simulation purposes, they are less useful to us as part of a potential CVD protocol. Why? Because for anyone else to know about the vulnerability (and as a prerequisite to CVD happening at all), the Finder must have already validated the report and prioritized it as worthy of further effort to have any reason to attempt to coordinate its disclosure. In other words, CVD only starts after the Finder has already reached the Accepted state for any given vulnerability to be reported. Correspondingly, this also represents their transition from Finder to Reporter. Nevertheless, for now, we retain these states for completeness. We revisit this topic in our formal derivation of a protocol state model for Reporters.

---
title: Hidden States of Finders
---
stateDiagram-v2
    direction LR
    state Finder {
        direction LR
        A: Accepted
        state Hidden {
            direction LR
            R: Received
            I: Invalid
            V: Valid
            D: Deferred
            [*] --> R
            R --> I
            R --> V
            V --> D
            I --> V
            V --> A
            D --> A
            D --> [*]
            I--> [*]
        }
        state Observable {
            direction LR
            D2: Deferred
            A --> D2
            D2 --> A
            A --> [*]
            D2 --> [*]
        }

    }

Finder-Vendor CVD

A simple Finder-Vendor CVD scenario is shown below. As explained above, many of the Finder's states would be hidden from view until they reach the Accepted (\(A_f\)) state. The receive action bridging \(A_f \xrightarrow{r} R_v\) corresponds to the participants interact from the accepted state scenario above.

---
title: Finder-Vendor CVD
---
stateDiagram-v2
    direction LR
    state Finder {
        direction LR
        R: R<sub>f</sub>
        I: I<sub>f</sub>
        V: V<sub>f</sub>
        A: A<sub>f</sub>
        D: D<sub>f</sub>
        [*] --> R
        R --> I
        R --> V
        I --> V
        V --> A
        V --> D
        A --> D
        D --> A
        D --> [*]
        A --> [*]
        I --> [*]
    }
    state Vendor {
        direction LR
        RV:R<sub>v</sub>
        IV:I<sub>v</sub>
        VV:V<sub>v</sub>
        AV:A<sub>v</sub>
        DV:D<sub>v</sub>
        [*] --> RV
        RV --> IV
        RV --> VV
        IV --> VV
        VV --> AV
        VV --> DV
        AV --> DV
        DV --> AV
        DV --> [*]
        AV --> [*]
        IV --> [*]
    }
    A --> RV: r

Finder-Coordinator-Vendor CVD

A slightly more complicated scenario in which a Finder engages a Coordinator after failing to engage a Vendor is shown in the next diagram. This scenario is very common in our experience at the CERT/CC, which should come as no surprise considering our role as a Coordinator means that we do not participate in cases following the previous example. Here we see three notification actions corresponding to participants interacting from the accepted state:

  • First, \(A_f \xrightarrow{r_0} R_v\) represents the Finder's initial attempt to reach the Vendor.

  • Next, \(A_f \xrightarrow{r_1} R_c\) is the Finder's subsequent attempt to engage with the Coordinator.

  • Finally, the Coordinator contacts the Vendor in \(A_c \xrightarrow{r_2} R_v\).

---
title: Finder-Coordinator-Vendor CVD
---
stateDiagram-v2
    direction LR
    state Finder {
        direction LR
        R: R<sub>f</sub>
        I: I<sub>f</sub>
        V: V<sub>f</sub>
        A: A<sub>f</sub>
        D: D<sub>f</sub>

        [*] --> R
        R --> I
        R --> V
        I --> V
        V --> A
        V --> D
        A --> D
        D --> A
        D --> [*]
        A --> [*]
        I --> [*]
    }
    state Coordinator {
        direction LR
        RC:R<sub>c</sub>
        IC:I<sub>c</sub>
        VC:V<sub>c</sub>
        AC:A<sub>c</sub>
        DC:D<sub>c</sub>
        [*] --> RC
        RC --> IC
        RC --> VC
        IC --> VC
        VC --> AC
        VC --> DC
        AC --> DC
        DC --> AC
        DC --> [*]
        AC --> [*]
        IC --> [*]
    }
    state Vendor {
        direction LR
        RV:R<sub>v</sub>
        IV:I<sub>v</sub>
        VV:V<sub>v</sub>
        AV:A<sub>v</sub>
        DV:D<sub>v</sub>
        [*] --> RV
        RV --> IV
        RV --> VV
        IV --> VV
        VV --> AV
        VV --> DV
        AV --> DV
        DV --> AV
        DV --> [*]
        AV --> [*]
        IV --> [*]
    }
    A --> RV: r0
    A --> RC: r1
    AC --> RV: r2

MPCVD with a Coordinator and Multiple Vendors

A small MPCVD scenario is shown below. As with the other examples, each notification shown is an instance of participants interacting from the accepted state. Contrary to the previous example, this scenario starts with the Finder contacting a Coordinator, perhaps because they recognize the increased complexity of coordinating multiple Vendors' responses.

  • First, \(A_f \xrightarrow{r_0} R_c\) represents the Finder's initial report to the Coordinator.

  • Next, \(A_c \xrightarrow{r_1} R_{v_1}\) shows the Coordinator contacting the first Vendor.

  • Finally, the Coordinator contacts a second Vendor in \(A_c \xrightarrow{r_2} R_{v_2}\).

---
title: MPCVD with a Coordinator and Multiple Vendors
---
stateDiagram-v2
    direction LR
    state Finder {
        direction LR
        R: R<sub>f</sub>
        I: I<sub>f</sub>
        V: V<sub>f</sub>
        A: A<sub>f</sub>
        D: D<sub>f</sub>
        [*] --> R
        R --> I
        R --> V
        I --> V
        V --> A
        V --> D
        A --> D
        D --> A
        D --> [*]
        A --> [*]
        I --> [*]
    }
    state Coordinator {
        direction LR
        RC:R<sub>c</sub>
        IC:I<sub>c</sub>
        VC:V<sub>c</sub>
        AC:A<sub>c</sub>
        DC:D<sub>c</sub>
        [*] --> RC
        RC --> IC
        RC --> VC
        IC --> VC
        VC --> AC
        VC --> DC
        AC --> DC
        DC --> AC
        DC --> [*]
        AC --> [*]
        IC --> [*]
    }
    state Vendor {
        direction LR
        RV:R<sub>v<sub>1</sub></sub>
        IV:I<sub>v<sub>1</sub></sub>
        VV:V<sub>v<sub>1</sub></sub>
        AV:A<sub>v<sub>1</sub></sub>
        DV:D<sub>v<sub>1</sub></sub>
        [*] --> RV
        RV --> IV
        RV --> VV
        IV --> VV
        VV --> AV
        VV --> DV
        AV --> DV
        DV --> AV
        DV --> [*]
        AV --> [*]
        IV --> [*]
    }
    state Vendor2 {
        direction LR
        RV2:R<sub>v<sub>2</sub></sub>
        IV2:I<sub>v<sub>2</sub></sub>
        VV2:V<sub>v<sub>2</sub></sub>
        AV2:A<sub>v<sub>2</sub></sub>
        DV2:D<sub>v<sub>2</sub></sub>
        [*] --> RV2
        RV2 --> IV2
        RV2 --> VV2
        IV2 --> VV2
        VV2 --> AV2
        VV2 --> DV2
        AV2 --> DV2
        DV2 --> AV2
        DV2 --> [*]
        AV2 --> [*]
        IV2 --> [*]
    }
    A --> RC: r0
    AC --> RV: r1
    AC --> RV2: r2

A Menagerie of MPCVD Scenarios

Other MPCVD RM interaction configurations are possible, of course. We demonstrate a few such scenarios in the following figures. This time each node represents a Participant's entire RM model. We have observed all of the following interactions at the CERT/CC. We intend the RM model to be sufficiently composable to accommodate all such permutations.

Finder coordinates MPCVD with Multiple Vendors

A Finder notifies multiple Vendors without engaging a Coordinator.

---
title: Finder coordinates MPCVD with Multiple Vendors
---
stateDiagram-v2
    direction LR
    Finder --> Vendor1: r0
    Finder --> Vendor2: r1
    Finder --> Vendor3: r2

Vendor coordinates MPCVD

A Finder notifies a Vendor, who, in turn, notifies other Vendors.

---
title: Vendor coordinates MPCVD
---
stateDiagram-v2
    direction LR
    Finder --> Vendor1: r0
    Vendor1 --> Vendor2: r1
    Vendor1 --> Vendor3: r2
    Vendor1 --> Vendor4: r3

Vendor Engages a Coordinator for MPCVD

A Finder notifies a Vendor, who, in turn, engages a Coordinator to reach other Vendors.

---
title: Vendor Engages a Coordinator for MPCVD
---
stateDiagram-v2
    direction LR
    Finder --> Vendor1: r0
    Vendor1 --> Coordinator: r1
    Coordinator --> Vendor2: r2
    Coordinator --> Vendor3: r3
    Coordinator --> Vendor4: r4

Supply-chain oriented MPCVD

Supply-chain oriented MPCVD often has two or more tiers of Vendors being notified by their upstream component suppliers, with or without one or more Coordinators' involvement.

---
title: Supply-chain oriented MPCVD
---
stateDiagram-v2
    direction LR
    Finder --> Vendor1: r0
    Vendor1 --> Vendor2: r1
    Vendor1 --> Vendor3: r2
    Vendor1 --> Coordinator: r3
    Vendor2 --> Vendor4: r4
    Vendor4 --> Vendor5: r5
    Vendor3 --> Vendor6: r6
    Coordinator --> Vendor7: r7
    Vendor7 --> Vendor8: r8
    Vendor7 --> Vendor9: r9