blob: 590ea0487bd3ed67e80cfcf4e352f879135b7719 [file] [log] [blame]
The "schema" of the files in this directory.
We are treating this directory as a "database", as hey, what else is a
filesystem but one?
This directory contains 3 "root" directories:
- published
- rejected
- reserved
These 3 directories contain the CVE ids allocated to us that are in one of the
three states.
Reserved
--------
Ids become "reserved" when they are allocated from CVE for our use. At this
point in time they are nothing more but an empty placeholder.
When allocated, new empty files are created in the reserved directory in the
following format:
reserved/YEAR/CVE-YEAR-ID
One example would be the file
reserved/2023/CVE-2023-00042
which would mean that the CVE id "CVE-2023-00042" is reserved by our project
and is free to be used for any issue that comes up that would need an id
assigned for the year 2023.
Note, the file may contain text information based on stuff the kernel cve team
deems is needed. More documentation will be written in the future as we figure
out what is needed.
Published
---------
Ids become "published" when they are submitted to CVE for publication. To do
this, normally a git commit id is used to generate the information in the CVE
entry.
When published, five files for each CVE id are created in the following naming
format:
published/YEAR/CVE-YEAR-ID
published/YEAR/CVE-YEAR-ID.sha1
published/YEAR/CVE-YEAR-ID.json
published/YEAR/CVE-YEAR-ID.mbox
published/YEAR/CVE-YEAR-ID.dyad
The CVE-YEAR-ID file will be the original file that was in the reserved
directory, in case text information in it was present. It can also be used to
hold notes and information about the specific CVE id that don't fit into the
other files.
The .sha1 file shall contain the git sha1 of the commit that fixes this CVE id.
The .json file shall contain the json formatted CVE entry that can be submitted
to CVE when published.
The .mbox file shall contain the mail message of the CVE entry that can be
submitted to the public mailing list for publication in human-readable format.
The .dyad file shall contain the output of the 'dyad' tool that shows the pairs
of vulnerable:fixed versions and git ids for the .sha1 of the CVE entry. This
file is easy to parse by tools and is used by some of the existing scripts.
If a:
published/YEAR/CVE-YEAR-ID.vulnerable
file is present, the cve_update script will use the git sha in that file as the
"commit where the vulnerability showed up" for doing the logic of creating the
.json and .mbox files. This allows us to set the commit id for this for
commits that do NOT have a "Fixes:" tag, or if the "Fixes:" tag is incorrect.
Note, this file can contain multiple vulnerable git ids, separated by a space.
If a:
published/YEAR/CVE-YEAR-ID.diff
file is present, the cve_update script will use that as a diff against the
kernel changelog text to replace the cve text wording with the modified text.
This allows us to modify the CVE entry text for when it is wrong or confusing.
If a:
published/YEAR/CVE-YEAR-ID.reference
file is present, the cve_update script will use that to add a URL reference to
the json and mbox entry. The file can contain multiple URL references, one per
line.
Rejected
--------
Ids become "rejected" when they are not deemed to be actual issues. When
rejected, any previously published information shall move to the rejected/
directory, and the CVE will be submitted to cve.org to be rejected.