-
Notifications
You must be signed in to change notification settings - Fork 356
Rework VulnerabilityResolutionReason for CRA / DORA requirements
#10886
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: main
Are you sure you want to change the base?
Changes from all commits
72fa5db
c5bea43
f9f9338
59bc685
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -31,16 +31,28 @@ | |
| */ | ||
| CANT_FIX_VULNERABILITY, | ||
|
|
||
| /** | ||
| * The finding is not actionable because it is an error, out of scope, or intended behavior. | ||
| */ | ||
| FALSE_POSITIVE_VULNERABILITY, | ||
|
|
||
| /** | ||
| * The required fix (e.g. patch, update) has been successfully applied and verified, eliminating the vulnerability. | ||
| */ | ||
| FIXED_VULNERABILITY, | ||
|
||
|
|
||
| /** | ||
| * The code in which the vulnerability was found is neither invoked in the project's code nor indirectly | ||
| * via another open source component. | ||
| */ | ||
| @Deprecated("Use NOT_EXPLOITABLE_VULNERABILITY instead", replaceWith = ReplaceWith("NOT_EXPLOITABLE_VULNERABILITY")) | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Looking at 1, I propose to name it There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @willebra please comment. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I believe the VEX status document describes primarily vulnerability handling statuses (AFFECTED, UNDER INVESTIGATION), but then has a bit of reasons for why to resolve these (FIXED, NOT AFFECTED). I believe the rationale in VulnerabilityResolutionReason in ORT is about providing a justification for why a vulnerability was resolved. It should not be mixed with handling status. As it provides justifications, and those are valuable parts in proving proper handling of vulnerabilities, this should be more detailed than just on the level of "Fixed" and "Not affected". As to the There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @fviernau @willebra My first thoughts we similar to Frank to align VulnerabilityResolutionReason closes to VEX enums but as you correctly pointed out VEX is status and our resolution is about the why a vulnerability finding was resolved. This use case is what is vulnerability-analysis's justification in CycloneDX. Question is do we align with what CycloneDX or CSAF have or do we go our own way? My thinking was that vulnerability resolutions need to be translatable to SBOM so one can in a machine readable standard inform customers why a vulnerability finding / CVE is not applicable. Would like to see a mapping from ORT to CycloneDX/CSAF vulnerability impact justifications. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
These justifications seem to be for triage-results? I.e. not the final result how the issue was fixed, but the potential result of a triage? All of these seem detailed justifications that fall under This is why we would need end results when fixing/remediating was necessary: (By the way, the more CRA/ISO27001/WG9 way to say fixed, would be I'm following/participating in the work of CEN/CENELEC in JT13, WG9, which is creating the standard for vulnerability handling on the assignment of the EU Comission. That will be the foundational standard for the EU CRA vulnerability handling. The justifications proposed in this PR derive from the CRA, but the standards work is still going forward. It seems to remain at the same high level as the current ORT enums and the proposed ORT enums, so the current PR is okay from this perspective. The standard text has six steps:
Anyhow, it would be good to satisfy as many schemes for vulnerability handling as possible, i.e. being CycloneDX "compatible" and CRA "compatible". That can be done in code or in process. We need the highest level at least in code. And then when going to detailed reasons, they can be either code - if reasonable - or comments/process. E.g. the current PR's list of enums could be nicely used with the list from CycloneDX, by applying |
||
| INEFFECTIVE_VULNERABILITY, | ||
|
|
||
| /** | ||
| * The vulnerability is irrelevant due to a tooling or database mismatch, e.g., the package version used | ||
| * does not match the version for which the vulnerability provider has reported a vulnerability. | ||
| */ | ||
| @Deprecated("Use FALSE_POSITIVE_VULNERABILITY instead", replaceWith = ReplaceWith("FALSE_POSITIVE_VULNERABILITY")) | ||
| INVALID_MATCH_VULNERABILITY, | ||
|
|
||
| /** | ||
|
|
@@ -55,6 +67,17 @@ | |
| */ | ||
| NOT_A_VULNERABILITY, | ||
|
|
||
| /** | ||
| * The vulnerability exists in a component, but is not exploitable due to the product's specific architecture or | ||
| * configuration. | ||
| */ | ||
| NOT_EXPLOITABLE_VULNERABILITY, | ||
|
||
|
|
||
| /** | ||
| * The vulnerability is acknowledged, but a conscious, documented decision is made to not apply a fix or mitigation. | ||
| */ | ||
| RISK_ACCEPTED_VULNERABILITY, | ||
|
||
|
|
||
| /** | ||
| * This vulnerability will never be fixed, e.g., because the package which is affected is orphaned, | ||
| * declared end-of-life, or otherwise deprecated. | ||
|
|
||
Uh oh!
There was an error while loading. Please reload this page.