취약점 위험 평가 데이터
GitLab v19.5요약
취약점 위험 데이터를 사용하여 사용자 환경에 미칠 수 있는 영향을 평가합니다. 이 데이터를 활용하여 수정 및 완화 조치의 우선순위를 정합니다. EPSS 점수는 CVE 카탈로그의 취약점이 앞으로 30일 안에 악용될 가능성을 추정한 값입니다.
취약점 위험 데이터를 사용하여 사용자 환경에 미칠 수 있는 영향을 평가합니다.
- 심각도: 각 취약점에는 표준화된 GitLab 심각도 값이 부여됩니다.
- Common Vulnerabilities and Exposures(CVE) 카탈로그에 등록된 취약점은
취약점 세부 정보 페이지 또는 GraphQL 쿼리로 다음 데이터를 가져올 수 있습니다.
- 악용 가능성: Exploit Prediction Scoring System(EPSS) 점수입니다.
- 알려진 악용 사례 존재 여부: Known Exploited Vulnerabilities(KEV) 상태입니다.
이 데이터를 활용하여 수정 및 완화 조치의 우선순위를 정합니다. 예를 들어 심각도가 Medium 이면서 EPSS 점수가 높은 취약점은 심각도가 High 이면서 EPSS 점수가 낮은 취약점보다 더 빨리 완화해야 할 수 있습니다.
EPSS#
히스토리
- GitLab 17.4에서
epss_querying(이슈 470835)와epss_ingestion(이슈 467672)이라는 기능 플래그와 함께 도입되었습니다. 기본적으로 비활성화되어 있습니다. - GitLab 17.6에서
cve_enrichment_querying및cve_enrichment_ingestion으로 이름이 바뀌고 GitLab.com에서 활성화되었습니다. - GitLab 17.7에서 일반 제공되었습니다. 기능 플래그
cve_enrichment_querying및cve_enrichment_ingestion은 제거되었습니다.
EPSS 점수는 CVE 카탈로그의 취약점이 앞으로 30일 안에 악용될 가능성을 추정한 값입니다. EPSS는 각 CVE에 0에서 1 사이의 점수(0% 에서 100% 에 해당)를 부여합니다.
KEV#
히스토리
- GitLab 17.7에서 도입되었습니다.
KEV 카탈로그는 실제로 악용된 것으로 알려진 취약점을 나열합니다. KEV 카탈로그에 있는 취약점은 다른 취약점보다 먼저 수정해야 합니다. 이 취약점을 이용한 공격이 이미 발생했고, 공격자가 악용 방법을 알고 있을 가능성이 높습니다.
도달 가능성#
히스토리
- GitLab 17.11에서 도입되었습니다.
도달 가능성은 취약한 패키지를 애플리케이션이 실제로 가져와 사용하는지 보여 줍니다. 코드가 직접 사용하는 패키지의 취약점은 사용하지 않는 의존성의 취약점보다 위험이 큽니다. 도달 가능한 취약점은 공격자가 악용할 수 있는 실제 노출 지점이므로, 이를 먼저 수정합니다.
자세한 내용은 정적 도달 가능성을 참고합니다.
위험 평가 데이터 쿼리#
GraphQL API를 사용하여 프로젝트 취약점의 심각도, EPSS, KEV 값을 조회합니다.
GraphQL API의 Vulnerability 유형에는 cveEnrichment 필드가 있으며, identifiers 필드에
CVE 식별자가 있으면 이 필드가 채워집니다. cveEnrichment 필드에는 해당 취약점의 CVE ID, EPSS
점수, KEV 상태가 들어 있습니다. EPSS 점수는 소수점 둘째 자리로 반올림됩니다.
예를 들어 다음 GraphQL API 쿼리는 지정한 프로젝트의 모든 취약점과 그 CVE ID, EPSS 점수,
KEV 상태(isKnownExploit)를 반환합니다. 이 쿼리는
GraphQL 탐색기 또는 다른 GraphQL
클라이언트에서 실행합니다.
{
project(fullPath: "<full/path/to/project>") {
vulnerabilities {
nodes {
severity
identifiers {
externalId
externalType
}
cveEnrichment {
epssScore
isKnownExploit
cve
}
reachability
}
}
}
}
출력 예시:
{
"data": {
"project": {
"vulnerabilities": {
"nodes": [
{
"severity": "CRITICAL",
"identifiers": [
{
"externalId": "CVE-2019-3859",
"externalType": "cve"
}
],
"cveEnrichment": {
"epssScore": 0.2,
"isKnownExploit": false,
"cve": "CVE-2019-3859"
}
"reachability": "UNKNOWN"
},
{
"severity": "CRITICAL",
"identifiers": [
{
"externalId": "CVE-2016-8735",
"externalType": "cve"
}
],
"cveEnrichment": {
"epssScore": 0.94,
"isKnownExploit": true,
"cve": "CVE-2016-8735"
}
"reachability": "IN_USE"
},
]
}
}
},
"correlationId": "..."
}
Vulnerability Prioritizer#
Vulnerability Prioritizer CI/CD 컴포넌트를 사용하여 프로젝트 취약점(주로 CVE)의 우선순위를 정합니다. 이 컴포넌트는 vulnerability-prioritizer job의 출력에 우선순위 보고서를 남깁니다.
취약점은 다음 순서로 나열됩니다.
- 악용 사례가 알려진 취약점(KEV)이 최우선입니다.
- EPSS 점수가 높을수록(1에 가까울수록) 우선합니다.
- 심각도는
Critical에서Low순으로 정렬됩니다.
Vulnerability Prioritizer CI/CD 컴포넌트는 Common Vulnerabilities and Exposures(CVE) 레코드에만 있는 데이터를 사용하므로, 의존성 스캔과 컨테이너 스캔으로 탐지된 취약점만 포함합니다. 또한 탐지됨(Needs triage) 및 확인됨 상태의 취약점만 표시됩니다.
Vulnerability Prioritizer CI/CD 컴포넌트를 프로젝트 CI/CD 파이프라인에 추가하는 방법은 Vulnerability Prioritizer 문서를 참고합니다.