GitLab advisory database
- Tier: Ultimate
- Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
GitLab maintains two advisory feeds for software dependencies and synchronizes them to your GitLab instance:
- Vulnerability advisories, for packages with known vulnerabilities.
- Malware advisories, for packages that are malicious.
GitLab advisories for vulnerabilities
The GitLab advisory database (GLAD) aggregates security advisories for software dependencies from public data feeds, such as the National Vulnerability Database (NVD) and GitHub Security Advisories (GHSA), and from proprietary advisories.
Advisories identify vulnerabilities by their CVE identifier. When a vulnerability has no CVE identifier, advisories use another identifier, such as a GHSA ID. Advisories also classify weaknesses with CWE and rate impact with CVSS scores.
GitLab synchronizes GLAD to your instance automatically. In offline environments, download the advisory data on a machine with internet access and copy it to the instance instead.
These features use GLAD advisories:
- Dependency scanning using SBOM creates a vulnerability when a pipeline detects a vulnerable package.
- Continuous vulnerability scanning creates a vulnerability when a new advisory affects a package, without a pipeline.
Dependency scanning with Gemnasium uses the legacy GitLab advisory database instead.
Supported package types for vulnerability advisories
GLAD covers components with these package types:
cargo, conan, go, maven, npm, nuget, packagist, pub, pypi, rubygem, and swift.
GitLab advisories for malware
GitLab advisories for malware (GLAM) is a separate feed of advisories for malicious packages published to package registries.
GitLab builds GLAM from the OpenSSF malicious-packages project,
upstream feeds from package registries, and its own analysis of newly published packages.
Intentionally malicious packages do not qualify for CVE identifiers, so GLAM tracks them with its own IDs
in the format GLAM-<year>-<month>-<sequence>, for example GLAM-2026-09-00138.
GitLab synchronizes GLAM to your instance automatically. In offline environments, download the malware advisories on a machine with internet access and copy them to the instance instead.
These features use GLAM advisories:
- Dependency scanning using SBOM creates a vulnerability when a pipeline detects a malicious package.
- Continuous vulnerability scanning creates a vulnerability without a pipeline.
- Merge request approval policies block merge requests that introduce a malicious package.
Supported package types for malware advisories
GLAM covers components with these package types:
cargo, go, maven, npm, nuget, pypi, and rubygem.
Components with other package types, such as conan or container scanning types like deb, are never flagged as malicious.
Legacy GitLab advisory database
Dependency scanning with Gemnasium uses the legacy GitLab advisory database, a subset of GLAD
without the proprietary advisories added from September 29, 2026.
To browse it, go to advisories.gitlab.com.
Look up advisories with the GraphQL API
- Tier: Ultimate
- Offering: GitLab.com, GitLab Self-Managed
- Status: Experiment
The availability of this feature is controlled by a feature flag. For more information, see the history. This feature is available for testing, but not ready for production use.
To check which advisories your GitLab instance has, look them up by identifier:
Query.packageMetadataAdvisoryto look up a single advisoryQuery.packageMetadataAdvisoriesto look up multiple advisories
Results include proprietary and container scanning advisories, but not malware advisories.
When several advisories share an identifier, only Query.packageMetadataAdvisories returns all of them.
Single advisory
To look up a single advisory by identifier:
{
packageMetadataAdvisory(identifier: "CVE-2026-34598") {
id
title
description
publishedDate
identifiers {
name
url
}
}
}Example response:
{
"data": {
"packageMetadataAdvisory": {
"id": "gid://gitlab/PackageMetadata::Advisory/8295281",
"title": "YesWiki has Persistent Blind XSS at \"/?BazaR&vue=consulter\"",
"description": "A stored and blind XSS vulnerability exists in the form title field. A malicious attacker can inject JavaScript without any authentication via a form title that is saved in the backend database. When any user visits that injected page, the JavaScript payload gets executed.\n\nType: Stored and Blind Cross-Site Scripting (XSS)\nAffected Component: form title input field\nAuthentication Required: No (Unauthenticated attack possible)\nImpact: Arbitrary JavaScript execution in victim's browser",
"publishedDate": "2026-04-01",
"identifiers": [
{
"name": "CVE-2026-34598",
"url": "https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2026-34598"
},
{
"name": "GHSA-37fq-47qj-6j5j",
"url": "https://github.com/advisories/GHSA-37fq-47qj-6j5j"
}
]
}
},
"correlationId": "9f10f45bdb871a6e-MEL"
}Multiple advisories
To look up multiple advisories by identifiers:
{
packageMetadataAdvisories(identifiers: ["CVE-2026-34598", "CVE-2026-34601"]) {
nodes {
id
title
description
publishedDate
identifiers {
name
url
}
}
}
}The response has the same fields as the single advisory response, with one entry in nodes for each matching advisory.
Null responses
Both endpoints return null instead of an error when any of these conditions is true:
- The request is not authenticated.
- The
pm_advisory_graphqlfeature flag is not enabled for your user. - Your GitLab instance does not have an Ultimate license.
For example:
{
"data": {
"packageMetadataAdvisory": null
}
}Query.packageMetadataAdvisory also returns null when no advisory matches the identifier.
To confirm that the API is available, look up an identifier that you know exists, such as CVE-2026-34598.
