GitLab 어드바이저리 데이터베이스
GitLab v19.5Offering: GitLab.com, GitLab Self-Managed
요약
GitLab 어드바이저리 데이터베이스(GLAD)는 소프트웨어 의존성과 관련된 보안 어드바이저리를 모아 둔 리포지터리 역할을 합니다. 이 데이터베이스는 의존성 스캐닝과 컨테이너 스캐닝 모두의 핵심 구성 요소입니다. GitLab 어드바이저리 데이터베이스의 무료 오픈 소스 버전은 GitLab 어드바이저리 데이터베이스(오픈 소스 에디션)으로도 제공됩니다.
GitLab 어드바이저리 데이터베이스(GLAD)는 소프트웨어 의존성과 관련된 보안 어드바이저리를 모아 둔 리포지터리 역할을 합니다. 최신 보안 어드바이저리로 매시간 갱신됩니다.
이 데이터베이스는 의존성 스캐닝과 컨테이너 스캐닝 모두의 핵심 구성 요소입니다.
GitLab 어드바이저리 데이터베이스의 무료 오픈 소스 버전은 GitLab 어드바이저리 데이터베이스(오픈 소스 에디션)으로도 제공됩니다. 오픈 소스 에디션은 동일한 갱신 내용을 받지만 30일의 지연이 있습니다.
GitLab 멀웨어 어드바이저리#
히스토리
- GitLab 19.3에서
sync_malware_advisories와ingest_malware_advisories라는 플래그와 함께 도입되었습니다. 기본적으로 비활성화되어 있습니다. - GitLab 19.3에서 GitLab.com, GitLab Self-Managed, GitLab Dedicated에서 활성화되었습니다.
- GitLab 19.5에서 정식 출시되었습니다. 기능 플래그
sync_malware_advisories와ingest_malware_advisories가 제거되었습니다.
GitLab은 패키지 레지스트리에서 발견된 알려진 악성 패키지에 대한 어드바이저리를 비공개 데이터베이스로 유지 관리합니다. GitLab 멀웨어 어드바이저리(GLAM)는 이 페이지의 다른 부분에서 설명하는 GLAD 어드바이저리와는 별개입니다. GitLab은 이러한 어드바이저리를 백그라운드에서 GitLab 인스턴스로 자동 동기화합니다.
GitLab은 다음 세 가지 출처에서 이러한 어드바이저리를 수집합니다.
- 악성 패키지 신고를 모은 오픈 소스 리포지터리인 OpenSSF malicious-packages 프로젝트.
- GitLab 이 수행하는 공개 패키지 레지스트리 스캔.
- 패키지 레지스트리에서 제공하는 업스트림 어드바이저리 데이터 피드.
각 멀웨어 어드바이저리에는 GLAM-으로 시작하는 ID가 있으며, 형식은
GLAM-<year>-<month>-<sequence> 입니다(예: GLAM-2026-09-00138). 이러한 어드바이저리로 생성된
취약점은 해당 ID를 식별자로 가지며 CVE 식별자는 없습니다.
오프라인 환경에서는 GitLab 이 이러한 어드바이저리를 자동으로 동기화할 수 없습니다. 대신 인터넷에 연결된 머신에서 내려받아 인스턴스로 복사합니다.
이러한 어드바이저리는 다음 세 가지 용도로 사용됩니다.
- 의존성 스캐닝은 파이프라인이 악성 패키지를 탐지했을 때 취약점을 생성하는 데 사용합니다.
- 지속적 취약점 스캐닝은 파이프라인을 실행하지 않고도 취약점을 생성하는 데 사용합니다.
- 머지 리퀘스트 승인 정책은 악성 패키지를 들여오는 머지 리퀘스트를 차단하는 데 사용합니다.
지원되는 패키지 유형#
멀웨어 어드바이저리는 다음 PURL 유형의 컴포넌트에 제공됩니다.
cargogomavennpmnugetpypirubygem
이는 일반 어드바이저리에서
지원하는 PURL 유형의 일부입니다.
conan, packagist, pub, swift에 대한 멀웨어 어드바이저리는 없으므로 해당 PURL 유형의
컴포넌트는 악성으로 표시되지 않습니다. apk 나 deb 같은 컨테이너 스캐닝 PURL 유형에 대한
멀웨어 어드바이저리도 없습니다.
표준화#
GitLab 어드바이저리는 취약점과 그 영향을 전달하기 위해 표준화된 방식을 사용합니다.
데이터베이스 살펴보기#
데이터베이스 내용을 보려면 GitLab 어드바이저리 데이터베이스 홈페이지로 이동합니다. 홈페이지에서 다음을 수행할 수 있습니다.
- 식별자, 패키지 이름, 설명으로 데이터베이스를 검색합니다.
- 최근에 추가된 어드바이저리를 확인합니다.
- 커버리지와 갱신 주기를 포함한 통계 정보를 확인합니다.
검색#
각 어드바이저리에는 다음 세부 정보를 담은 페이지가 있습니다.
- Identifiers: 공개 식별자입니다. 예를 들어 CVE ID, GHSA ID, GitLab 내부 ID(
GMS-<year>-<nr>)가 있습니다. - Package Slug: 슬래시로 구분된 패키지 유형과 패키지 이름입니다.
- Vulnerability: 보안 결함에 대한 짧은 설명입니다.
- Description: 보안 결함과 잠재적 위험에 대한 상세 설명입니다.
- Affected Versions: 영향을 받는 버전입니다.
- Solution: 취약점을 해결하는 방법입니다.
- Last Modified: 어드바이저리가 마지막으로 수정된 날짜입니다.
GraphQL API#
이 기능의 사용 가능 여부는 기능 플래그로 제어됩니다. 자세한 내용은 히스토리를 참고합니다. 이 기능은 테스트 용도로 사용할 수 있으며 프로덕션 사용에는 적합하지 않습니다.
다음 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 어드바이저리 데이터베이스(오픈 소스 에디션)을 제공합니다.
오픈 소스 버전은 GitLab 어드바이저리 데이터베이스를 시간차를 두고 복제한 것으로, MIT 라이선스를 따르며, GitLab 어드바이저리 데이터베이스의 어드바이저리 중 30일이 지난 것과 community-sync 플래그가 붙은 것을 모두 포함합니다.
통합#
GitLab 어드바이저리 데이터베이스 약관은 GitLab 어드바이저리 데이터베이스에 담긴 데이터를 서드파티 도구에서 사용하는 것을 금지합니다. 서드파티 통합 업체는 대신 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)]</code></pre></details></div>
유지 관리#
GitLab 어드바이저리 데이터베이스와 GitLab 어드바이저리 데이터베이스(오픈 소스 에디션)의 유지 관리와 정기 갱신은 Vulnerability Research 팀이 담당합니다.
커뮤니티 기여는 community-sync 플래그를 통해 advisories-community에서 확인할 수 있습니다.
취약점 데이터베이스 기여#
목록에 없는 취약점을 알고 있다면 이슈를 열거나 취약점을 제출해 GitLab 어드바이저리 데이터베이스에 기여할 수 있습니다.
자세한 내용은 기여 가이드라인을 참고합니다.
라이선스#
GitLab 어드바이저리 데이터베이스는 GitLab 어드바이저리 데이터베이스 약관에 따라 자유롭게 이용할 수 있습니다.