- 파이프라인의 취약점 보기
- 스캔 세부 정보
- 보안 스캔 결과 다운로드
- 스캔 결과
- 차단 또는 불완전한 상태의 파이프라인에서의 보안 보고서
- 발견물 보유 기간
- 발견물의 상태 변경
- 중복 제거 프로세스
- 문제 해결
파이프라인의 취약점
상세 정보: Tier: Ultimate Offering: GitLab.com, 자체관리, GitLab Dedicated
모든 활성화된 보안 분석기가 파이프라인에서 실행되고 그 결과가 artifacts로 출력됩니다. 이러한 artifacts는 중복 제거를 포함하여 처리되며 결과는 파이프라인의 보안 탭에 나열됩니다. 파이프라인에서 취약점을 식별함으로써 사전에 위험에 대처할 수 있습니다.
다음 기준이 파이프라인 보안 탭에 적용됩니다:
- 성공적인 보안 스캔 작업의 결과만 표시됩니다. 예를 들어, 파이프라인에 SAST 및 DAST 작업이 포함되지만 DAST 작업이 실패하는 경우 SAST 결과만 표시됩니다.
- 발견물에는 만료 기간이 있습니다. 만료된 발견물은 파이프라인 보안 탭에 표시되지 않습니다. 자세한 내용은 발견물 보유 기간을 참조하십시오.
파이프라인의 취약점 보기
파이프라인의 취약점을 보려면:
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
- 빌드 > 파이프라인을 선택합니다.
- 파이프라인을 선택합니다.
- 보안 탭을 선택합니다.
스캔 세부 정보
스캔 세부 정보 섹션에는 파이프라인의 취약점 발견에 대한 요약과 소스 보고서가 표시됩니다.
GitLab은 파이프라인에 존재하는 각 스캔 유형 artifacts에 대해 한 줄의 정보를 표시합니다.
보안 스캔 결과 다운로드
보안 스캐너 유형에 따라 다음을 다운로드할 수 있습니다:
- 보안 스캐너 보고서를 포함하는 JSON artifact.
- 보안 스캐너에 의해 스캔된 URL 및 엔드포인트를 포함하는 CSV 파일.
보안 스캔 결과를 다운로드하려면:
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
- 빌드 > 파이프라인을 선택합니다.
- 파이프라인을 선택합니다.
- 보안 탭을 선택합니다.
-
스캔 세부 정보에서 결과 다운로드를 선택하십시오:
- JSON 파일을 다운로드하려면 JSON artifact를 선택하십시오.
- CSV 파일을 다운로드하려면 스캔된 리소스 다운로드를 선택하십시오.
스캔 결과
소스 브랜치에 존재하는 발견물은 심각도의 내림차순으로 나열됩니다. 심각도 및 도구별로 목록을 필터링하거나 결과를 GitLab 외부에서 분석하기 위해 보안 스캔 결과를 다운로드할 수 있습니다.
미사용으로 처리된 발견물은 기본적으로 숨겨집니다. 이러한 발견물을 보려면 숨김 해제 토글을 끄십시오.
각 발견물에 대해 다음을 수행할 수 있습니다:
- 발견물에 대한 자세한 정보 확인.
- 발견물에 대한 이슈 생성.
- 발견물을 무시하도록 처리.
병합 요청 브랜치를 대상 브랜치로 병합할 때 기존 파이프라인에서 보고된 모든 발견물이 취약점 보고서에 표시됩니다. 기본 브랜치에서 실행되는 파이프라인의 스캔 결과는 다음 표에 따라 파이프라인 완료 후 통합됩니다:
기존 취약점 상태 | 파이프라인 보안 탭에서 숨겨집니다? | 새로운 취약점 상태 |
---|---|---|
예 | 무시됨 | |
무시됨 | 무시됨 | |
확인됨 | 아니요 | 확인됨 |
진단 필요 (감지됨) | 아니요 | 진단 필요 (감지됨) |
해결됨 | 아니요 | 진단 필요 (감지됨) |
N/A (새로운 취약점) | 아니요 | 진단 필요 (감지됨) |
차단 또는 불완전한 상태의 파이프라인에서의 보안 보고서
- GitLab 16.10에 소개, 기본값으로 활성화된
include_manual_to_pipeline_completion
플래그로 추가됨.
파이프라인 상태 | 파이프라인 완료 | 어떤 취약점이 표시됩니까? |
---|---|---|
성공 | 완료 | ✅ 파이프라인의 모든 취약점 발견 표시 |
실패 | 완료 | ✅ 실패하지 않는 작업의 취약점 발견 표시, ❌ 실패하는 작업의 취약점 발견 표시하지 않음. |
차단됨 | 완료 | ✅ 수동 작업에 의해 차단된 파이프라인의 모든 취약점 발견 표시 |
발견물 보유 기간
GitLab 15.5에서 도입.
다음 경우에 발견물이 더 이상 사용할 수 없습니다:
- 관련 CI 작업 artifacts의 만료.
- 파이프라인이 생성된 후 90일이 경과하면 관련 CI 작업 artifacts가 잠겨 있더라도 사용할 수 없습니다.
발견물을 보려면 다음 중 하나를 수행하십시오:
- 새로운 파이프라인 실행.
- 관련 CI 작업 artifacts를 다운로드합니다(사용 가능한 경우).
참고: 이는 기본 브랜치에 존재하는 취약점에는 적용되지 않습니다.
발견물의 상태 변경
발견물의 상태를 무시 또는 진단 필요로 변경하려면:
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
- 빌드 > 파이프라인을 선택합니다.
- 파이프라인을 선택하고 보안 탭을 선택합니다.
- 다음 중 하나를 선택하십시오:
- 하나 이상의 발견물을 선택하려면 각 발견물 옆의 확인란을 선택하십시오.
- 페이지에서 모든 발견물을 선택하려면 테이블 머리글의 확인란을 선택하십시오.
- 상태 설정 드롭다운 목록에서 원하는 상태를 선택하십시오.
- 무시 상태를 선택하면 무시 사유 설정 드롭다운 목록에서 원하는 이유를 선택하십시오.
- 코멘트 추가 입력란에 코멘트를 제공할 수 있습니다. 무시 상태의 경우 코멘트는 필요합니다.
- 상태 변경을 선택하십시오.
선택한 발견물의 상태가 업데이트되고 보안 탭의 내용이 새로고침됩니다.
중복 제거 프로세스
파이프라인에 여러 보안 보고서를 생성하는 작업이 포함된 경우, 동일한 취약점 발견이 여러 보고서에 중복으로 나타날 수 있습니다. 이 중복은 다양한 스캐너를 사용하여 커버리지를 늘리는 경우에 흔하지만, 단일 보고서에서도 발생할 수 있습니다. 중복 제거 프로세스를 통해 취약성 스캔 커버리지를 극대화하고 관리해야 할 발견 수를 줄일 수 있습니다.
취약점 발견은 다음 항목 중 하나 이상이 동일할 때 다른 발견의 중복으로 간주됩니다: 스캔 유형, 위치, 그리고 하나 이상의 식별자.
스캔 유형이 일치해야 하므로, 각각 취약점의 위치를 정의하는 자체 정의를 가질 수 있습니다. 예를 들어 정적 분석기는 파일 경로와 줄 번호를 찾을 수 있지만, 컨테이너 스캔 분석기는 대신 이미지 이름을 사용합니다.
식별자를 비교할 때 GitLab은 중복 제거 중 CWE
와 WASC
를 비교하지 않습니다. 이는 이러한 식별자가 “유형 식별자”로 사용되어 취약점 그룹을 분류하기 때문입니다. 이러한 식별자를 포함하면 많은 발견이 잘못된 중복으로 간주됩니다. 두 발견이 고유하게 간주되려면 식별자가 일치하지 않아야 합니다.
중복된 발견 집합에서 첫 번째 발견이 유지되고 나머지는 건너뜁니다. 보안 보고서는 알파벳순으로 파일 경로가 처리되며, 발견은 보고서에 나타나는 순서대로 순차적으로 처리됩니다.
중복 제거 예시
- 예시 1: 식별자 및 위치는 일치하지만 스캔 유형이 일치하지 않는 경우.
- 발견
- 스캔 유형:
sast
- 위치 지문:
adc83b19e793491b1c6ea0fd8b46cd9f32e592fc
- 식별자: CVE-2022-25510
- 스캔 유형:
- 다른 발견
- 스캔 유형:
secret_detection
- 위치 지문:
adc83b19e793491b1c6ea0fd8b46cd9f32e592fc
- 식별자: CVE-2022-25510
- 스캔 유형:
- 중복 제거 결과: 스캔 유형이 다르기 때문에 중복이 아님.
- 발견
- 예시 2: 위치와 스캔 유형은 일치하지만 유형 식별자가 일치하지 않는 경우.
- 발견
- 스캔 유형:
sast
- 위치 지문:
adc83b19e793491b1c6ea0fd8b46cd9f32e592fc
- 식별자: CWE-259
- 스캔 유형:
- 다른 발견
- 스캔 유형:
sast
- 위치 지문:
adc83b19e793491b1c6ea0fd8b46cd9f32e592fc
- 식별자: CWE-798
- 스캔 유형:
- 중복 제거 결과:
CWE
식별자가 무시되므로 중복됨.
- 발견
- 예시 3: 스캔 유형, 위치, 식별자 중 일치하는 경우.
- 발견
- 스캔 유형:
container_scanning
- 위치 지문:
adc83b19e793491b1c6ea0fd8b46cd9f32e592fc
- 식별자: CVE-2019-12345, CVE-2022-25510, CWE-259
- 스캔 유형:
- 다른 발견
- 스캔 유형:
container_scanning
- 위치 지문:
adc83b19e793491b1c6ea0fd8b46cd9f32e592fc
- 식별자: CVE-2022-25510, CWE-798
- 스캔 유형:
- 중복 제거 결과: 모든 기준이 일치하고 유형 식별자가 무시되므로 중복됨. 이 경우에는 CVE-2022-25510만 일치해도 됨.
- 발견
각 스캔 유형에 대한 정의는 gitlab/lib/gitlab/ci/reports/security/locations
및 gitlab/ee/lib/gitlab/ci/reports/security/locations
에서 찾을 수 있습니다.
예를 들어, container_scanning
유형의 경우 이미지 이름으로 위치가 정의됩니다. 그러나 이미지 태그에 하나 이상의 문자가 포함되거나 8자보다 길 경우 중복이 아닌 것으로 간주됩니다. 따라서 registry.gitlab.com/group-name/project-name/image1:12345019:libcrypto3
와 registry.gitlab.com/group-name/project-name/image1:libcrypto3
는 동일하게 처리되지만, registry.gitlab.com/group-name/project-name/image1:v19202021:libcrypto3
와 registry.gitlab.com/group-name/project-name/image1:libcrypto3
는 다르게 간주됩니다.
문제 해결
감지된 취약점이 가끔 여전히 표시됨
일부 경우에는 GitLab 16.8 및 이전 버전에서 감지된 취약점이 가끔 여전히 표시될 수 있습니다. 이는 GitLab 16.9 이상으로 업그레이드하여 해결할 수 있습니다.
보고서 구문 분석 및 스캔 흡수 오류
참고: 이러한 단계는 GitLab 지원팀이 이러한 오류를 재현하기 위해 사용해야 합니다.
일부 보안 스캔은 보고서 구문 분석이나 스캔 흡수와 관련된 파이프라인의 Security 탭에서 오류가 발생할 수 있습니다. 사용자로부터 프로젝트의 사본을 얻을 수 없는 경우, 스캔에서 생성된 보고서를 사용하여 오류를 재현할 수 있습니다.
오류를 재현하려면:
- 사용자로부터 보고서의 사본을 얻습니다. 이 예에서는
gl-sast-report.json
. - 프로젝트를 만듭니다.
- 보고서를 저장소에 커밋합니다.
-
.gitlab-ci.yml
파일을 추가하고 해당 보고서를 작업의 artifact로 추가하세요.예를 들어, SAST 작업에 의한 오류를 재현하려면:
sample-job: script: - echo "보고서 테스트" artifacts: reports: sast: gl-sast-report.json
- 파이프라인이 완료된 후 Security 탭의 내용을 확인합니다.
sast: gl-sast-report.json
를 생성된 보고서에 따라 적절한 JSON 보고서 파일명과 해당 artifacts:reports
유형으로 대체할 수 있습니다.