Automated Vulnerability Severity Overrides/Customization Policy
[[_TOC_]] ### Problem to solve Customers may not agree with the [severity levels assigned to vulnerabilities](https://docs.gitlab.com/ee/user/application_security/vulnerabilities/severities.html) for many reasons. Aside from CVE + CVSS, there are no industry standards for vulnerability severity. To enable more efficient triage and remediation, customers would like to be able to customize severity levels. ### Proposal Create a rules-based method of automatically adjusting severity for vulnerabilities generated by GitLab: SAST, Dependency Scanning, Secret Detection, DAST, Container Scanning, API Security. Customizing severity levels in an automated, rule-based way, is more efficient and scalable than one-off severity overrides. ### Scope #### MVC * Customization policies/rules must be visible and editable via the UI and API * Once applied, the policy takes effect immediately. If a new pipeline-based scan runs, the severity overrides must happen quickly enough for the results to appear in the MR widget without a delay. Once a severity override policy is merged, users with merge requests open should be able to rerun their merge request pipelines immediately and see the updated severity. * Note: For MVC, we will focus on updating severity of vulnerabilities on the default branch. The MR should reflect the updated severity for any vulns/findings that are already tracked in default. Any new findings will not update. As a stretch goal, we will explore how to support new security findings. * Manual severity overrides will take precedence over a policy so that an individual with the right permissions can update a severity manually, even if has already been altered by a policy. * The override will appear in each vulnerability's history section * Ability to automated create, update, and delete severity customizations for: * Dependency Scanning - CVE ID * Container Scanning - CVE ID * SAST - CWE ID * DAST - CWE ID * The vulnerability report must include a visual indicator next to any severity that has changed due to customization. * All customizations must be logged via an audit event, including: * Timestamp for when the customization was created, updated, or deleted * Who authored the change * Parameters of the customization * Analyzer it applies to * Severity change * Input parameter (for MVC this is CVE, CWE, secret issuer) #### Future Iterations Expand customization to include additional parameters. These could include factors such as: **All** * Accessibility/internet exposure (internal vs external) * Environment (production vs QA) * [Business criticality](https://gitlab.com/gitlab-org/gitlab/-/issues/515932) ##### Dependency Scanning * EPSS * KEV * CVSS * Component name/version * License type ##### SAST * Rule ID * Language * Framework * Function name ##### Secret Detection * Rule ID * validity status ##### Container Scanning * Package name * Image tag * CVSS score ##### DAST * URL path ##### API Security * HTTP method ### Intended users * [Amy (Application Security Engineer)](https://about.gitlab.com/handbook/product/personas/#amy-application-security-engineer) * [Alex (Security Operations Engineer)](https://about.gitlab.com/handbook/product/personas/#alex-security-operations-engineer)
epic