취약점 심각도 수준

Tier: Ultimate Offering: GitLab.com, Self-Managed형, GitLab Dedicated

GitLab 취약점 분석기는 가능한 경우 취약점 심각도 수준 값을 반환하려고 노력합니다. 다음은 사용 가능한 GitLab 취약점 심각도 수준 디렉터리입니다. 가장 심각한 것부터 가장 적은 심각한 것까지 순위가 매겨져 있습니다:

  • Critical
  • High
  • Medium
  • Low
  • Info
  • Unknown

GitLab 분석기는 아래의 심각도 설명에 맞추려고 노력하지만 항상 올바른 것은 아닙니다. 제3자 공급 업체가 제공하는 분석기와 스캐너는 동일한 분류를 따르지 않을 수 있습니다.

Critical 심각도

Critical 심각도 수준에서 식별된 취약점은 즉시 조사되어야 합니다. 이 수준의 취약점은 해당 결함을 악용할 수 있음에 따라 전체 시스템 또는 데이터가 손상될 수 있다고 가정합니다. Critical 심각도의 예는 명령/코드 삽입 및 SQL 삽입 등입니다. 보통 이러한 결함들은 CVSS 3.1 기준으로 9.0-10.0 사이로 평가됩니다.

High 심각도

High 심각도의 취약점은 응용 프로그램 리소스에 대한 악의적인 액세스 또는 의도하지 않은 데이터 노출로 이어질 수 있는 결함으로 설명될 수 있습니다. High 심각도의 예는 외부 XML 엔티티 삽입 (XXE), 서버 사이드 요청 위조 (SSRF), 로컬 파일 포함/경로 순회 및 특정 형태의 Cross-Site Scripting (XSS)입니다. 보통 이러한 결함들은 CVSS 3.1 기준으로 7.0-8.9 사이로 평가됩니다.

Medium 심각도

중간 심각도의 취약점은 보안 시스템 설정 오류나 부재로 인해 발생하는 경우가 일반적입니다. 이러한 취약점의 악용은 제한된 양의 데이터에 액세스하거나 다른 결함과 함께 사용되어 의도하지 않은 시스템 또는 리소스 액세스에 사용될 수 있습니다. 중간 심각도의 예는 반사형 XSS, 올바르지 않은 HTTP 세션 처리 및 보안 제어 부재 등입니다. 보통 이러한 결함들은 CVSS 3.1 기준으로 4.0-6.9 사이로 평가됩니다.

Low 심각도

낮은 심각도의 취약점은 직접 악용될 수 없지만 응용 프로그램이나 시스템에 불필요한 취약점을 도입하는 경우가 있습니다. 이러한 결함들은 일반적으로 보안 제어가 부재하거나 응용 프로그램 환경에 대해 불필요한 정보를 노출하는 것에 기인합니다. 낮은 심각도 취약점의 예는 쿠키 보안 지시문 부재, 상세한 오류 또는 예외 메시지 등입니다. 보통 이러한 결함들은 CVSS 3.1 기준으로 0.1-3.9 사이로 평가됩니다.

Info 심각도

Info 수준의 심각도 취약점은 가치가 있을 수 있지만 특정 결함이나 취약점에 반드시 연관되지는 않습니다. 일반적으로 이러한 문제들은 CVSS 등급이 없을 수 있습니다.

Unknown 심각도

이 수준에서 식별된 문제는 심각도를 명확하게 나타내기에는 충분한 컨텍스트가 없습니다.

GitLab 취약점 분석기에는 인기 있는 오픈 소스 스캔 도구가 포함되어 있습니다. 각 오픈 소스 스캔 도구는 고유의 취약점 심각도 수준 값을 제공합니다. 이러한 값은 다음 중 하나일 수 있습니다:

고유 취약점 심각도 수준 유형 예시
문자열 WARNING, ERROR, Critical, Negligible
정수 1, 2, 5
CVSS v2.0 등급 (AV:N/AC:L/Au:S/C:P/I:P/A:N)
CVSS v3.1 질적 심각도 등급 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H

일관된 취약점 심각도 수준 값을 제공하기 위해 GitLab 취약점 분석기는 위의 값에서 표준화된 GitLab 취약점 심각도 수준으로 변환합니다. 이에 관한 자세한 내용은 trivy 이슈에서 확인할 수 있습니다.

컨테이너 스캐닝

GitLab 분석기 심각도 수준 반환 여부 고유 심각도 수준 유형 고유 심각도 수준 예시
container-scanning 문자열 Unknown, Low, Medium, High, Critical

가능한 경우 공급 업체 심각도 수준이 우선하여 분석기에서 사용됩니다. 사용할 수 없는 경우에는 CVSS v3.1 등급으로 되돌아가며, 그것도 사용할 수 없는 경우에는 대신 CVSS v2.0 등급이 사용됩니다. 이에 대한 자세한 구현 내용은 trivy 이슈에서 확인할 수 있습니다.

DAST

GitLab 분석기 심각도 수준 반환 여부 고유 심각도 수준 유형 고유 심각도 수준 예시
브라우저 기반 DAST 문자열 HIGH, MEDIUM, LOW, INFO

API 보안 테스트

GitLab 분석기 심각도 수준 반환 여부 고유 심각도 수준 유형 고유 심각도 수준 예시
API 보안 테스트 문자열 HIGH, MEDIUM, LOW

의존성 스캐닝

GitLab 분석기 심각도 수준 반환 여부 고유 심각도 수준 유형 고유 심각도 수준 예시
gemnasium CVSS v2.0 등급 및 CVSS v3.1 질적 심각도 등급 1 (AV:N/AC:L/Au:S/C:P/I:P/A:N), CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H

취약점 심각도를 계산하는 데는 CVSS v3.1 등급이 사용됩니다. 사용할 수 없는 경우에는 CVSS v2.0 등급이 대신 사용됩니다.

Fuzz 테스트

모든 fuzz 테스트 결과에 대해 Unknown으로 보고됩니다. 악용 가능한 결함을 찾아 수정 우선순위를 정하려면 매뉴얼으로 검토 및 추적해야 합니다.

SAST

GitLab 분석기 심각도 수준 반환 여부 고유 심각도 수준 유형 고유 심각도 수준 예시
security-code-scan 문자열 analyzer 버전 3.2.0 이후 에서 CRITICAL, HIGH, MEDIUM. 이전 버전에서는 Unknown에 하드코딩됨.
brakeman 문자열 HIGH, MEDIUM, LOW
sobelow 해당 없음 모든 심각도 수준을 Unknown에 하드코딩함
nodejs-scan 문자열 INFO, WARNING, ERROR
flawfinder 정수 0, 1, 2, 3, 4, 5
SpotBugs 정수 1, 2, 3, 11, 12, 18
phpcs-security-audit 문자열 ERROR, WARNING
pmd-apex 정수 1, 2, 3, 4, 5
kubesec 문자열 CriticalSeverity, InfoSeverity
secrets 해당 없음 모든 심각도 수준을 Critical에 하드코딩함
semgrep 문자열 error, warning, note, none
kics 문자열 error, warning, note, none (analyzer 버전 3.7.0 이후에서 info로 매핑됨)