We need to have some externally stable identifier for a vulnerability.
By stable I mean that should be there forever and immutable so it can be used reliably to reference a vulnerability.
A CVE may not exist so we have a problem with using CVE everywhere.
When there is no CVE:
- we could request a CVE id https://cveform.mitre.org/ and that's a manual process that not straightforward and we may not have yet all the data required to get a CVE id
- we could become our CNA which is yet another level of "ceremony"
- we could just assign our own ids and bypass 1. and 2. for the sake of speed, practicality and automation
I suggest that we use 3. and have our own prefix (TBD, such as VULCODE-xxxx) and we assign ids to a vulnerability this way:
- a. It has a CVE, then we reuse the
CVE-xxxx as its identifier
- b. It does not have a CVE, then we create the
VULCODE-xxxx as its identifier
- c. later if that
VULCODE-xxx vulnerability gets a CVE, we will replace the id with the CVE-xxx id and move the VULCODE-xxx id as a reference for that vulnerability.
From a usage standpoint, this means that we should be able to search a vulnerability not only based on its identifier (that may change over time) but also based on its references.
Alternatively to c. above we could have a dedicated field to store the previous VULCODE-xxx when this is replaced by an assigned CVE-xxxid.
The model could look like this
- Vulnerability
- identifier:
VULCODE-xxx or CVE-xxx
- vc_identifier: empty or
VULCODE-xxx if identifier is a CVE-xxx
Later we can have processes for 1. and/or 2. but that's completely independent
We need to have some externally stable identifier for a vulnerability.
By stable I mean that should be there forever and immutable so it can be used reliably to reference a vulnerability.
A CVE may not exist so we have a problem with using CVE everywhere.
When there is no CVE:
I suggest that we use 3. and have our own prefix (TBD, such as VULCODE-xxxx) and we assign ids to a vulnerability this way:
CVE-xxxxas its identifierVULCODE-xxxxas its identifierVULCODE-xxxvulnerability gets a CVE, we will replace the id with theCVE-xxxid and move theVULCODE-xxxid as a reference for that vulnerability.From a usage standpoint, this means that we should be able to search a vulnerability not only based on its identifier (that may change over time) but also based on its references.
Alternatively to c. above we could have a dedicated field to store the previous
VULCODE-xxxwhen this is replaced by an assignedCVE-xxxid.The model could look like this
VULCODE-xxxorCVE-xxxVULCODE-xxxif identifier is aCVE-xxxLater we can have processes for 1. and/or 2. but that's completely independent