지속적 취약점 스캔

Tier: Ultimate Offering: GitLab.com, Self-managed, GitLab Dedicated
  • 기능 플래그 dependency_scanning_on_advisory_ingestionpackage_metadata_advisory_scans 기본 활성화로 소개된 지속적 의존성 스캔.
  • GitLab 16.10에서 일반적으로 이용 가능. dependency_scanning_on_advisory_ingestionpackage_metadata_advisory_scans 기능 플래그 삭제.
  • GitLab 16.8에서 기능 플래그 이름이 container_scanning_continuous_vulnerability_scans인 지속적 컨테이너 스캔을 도입. 기본 비활성화.
  • GitLab 16.10에서 Self-managed 및 GitLab Dedicated에서 활성화.
  • GitLab 17.0에서 일반적으로 이용 가능. container_scanning_continuous_vulnerability_scans 기능 플래그 삭제.
  • GitLab 17.3에서 기능 플래그 이름이 dependency_scanning_using_sbom_reports인 의존성 스캔을 위한 새 구성 요소의 CVS 트리거링 도입. 기본 비활성화.
  • GitLab 17.4에서 기능 플래그 이름이 cvs_for_container_scanning인 컨테이너 스캔을 위한 새 구성 요소의 CVS 트리거링 도입. 기본 비활성화.
  • GitLab 17.5에서 Self-managed 및 GitLab Dedicated에서 활성화됨.

지속적 취약점 스캔은 프로젝트 종속성의 보안 취약점을 최신 보안 고지의 정보와 비교하여 찾습니다.

보안 고지가 추가되거나 업데이트되면, 지속적 취약점 스캔은 해당하는 프로젝트의 모든 구성 요소에서 스캔을 트리거링합니다. 고지가 종속성에 영향을 미치면, 지속적 취약점 스캔은 프로젝트에 취약점을 생성합니다.

지속적 취약점 스캔으로 생성된 취약점은 스캐너 이름으로 GitLab SBoM Vulnerability Scanner를 사용합니다.

CI 기반 보안 스캔과 달리, 지속적 취약점 스캔은 CI 파이프라인이 아닌 백그라운드 작업 (Sidekiq)을 통해 실행되며, 보안 보고서 artifact가 생성되지 않습니다.

전제조건

참고: 새 구성 요소가 감지되고 해당에 대한 고지가 이미 있으면, 취약점은 다음 중 하나만 참 사항인 경우에 생성됩니다:

이 기능의 지원은 에픽 8026에서 추적할 수 있습니다.

지원되는 패키지 유형

지속적 취약점 스캔은 다음 PURL 유형의 구성 요소를 지원합니다:

  • composer
  • conan
  • deb
  • gem
  • golang
  • maven
  • npm
  • nuget
  • pypi
  • rpm
  • apk

Go 가상 버전은 지원되지 않습니다. Go 가상 버전을 참조하는 프로젝트 종속성은 거짓 부정 결과가 발생할 수 있기 때문에 영향을 받지 않습니다.

^를 포함하는 RPM 버전은 지원되지 않습니다. 이러한 버전을 지원하기 위한 작업은 issue 459969에서 추적됩니다. 선행 0을 포함하는 APK 버전은 지원되지 않습니다. 이러한 버전을 지원하기 위한 작업은 issue 471509에서 추적됩니다.

Red Hat 배포의 RPM 패키지는 지원되지 않습니다. 이러한 사용 사례를 지원하기 위한 작업은 에픽 12980에서 추적됩니다.

CycloneDX SBOM 레포트 생성 방법

CycloneDX SBOM 레포트를 사용하여 프로젝트 구성 요소를 GitLab에 등록하세요.

GitLab은 다음과 같은 보고서를 생성할 수 있는 보안 분석 도구를 제공합니다. 이러한 보고서는 GitLab과 호환됩니다:

새 취약점 확인

지속적 취약점 스캔에서 감지된 새 취약점은 취약점 보고서에서 확인할 수 있습니다. 그러나 해당 취약점은 의존성 목록이나 영향을 받는 SBOM 구성 요소가 검출된 파이프라인 목록에 나열되지 않습니다.

보안 고지가 발행된 후, 해당 취약점을 프로젝트에 추가하는 데 몇 시간이 걸릴 수 있습니다. 지속적 취약점 스캔에서는 지난 14일 이내에 발행된 고지만을 고려합니다.

취약점이 더 이상 감지되지 않을 때

연속적인 취약점 스캔은 새로운 공고가 발표될 때 자동으로 새로운 취약점을 생성하지만 프로젝트에서 취약점이 더 이상 존재하지 않는지 알 수 없습니다. 따라서 GitLab은 여전히 기본 브랜치의 파이프라인에서 컨테이너 스캐닝이나 의존성 스캐닝 스캔을 실행하고 최신 정보가 포함된 해당 보안 보고서 아티팩트를 생성해야 합니다. 이러한 보고서가 처리되고 취약점이 더 이상 포함되지 않게 된 경우, 이러한 취약점은 연속적인 취약점 스캔으로 생성된 것임에도 불구하고 해당되지 않음으로 표시됩니다. 이 동작은 17.1에서 이슈 441490과 함께 도입되었으며 GitLab이 유지하는 스캐너(Trivy, gemnasium, gemnasium-python, gemnasium-maven)에 적용됩니다.

이 동작에 대한 개선 사항은 에픽 8026에서 업데이트된 SBOM만 업로드하는 것으로 변경될 예정입니다.

보안 고지

연속적인 취약점 스캔은 GitLab이 관리하는 서비스인 패키지 메타데이터 데이터베이스를 사용하며 이 데이터베이스는 라이선스 및 보안 고지 데이터를 집계하여 정기적으로 업데이트하여 GitLab.com 및 자체 관리형 인스턴스에서 사용됩니다.

GitLab.com에서는 GitLab이 동기화를 관리하며 모든 프로젝트에서 이용할 수 있습니다.

자체 관리형 GitLab에서는 GitLab 인스턴스의 관리자 영역에서 동기화할 패키지 레지스트리 메타데이터를 선택할 수 있습니다.

데이터 소스

보안 고지의 현재 데이터 소스는 다음과 같습니다:

취약점 데이터베이스에 기여하기

취약점을 찾으려면 GitLab 고지 데이터베이스에서 검색할 수 있습니다. 또한 새로운 취약점을 제출할 수도 있습니다.