Vulnerability Management
This is a Controlled Document
In line with GitLab’s regulatory obligations, changes to
controlled documents must be approved or merged by a code owner. All contributions are welcome and encouraged.
Vulnerability Management is the continual process of identifying, prioritizing, mitigating and remediating vulnerabilities. At GitLab we identify vulnerabilities in a number of different ways depending on the component being analyzed. This process and associated tooling is owned by the Vulnerability Management team.
+This page primarily outlines our vulnerability management policies and procedures at GitLab. The policies and procedures used to manage vulnerabilities at GitLab are collectively referred to as the Vulnerability Management Standard.
Quick reference
What does Vulnerability Management cover at GitLab?
Vulnerability Management covers all systems which store, process or transmit GitLab production and/or GitLab customer data, as well as GitLab-managed software and software dependencies, based on the GitLab critical system tiering methodology. Specifically:
- GitLab-managed infrastructure
- GitLab software, packages, images & dependencies
- Detected Later (HackerOne reports, Community or Team Member reported bugs, PenTest findings)
Approach & Strategy
Vulnerability Management at GitLab focuses primarily on gathering data about vulnerabilities, vulnerability detection and attack surface. We do this by building tooling to gather, normalize and correlate various sources of data into actionable automated workflows which either directly address or mitigate findings. If this cannot be done automatically, we aim to make the output of this process easily available and understandable to the GitLab DRIs responsible for mitigating or fixing a finding. Our goal is to feed this tooling back into GitLab itself, and where it makes sense, to build and use GitLab features to support our own and our customer’s workflows wherever possible.
Vulnerability Management Standard
- Where possible, GitLab should be used as the source of truth for vulnerability detection and management. GitLab issues are currently used to track vulnerability management activities in addition to engineering work required to remediate vulnerabilities.
- Application (WebApp and container) vulnerability scanning must occur on a minimum of a monthly basis, and use scanners and scanner configuration tuned for the code being scanned. This includes enabling appropriate dependency scanning, container scanning, secrets scanning, and SAST scan jobs. See the Secure your application documentation for all available scanners. Where possible, standard supported GitLab scanners should be used in CI based on supported templates or components.
- Container images shipped by GitLab should be scanned at a minimum with GitLab container scanning before being shipped.
- Infrastructure (operating systems and databases) vulnerability scanning must occur on a minimum of a monthly basis.
- Authenticated/credentialed scans from a privileged network domain, in addition to external scanning of infrastructure, should be performed wherever possible.
- Vulnerability scanners must be up to date (the latest operable version), and hardened to resist unauthorized use or modification.
- Third party penetration testing must be performed annually.
- Even if mitigated or not exploitable, vulnerable code (including dependencies) must be removed or updated to non-vulnerable versions to resolve vulnerability findings, so we are not shipping vulnerable code. For more information on why we do this, please see Why should we fix vulnerabilities?
- Vulnerabilities must be fixed within SLA timeframes, unless an exception exists. Where vulnerabilities are not fixed within SLA, the responsible group should work to understand which factors contributed to missing remediation SLA timeframes as part of regular group development retrospectives.
Service Level Agreements (SLAs) / Service Level Objectives (SLOs)
For information on vulnerability management SLAs / SLOs, see the Vulnerability Management SLAs handbook page.
Roles & Responsibilities
Role |
Responsibility |
Notes |
Vulnerability Management |
Responsible for implementing and maintaining Vulnerability Management standards. Develop and maintain (VulnMapper). Evaluate severity and priority, analyze the actual impacts, and make risk adjustment for the vulnerabilities which VulnMapper is unable to process automatically. Iterate on data gathering, normalization and correlation automation and work to provide actionable insights on mitigation and remediation to GitLab team members. |
|
Security Compliance Team |
Responsible for oversight of supporting procedures as part of ongoing continuous control monitoring for adherence with compliance baselines. Responsible for approving Deviation Requests (or getting approval from Agency) and closing DR issues once all linked vulnerability issues have been closed. |
|
Application Security Team |
Collaborate with Development & Engineering in the triage of vulnerabilities and provide stable counterparts TODO. |
|
Development & Engineering |
Responsible for mitigating and remediating vulnerabilities in GitLab-managed software within SLA |
|
Reliability |
Responsible for mitigating and remediating vulnerabilities in GitLab-managed infrastructure within SLA |
|
Product Security Engineering Team |
Develop and maintain the GitLab Security Bot, a.k.a. appsec-escalator, which drives SLA and remediation reminders |
AppSec collaborates with Product Security Engineering and Vulnerability Management in maintaining this bot. |
Infrastructure Security |
Responsible for maintaining cloud configuration and resolving vulnerabilities or misconfiguration in cloud policy and other security configuration |
|
Security Leadership (Code Owners) |
Responsible for approving changes to this standard |
|
Additional Notes for Vulnerability Triage
- VulnMapper creates vulnerability tracking issues and if not available already, adds appropriate severity, priority and other necessary labels. Vulnmapper is currently opt-in for issue creation, if issues are not created for your group, please let Vulnerability Management know.
- For the vulnerabilities which VulnMapper can process automatically, Vulnerability Management updates vulnerability tracking issues with the necessary information such as CVSS score, severity and priority, package name and version etc. Current capabilities are documented on the automation handbook page.
- For supported OS bases, VulnMapper also adds labels indicating fix availability to further reduce triage time, based on vendor advisory and package information. Supported OSes for this functionality is limited, and is detailed in the automation handbook page.
- Where fixes are not available or differences between NVD and vendor severity exists, VulnMapper reports Deviation Request issues for vendor dependencies and vendor risk adjustments automatically.
- Vulnerability Management assigns
vulnerability issues
to a development group based on available information. VulnMapper also is configured with a map of ownership information for GitLab development groups, and will appropriately label issues for different groups with the appropriate triage group labels, when updating or creating issues.
- Where possible, Vulnerability Management, via our automation, where available, will make recommendations on how to address vulnerability detections, either via an MR or the description in vulnerability tracking issues.
- Vulnerability triage is a shared responsibility although Vulnerability Management is the DRI. AppSec, InfraSec and respective feature domain development groups are responsible for providing evidence and/or analysis of GitLab-specific impact during vulnerability triage upon Vulnerability Management’s request. Vulnerability tracking issues should be assigned to the appropriate AppSec stable counterpart or development group for further analysis and after this, for remediation, the responsible development or infrastructure group becomes the owner and DRI, as they will have the context and responsibility over impacted vulnerable assets.
- Vulnerability is now ready for remediation by the responsible group
If you have any questions or concerns related to vulnerability management please contact Vulnerability Management and Engineering in the #g_security_vulnmgmt
or the #security
channels on Slack, you can also open an issue in the Vulnerability Management issue tracker. All work being done to improve this process is also tracked in the issue tracker, and we’d love your feedback.
Exceptions
If a you are mitigating or addressing a vulnerability, and you do not believe the GitLab Vulnerability Management standards can be met, please raise an exception request. For details on exception requests, handling, including raising a request for an SLA exception, see the SLA Exception handbook page.
References
At GitLab, we use GitLab to track the detection and remediation of vulnerability findings. In the case of remediation work, a vulnerability tracking issue (which is a regular GitLab issue) is used to track work required to remediate a specific vulnerability finding, typically against one or more assets where the vulnerability was detected.
In order to close a vulnerability tracking issue, one of the following criteria must be met:
- The finding has been remediated and validated as remediated, and made available to intended users
- The finding was a false positive detection, and required work has been performed to prevent re-detection
- A finding was in a third-party dependency from a vendor, and the vendor has indicated they will not fix the vulnerability due to lack of impact, and an SLA exception or Deviation Request has been raised
In other situations, there is typically more work which is required before the issue can be closed, to ensure the detection is not erroneously closed and the finding forgotten about, and issue closure is not appropriate as a result.
Labels used in Vulnerability Management Engineering for scoring and sizing automation development bugs and feature issues
Purpose
This policy is intended to outline the encryption controls and requirements at GitLab.
Scope
This policy is applicable to the production environment and any end user devices that store such data. This also includes the GitLab Dedicated single-tenant SaaS offering.
Roles & Responsibilities
Role |
Responsibility |
GitLab Team Members |
Responsible for following the requirements in this policy |
Business or System Owners |
Alignment to this policy and any related standards |
Product Security Team |
Maintain this Encryption Policy and associated standards |
Security Management (Code Owners) |
Responsible for approving significant changes and exceptions to this policy |
Policy
Encryption
Customer data is encrypted at rest. (SC-28)
Provides actionable guidance on how to resolve specific vulnerability types from specific sources for team members
This guidance will provide all in scope individuals the information they need to help GitLab ensure incidents are reported, investigated and handled.
This procedure applies to vulnerabilities identified in GitLab Production infrastructure and ensures implementation of the Vulnerability Management Standard. This procedure is designed to provide insight into our environments, promote healthy patch management among other preventative best-practices, and remediate risk; all with the end goal to better secure our environments and our product.
Scope
Security and Infrastructure partnered to come up with a scope that would make sure all of our critical environments and systems were covered during deployment. The following environments are currently in-scope
for GitLab.com and GitLab Dedicated production:
SLA exception take on two different forms at GitLab, with two slightly different processes. This difference in procedure only takes effect if the asset (image, server, package) where a vulnerability finding has been detected is shipped into and used within the FedRAMP boundary or environment. Typically, at a high level, findings in FIPS compliant images will be in-scope for FedRAMP, and should be treated as such for requesting SLA exceptions.
Provides actionable guidance on how to deal with a vulnerability detection for non-Security team members
Tracking Issue Lifecycle
The typical lifecycle of a vulnerability detection at GitLab, at a high level, follows the following steps:
- Vulnerability detected by scanner or otherwise reported
- A GitLab issue is created to track the vulnerability
- The vulnerability is remediated within SLA
- The issue is closed
Depending on the environment and what is being scanned, the tracking issue will be handled by different GitLab team members.
Issues may also be enriched by different automated tools, such as (VulnMapper, which assist with streamlining the detection and remediation process.
When an issue cannot be remediated within SLA, additional procedures exist for adjusting or exempting vulnerabilities from SLA. See the section in this page on Risk Acceptance & SLA Exception for detail.
A standard set of vulnerability management labels are used across GitLab to assist team members in handling security vulnerabilities in GitLab-maintained projects.
These labels are applied automatically by automation managed by the Vulnerability Management team. Automated labeling happens on a daily cadence. Several data sources are used to enrich existing security tracking issues, and are labels are designed to increase the amount of information and context available to team members about vulnerabilities present in the projects they maintain. The primary goal is to reduce the amount of manual research and triage work required, and help to apply consistent and effective management of vulnerabilities across GitLab.
Vulnerability management maintains automation tooling which intends to automate as much of this standard and the related procedures as possible. We’re always iterating on ways we can save time for all stakeholders whilst keeping GitLab and our users safe.
VulnMapper
VulnMapper is the main automation tool used by Vulnerability Management. It is a closed-source tool with a goal of automating security processes and building functionality into GitLab as part of Product Security’s dogfooding goals.
Overview
At GitLab, when a vulnerability finding is detected, it is detected against one or more assets (such as servers, container images or packages).
When remediating or “fixing” a vulnerability detection, it is important that a full remediation of the detected finding is made and validated as no longer being detected or exploitable prior to considering a vulnerability finding fixed.
This handbook page contains several scenarios for different types of detections, and sets out the “definition of done” and what constitutes a fixed vulnerability.
This handbook page describes how the Vulnerability Management team works on a day to day, quarter to quarter basis.
We recognize this process is iterative and requires regular introspection to ensure we are always improving and not stagnating in our approach.
Planning
Vulnerability Management follows GitLab product milestones
Prior to a new milestone beginning, planning is performed to define the expected outcome of the next milestone, and the work required to accomplish it. We review our ability to deliver this work within the milestone and commit/adjust to issues to fit. Additionally, any work which is not scoped or not sized is qualified and labelled.
Vulnerability Management SLAs and Labels
The following timelines or service level agreements (SLAs) are based on many factors - such as regulatory compliance, customer SLOs & SLAs, vulnerability impact, scope, prevalence in GitLab environments, impact if exploited, and defining reasonable turn-around times for mitigation and remediation to protect GitLab and our customers. All of these factors will be considered when mapping the priority to GitLab’s priority labels. All components in scope of Vulnerability Management are subject to the same SLAs. The SLAs are as follows:
What is a vulnerability?
A vulnerability describes a flaw in either code or configuration with potential or demonstrated security impact. For a flaw to be considered a vulnerability, rather than just a bug, it must have security impact, potential or demonstrated. Security impact is classified by the potential to cause software to behave in a way which would be considered unexpected by a typical user of the software or system, negatively impacting the availability or integrity of the software, or the confidentiality of information held or processed by the system. A vulnerability does not need to be demonstrated to be exploitable to be considered a vulnerability, as many vulnerabilities are exploited in very creative and unexpected ways, often in combination with other vulnerabilities to form an attack chain.
Overview
Sometimes we encounter vulnerability findings in GitLab or GitLab systems, and through various mitigating factors or a lack of clear vectors for exploitation, it may not seem important to resolve those vulnerabilities, when viewed in isolation. The handbook page details potential reasons team members might not have considered for resolving vulnerability detections in a number of scenarios.
There are several important reasons for fixing vulnerabilities:
- To remediate direct threat of vulnerabilities being exploited in GitLab or GitLab systems
- To improve the security of our software and systems, to prevent negative impact to the availability and confidentiality of GitLab user data, using exploits or combinations of exploits we may not yet be aware are possible
- To demonstrate our commitment to a mature and secure software delivery lifecycle (SDLC). This helps to demonstrate to GitLab users that they can trust our software and systems, by ensuring scans of our systems, images, and packages are as clean as possible as a measure of the health of our procedures
Mitigating factors or a lack of direct exploitation scenarios should not mean we don’t need to fix a vulnerability detection. If you believe a finding to be mitigated or not exploitable, this can be used to justify an exception to regular SLAs, however this should still be addressed and a fix shipped per the above reasons. If you believe a detection is made in error, which is typically referred to as a false positive in a security scan, you can raise an SLA exemption documenting to error in detection. Ideally, we would then feed information about the detection back to development groups (for GitLab security scanning product features) and to third party vendors or projects for all other scanners, to get the false positive resolved at the source.
Last modified October 29, 2024:
Fix broken links (455376ee
)