-
Notifications
You must be signed in to change notification settings - Fork 205
RFD: Support CNAs reporting affected artifacts #440
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: develop
Are you sure you want to change the base?
RFD: Support CNAs reporting affected artifacts #440
Conversation
This RFD introduces support for CNAs to report artifacts affected by a vulnerability by introducing a new "affectedArtifacts" field to the "cnaPublishedContainer". This new field is an array of objects, with each object identifying a single artifact, potentially with multiple identifiers per-artifact. Signed-off-by: Andrew Lilley Brinker <[email protected]>
Signed-off-by: Andrew Lilley Brinker <[email protected]>
We may want to consider supporting an array of synonyms. Here are two variant examples: {
"affectedArtifacts": [
{
"artifacts": {
"omnibor": "gitoid:blob:sha256:9f64df92367881be21e23567a31a8ce01994d98b69d28917b5c132ce32a8e6c8",
"sha256": "2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824"
},
"status": "affected",
"version": "0.18.1",
"versionType": "semver",
"platforms": ["macOS", "x86"]
},
{
"artifacts": [
{
"type": "omnibor",
"value": "gitoid:blob:sha256:4043df92367881be21e23567a31a8ce01994d98b69d28917b5c132ce32a8e6c8"
},
{
"type": "sha256",
"value": "40414dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824"
}
],
"status": "affected",
"version": "0.18.1",
"versionType": "semver",
"platforms": ["Windows", "x86"]
}
]
} The value of such an approach is twofold:
I think both of these reasons outweigh the extra verbosity. |
Thanks @david-waltermire! A few thoughts:
|
I'll also note that during today's QWG meeting a couple of folks raised the idea of using a |
I don't think I expressed my thoughts on the I think it may make more sense to not have the version field at all and I'll try to make that case. The case for omitting
|
Thanks @darakian! Regarding removing I'd added them in for this proposal based on feedback from @ElectricNroff (see #427). I assume he would advocate for their inclusion here as well. In this context, they'd semantically be providing information about the artifact but not constraining applicability the way they do when used in the |
Ah, I see. Give me a minute or two to read the thread in full, but @david-waltermire what are your thoughts on dropping An old PR came to me over the weekend which might add some nice real world context. We ended up handling this with a bunch of individual PRs adding different sets of packages to different GHSAs and it worked well enough. That said, being able to express a vuln cleanly as about the specific files via hashes/omnibors/whatever and to let some form of tooling go check public registries and derive coarse grained version info would have been super neat. Less work and (probably) better coverage. |
Summarizing open issues (meant to do this in the first comment, but better late than never):
|
I've whipped up examples of the options identified in the comment above. |
We may want to look at other projects that ingest inherent identifiers for similar purposes, and see what type of data they get, e.g., a complete set of every relevant inherent identifier, a well-defined subset, a seemingly random subset, etc. Example: https://github.com/RetireJS/retire.js/blob/6da45fcb6a3425e55ee8181b2ac35168879bf086/repository/jsrepository-master.json#L824-L842 In other words, when I compare that RetireJS data to the https://github.com/AceMetrix/jquery-deparam/tags page, how can I understand why there is no inherent identifier for 0.2.0, 0.5.0, or 0.5.1 - but there is (perhaps surprisingly) an inherent identifier for 0.4.1? Is the typical answer "that's all the work that I wanted to do - if you want more inherent identifiers, then submit your own ADP container"? Or, is it sometimes something else, e.g., the data provider could not reproduce the vulnerability in 0.2.0, 0.5.0, or 0.5.1? |
Love the idea of inspecting how projects ingest inherent identifiers for use. One thought came to me on having a "complete list" though; that's going to run up against the record size limit which is defacto 16MB today I think an answer to this question
Could be modeled on how github takes feedback for their advisories. In essence the first publication is a best effort and users come and suggest/request additions/subtractions and provide evidence in a public forum in order to motivate those changes. ADP containers could work too and maybe CNAs could delegate/designate authority to groups they trust to do validation work so as to keep the process from just being a free for all. Maybe something else, but just spitballing. |
Adding some open questions from discussions on this:
|
This RFD introduces support for CNAs to report artifacts affected by a vulnerability by introducing a new "affectedArtifacts" field to the "cnaPublishedContainer". This new field is an array of objects, with each object identifying a single artifact, potentially with multiple identifiers per-artifact.
This is a replacement for the previous OmniBOR portion of #407 (which originally covered both Package URLs and OmniBOR Artifact IDs, before being narrowed to solely focus on Package URLs).
The potential implementation can be seen in #441.
Rendered