GitLab Advisory Database
このGitLab Advisory Database(GLAD)は、ソフトウェアの依存関係に関連するセキュリティアドバイザリのリポジトリとして機能します。最新のセキュリティアドバイザリが1時間ごとに更新されます。
このデータベースは、依存関係スキャンとコンテナスキャンの両方にとって不可欠なコンポーネントです。
GitLab Advisory Databaseの無料のオープンソースバージョンは、GitLab Advisory Database(オープンソースエディション)としても利用できます。オープンソースエディションは、同じアップデートを受け取りますが、30日間の遅延があります。
GitLab Malware Advisory
- プラン: Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
- ステータス: ベータ版
この機能の利用可否は、機能フラグによって制御されます。詳細については、履歴を参照してください。
GitLabは、パッケージレジストリで見つかった既知の悪意のあるパッケージに関するプライベートなアドバイザリデータベースを維持しています。GitLab Malware Advisory(GLAM)は、このページの他の箇所で説明されているGLADアドバイザリとは別のものです。GitLabはこれらのアドバイザリをバックグラウンドで自動的にGitLabインスタンスに同期します。
GitLabはこれらのアドバイザリを次の3つの情報源から取得します:
- このOpenSSF malicious-packages projectは、悪意のあるパッケージのレポートを集めたオープンソースのリポジトリです。
- GitLabが実行する公開パッケージレジストリのスキャン。
- パッケージレジストリからのアドバイザリデータのアップストリームフィード。
各マルウェアアドバイザリにはGLAM-で始まるGLAM-<year>-<month>-<sequence>形式のIDがあります。たとえば、GLAM-2026-09-00138のようになります。これらのアドバイザリから作成された脆弱性は、そのIDを識別子として持ち、CVE IDは持ちません。
これらのアドバイザリは3つの目的を果たします:
- 依存関係スキャンは、パイプラインが悪意のあるパッケージを検出したときに、これらを使用して脆弱性を作成します。
- 継続的脆弱性スキャンは、パイプラインの実行を必要とせずに脆弱性を作成するためにこれらを使用します。
- マージリクエスト承認ポリシーは、これらを使用して悪意のあるパッケージを導入するマージリクエストをブロックします。
サポートされているパッケージタイプ
マルウェアアドバイザリは、以下のPURLタイプを持つコンポーネントで利用できます:
cargogomavennpmnugetpypirubygem
これは、通常のアドバイザリでサポートされているPURLタイプのサブセットです。conan、packagist、pub、またはswiftのマルウェアアドバイザリはないため、これらのPURLタイプを持つコンポーネントが悪意があるとフラグが付けられることはありません。apkやdebのようなコンテナスキャンPURLタイプについても、マルウェアアドバイザリはありません。
標準化
GitLabアドバイザリは、脆弱性とその影響を伝えるために標準化されたプラクティスを使用しています。
データベースを探索する
データベースの内容を表示するには、GitLab Advisory Databaseのホームページにアクセスしてください。ホームページでは、次のことができます:
- 識別子、パッケージ名、および説明でデータベースを検索します。
- 最近追加されたアドバイザリを表示します。
- カバレッジや更新頻度を含む統計情報を表示します。
検索
各アドバイザリには、以下の詳細が記載されたページがあります:
- 識別子: 公開識別子。例えば、CVE ID、GHSA ID、またはGitLab内部ID(
GMS-<year>-<nr>)です。 - パッケージSlug: スラッシュで区切られたパッケージタイプとパッケージ名。
- 脆弱性: セキュリティ上の欠陥の簡単な説明。
- 説明: セキュリティ上の欠陥と潜在的なリスクの詳細な説明。
- 影響を受けるバージョン: 影響を受けるバージョン。
- 解決策: 脆弱性を修正する方法。
- 最終更新日: アドバイザリが最後に変更された日付。
GraphQL API
- プラン: Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed
- ステータス: 実験的機能
この機能の利用可否は、機能フラグによって制御されます。詳細については、履歴を参照してください。この機能はテストには利用できますが、本番環境での使用には適していません。
識別子で個別または複数のアドバイザリを検索するには、以下のGraphQLエンドポイントを使用します:
例
単一のアドバイザリ
識別子で単一のアドバイザリを検索するには:
{
packageMetadataAdvisory(identifier: "CVE-2026-34598") {
id,
title,
description,
publishedDate
identifiers {
name
url
}
}
}次のような結果が返されます:
{
"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"
},
{
"name": "CWE-79",
"url": "https://cwe.mitre.org/data/definitions/79.html"
},
{
"name": "CWE-87",
"url": "https://cwe.mitre.org/data/definitions/87.html"
},
{
"name": "CWE-937",
"url": "https://cwe.mitre.org/data/definitions/937.html"
},
{
"name": "CWE-1035",
"url": "https://cwe.mitre.org/data/definitions/1035.html"
}
]
}
},
"correlationId": "9f10f45bdb871a6e-MEL"
}複数のアドバイザリ
識別子で複数のアドバイザリを検索するには:
{
packageMetadataAdvisories(identifiers: ["CVE-2026-34598", "CVE-2026-34601"]) {
nodes {
id
title
description
publishedDate
identifiers {
name
url
}
}
}
}次のような結果が返されます:
{
"data": {
"packageMetadataAdvisories": {
"nodes": [
{
"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"
},
{
"name": "CWE-79",
"url": "https://cwe.mitre.org/data/definitions/79.html"
},
{
"name": "CWE-87",
"url": "https://cwe.mitre.org/data/definitions/87.html"
},
{
"name": "CWE-937",
"url": "https://cwe.mitre.org/data/definitions/937.html"
},
{
"name": "CWE-1035",
"url": "https://cwe.mitre.org/data/definitions/1035.html"
}
]
},
{
"id": "gid://gitlab/PackageMetadata::Advisory/8295301",
"title": "xmldom: XML injection via unsafe CDATA serialization allows attacker-controlled markup insertion",
"description": "`@xmldom/xmldom` allows attacker-controlled strings containing the CDATA terminator `]]>` to be inserted into a `CDATASection` node. During serialization, `XMLSerializer` emitted the CDATA content verbatim without rejecting or safely splitting the terminator. As a result, data intended to remain text-only became **active XML markup** in the serialized output, enabling XML structure\ninjection and downstream business-logic manipulation.\n\nThe sequence `]]>` is not allowed inside CDATA content and must be rejected or safely handled during serialization. ([MDN Web Docs](https://developer.mozilla.org/))",
"publishedDate": "2026-04-01",
"identifiers": [
{
"name": "CVE-2026-34601",
"url": "https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2026-34601"
},
{
"name": "GHSA-wh4c-j3r5-mjhp",
"url": "https://github.com/advisories/GHSA-wh4c-j3r5-mjhp"
},
{
"name": "CWE-91",
"url": "https://cwe.mitre.org/data/definitions/91.html"
},
{
"name": "CWE-937",
"url": "https://cwe.mitre.org/data/definitions/937.html"
},
{
"name": "CWE-1035",
"url": "https://cwe.mitre.org/data/definitions/1035.html"
}
]
},
{
"id": "gid://gitlab/PackageMetadata::Advisory/8295310",
"title": "xmldom: XML injection via unsafe CDATA serialization allows attacker-controlled markup insertion",
"description": "`@xmldom/xmldom` allows attacker-controlled strings containing the CDATA terminator `]]>` to be inserted into a `CDATASection` node. During serialization, `XMLSerializer` emitted the CDATA content verbatim without rejecting or safely splitting the terminator. As a result, data intended to remain text-only became **active XML markup** in the serialized output, enabling XML structure\ninjection and downstream business-logic manipulation.\n\nThe sequence `]]>` is not allowed inside CDATA content and must be rejected or safely handled during serialization. ([MDN Web Docs](https://developer.mozilla.org/))",
"publishedDate": "2026-04-01",
"identifiers": [
{
"name": "CVE-2026-34601",
"url": "https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2026-34601"
},
{
"name": "GHSA-wh4c-j3r5-mjhp",
"url": "https://github.com/advisories/GHSA-wh4c-j3r5-mjhp"
},
{
"name": "CWE-91",
"url": "https://cwe.mitre.org/data/definitions/91.html"
},
{
"name": "CWE-937",
"url": "https://cwe.mitre.org/data/definitions/937.html"
},
{
"name": "CWE-1035",
"url": "https://cwe.mitre.org/data/definitions/1035.html"
}
]
},
{
"id": "gid://gitlab/PackageMetadata::Advisory/9800476",
"title": "xmldom: xmldom: XML structure injection via CDATA terminator",
"description": "xmldom is a pure JavaScript W3C standard-based (XML DOM Level 2 Core) `DOMParser` and `XMLSerializer` module. In xmldom versions 0.6.0 and prior and @xmldom/xmldom prior to versions 0.8.12 and 0.9.9, xmldom/xmldom allows attacker-controlled strings containing the CDATA terminator ]]> to be inserted into a CDATASection node. During serialization, XMLSerializer emitted the CDATA content verbatim without rejecting or safely splitting the terminator. As a result, data intended to remain text-only became active XML markup in the serialized output, enabling XML structure injection and downstream business-logic manipulation. This issue has been patched in xmldom version 0.6.0 and @xmldom/xmldom versions 0.8.12 and 0.9.9.",
"publishedDate": "2026-04-02",
"identifiers": [
{
"name": "CVE-2026-34601",
"url": "https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2026-34601"
},
{
"name": "CWE-91",
"url": "https://cwe.mitre.org/data/definitions/91.html"
}
]
}
]
}
},
"correlationId": "9f10f5072e0f1a6e-MEL"
}オープンソースエディション
GitLabは、無料のオープンソース版データベースであるGitLab Advisory Database(オープンソースエディション)を提供しています。
オープンソース版は、GitLab Advisory Databaseの内容を時間差で反映するMITライセンスのクローンであり、30日以上前のすべてのアドバイザリ、またはcommunity-syncフラグが設定されているアドバイザリが含まれています。
インテグレーション
GitLab Advisory Databaseの利用規約により、GitLab Advisory Databaseに含まれるデータのサードパーティツールによる使用は禁止されています。サードパーティのインテグレーターは、代わりにMITライセンスの下で提供される時限リポジトリクローンを使用できます。
データベースの活用方法
次の例では、継続的脆弱性スキャンの一部として、アドバイザリの取り込みプロセスにおける情報源としてデータベースを使用します。
%%{init: { "fontFamily": "GitLab Sans" }}%%
flowchart TB
accTitle: Advisory ingestion process
accDescr: Sequence of actions that make up the advisory ingestion process.
subgraph Dependency scanning
A[GitLab advisory database]
end
subgraph Container scanning
C[GitLab advisory database
open source edition
integrated into Trivy]
end
A --> B{Ingest}
C --> B
B --> |store| D{{"Cloud storage
(NDJSON format)"}}
F[\GitLab Instance/] --> |pulls data| D
F --> |stores| G[(Relational database)]
メンテナンス
GitLab Advisory DatabaseおよびGitLab Advisory Database(オープンソースエディション)のメンテナンスと定期的な更新は脆弱性リサーチチームが担当しています。
コミュニティコントリビュートは、community-syncフラグを介してadvisories-communityでアクセス可能です。
脆弱性データベースにコントリビュートする
リストにない脆弱性をご存じの場合は、イシューを作成するか、その脆弱性を提出することで、GitLab Advisory Databaseにコントリビュートできます。
詳細については、コントリビュートガイドラインを参照してください。
ライセンス
GitLab Advisory Databaseは、GitLab Advisory Databaseの利用規約に従って自由にアクセスできます。