- 파이프라인의 취약점 보기
- 스캔 세부 정보
- 보안 스캔 결과 다운로드
- 스캔 결과
- 차단된 또는 불완전한 상태의 파이프라인에서의 보안 보고서
- 검색 결과의 보유 기간
- 검색 결과의 상태 변경
- 중복 제거 프로세스
파이프라인의 취약점
모든 활성화된 보안 분석기가 파이프라인에서 실행되고 결과물을 artifacts로 출력합니다. 이러한 artifacts는 중복 제거를 포함한 처리가 이루어지며 결과는 파이프라인 보안 탭에 나열됩니다. 파이프라인에서 취약성 검색을 식별함으로써 위험을 예방할 수 있습니다.
파이프라인 보안 탭에는 다음과 같은 기준이 적용됩니다:
- 성공한 보안 스캔 작업의 결과만 표시됩니다. 예를 들어, 파이프라인에 SAST 및 DAST 작업이 포함되어 있지만 DAST 작업이 실패한 경우 SAST 결과만 표시됩니다.
- 파이프라인에 차단 매뉴얼 작업이 있는 경우, 파이프라인은 매뉴얼 작업을 기다리며 차단 매뉴얼 작업이 실행되지 않은 경우 취약성을 표시할 수 없습니다.
- 검색 결과에는 만료 기간이 존재합니다. 만료된 결과는 파이프라인 보안 탭에 표시되지 않습니다. 자세한 내용은 검색 결과의 보유 기간을 참조하십시오.
파이프라인의 취약점 보기
파이프라인에서 취약점을 보려면 다음 단계를 따르세요:
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
- 빌드 > 파이프라인을 선택합니다.
- 파이프라인을 선택합니다.
- 보안 탭을 선택합니다.
스캔 세부 정보
스캔 세부 정보 섹션에는 파이프라인의 취약성 검색 결과와 소스 보고서의 요약이 표시됩니다.
GitLab은 파이프라인에 있는 스캔 유형 artifacts 각각에 대해 한 줄의 정보를 표시합니다.
보안 스캔 결과 다운로드
보안 스캐너의 유형에 따라 다음을 다운로드할 수 있습니다:
- 보안 스캐너 보고서가 포함된 JSON artifact입니다.
- 보안 스캐너에 의해 스캔된 URL 및 엔드포인트가 포함된 CSV 파일입니다.
보안 스캔 결과를 다운로드하려면:
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
- 빌드 > 파이프라인를 선택합니다.
- 파이프라인을 선택합니다.
- 보안 탭을 선택합니다.
-
스캔 세부 정보에서 결과 다운로드를 선택하세요:
- JSON 파일을 다운로드하려면 JSON artifact를 선택합니다.
- CSV 파일을 다운로드하려면 스캔된 리소스 다운로드를 선택합니다.
스캔 결과
소스 브랜치에 있는 검색 결과는 심각도에 따라 내림차순으로 나열됩니다. 검색 결과 디렉터리을 심각도 및 도구로 필터링하고 GitLab 외부에서 분석을 위해 보안 스캔 결과를 다운로드할 수 있습니다.
무시된 검색 결과는 기본적으로 숨겨집니다. 이러한 검색 결과를 보려면 무시된 결과 숨기기 토글을 끄세요.
각 검색 결과에 대해 다음을 수행할 수 있습니다:
- 검색 결과에 대해 자세히 알아보기.
- 검색 결과에 대한 이슈 생성.
- 검색 결과를 무시하기.
Merge Request 브랜치를 대상 브랜치로 Merge하는 경우 모든 보고된 검색 결과는 취약점 보고서에 포함됩니다. 기본 브랜치에서 실행된 파이프라인의 스캔 결과는 파이프라인 완료 후 다음 표에 따라 통합됩니다:
기존 취약성 상태 | 파이프라인에서 무시됨? | 새로운 취약성 상태 |
---|---|---|
모든 | 예 | 무시됨 |
무시됨 | 모든 | 무시됨 |
확인됨 | 아니요 | 확인됨 |
처리 필요(감지됨) | 아니요 | 처리 필요(감지됨) |
해결됨 | 아니요 | 처리 필요(감지됨) |
N/A(새로운 취약성) | 아니요 | 처리 필요(감지됨) |
차단된 또는 불완전한 상태의 파이프라인에서의 보안 보고서
파이프라인 상태 | 파이프라인 완료 | 어떤 취약성이 표시되나요? 1 |
---|---|---|
성공 | 완료 | ✅ 파이프라인의 모든 취약성 결과 표시됨. |
실패 | 완료 | ✅ 실패하지 않은 작업에 대한 취약성 결과 표시됨, ❌ 실패한 작업에 대한 취약성 결과 표시 안됨. |
차단 2 | 완료 | ✅ 파이프라인이 매뉴얼 작업에 의해 차단된 경우에도 모든 취약성 결과 표시됨. |
주석:
- 이러한 결과는 Merge Request 보안 위젯, 파이프라인 보안 탭, 취약점 보고서, 기본 브랜치로 Merge된 경우 의존성 디렉터리에 표시됩니다.
- 16.10 이전의 GitLab에서는 모든 파이프라인 작업이 완료된 후에만 스캔 결과를 수용했습니다. 16.10부터는 매뉴얼 작업에 의해 차단된 경우에도 파이프라인이 스캔 결과를 수용합니다.
검색 결과의 보유 기간
- GitLab 15.5에 도입.
검색 결과는 다음과 같은 경우에 더 이상 사용할 수 없습니다:
- 관련 CI 작업 artifacts의 만료일이 지난 경우.
- 파이프라인 생성 후 90일이 지난 경우, 심지어 관련 CI 작업 artifacts이 잠겨 있더라도.
결과를 보려면 다음 중 하나를 수행하세요:
- 새로운 파이프라인을 실행합니다.
- 관련 CI 작업 artifacts이 있는 경우 다운로드합니다.
검색 결과의 상태 변경
- GitLab 16.7에 도입되었습니다. 기본적으로 비활성화됨.
플래그: Self-managed GitLab에서는 기본적으로 이 기능을 사용할 수 없습니다. 사용하려면 관리자가 파이프라인 보안 대시보드 GraphQL라는 피처 플래그를 활성화해야 합니다. GitLab.com 및 GitLab Dedicated에서는 이 기능을 사용할 수 없습니다.
결과의 상태를 무시 또는 처리 필요로 변경하려면:
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
- 빌드 > 파이프라인를 선택합니다.
- 파이프라인을 선택하고 보안 탭을 선택합니다.
- 선택하세요:
- 하나 이상의 결과는 각각의 결과 옆의 확인란을 선택합니다.
- 페이지 상단의 확인란을 선택하여 페이지에서 모든 결과를 선택합니다.
- 상태 설정 드롭다운 디렉터리에서 원하는 상태를 선택합니다.
- 무시 상태를 선택한 경우, 무시 사유 설정 드롭다운 디렉터리에서 원하는 이유를 선택합니다.
- 의견 추가 입력란에서 의견을 제공할 수 있습니다. 무시 상태인 경우 의견이 필요합니다.
- 상태 변경을 선택합니다.
선택한 결과의 상태가 업데이트되며 보안 탭의 내용이 새로고침됩니다.
중복 제거 프로세스
파이프라인에는 동일한 유형의 여러 보안 보고서를 생성하는 작업이 포함될 수 있습니다. 여러 보고서에서 동일한 취약점 검색 결과가 나타날 수 있습니다. 이중제거 프로세스(deduplication process)는 다양한 스캐너를 사용하여 커버리지를 늘리는 경우에 발생할 수 있는데, 하나의 보고서에서도 발생할 수 있습니다. 이중제거 프로세스를 통해 취약성 스캔 범위를 최대화하고 관리해야 하는 결과 수를 줄일 수 있습니다.
다른 스캐너를 사용하여 커버리지를 높일 때 또는 단일 보고서에서도 반복이 발생할 수 있습니다. 취약점의 위치, 스캔 유형 및 하나 이상의 식별자가 동일할 때 동일한 취약점 검색 결과는 중복으로 간주됩니다.
스캔 유형이 일치해야 하는 이유는 각각이 취약점의 위치에 대한 정의를 가질 수 있기 때문입니다. 예를 들어 정적 분석기는 파일 경로와 줄 번호를 찾을 수 있지만, 컨테이너 스캔 분석기는 이미지 이름을 사용합니다.
식별자를 비교할 때 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
그러나 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
는 서로 다르게 간주됩니다.