InfoGrab DocsInfoGrab Docs

지속적 컨테이너 스캐닝

요약

GitLab 16.10에서 GitLab Self-Managed 및 GitLab Dedicated에서 활성화됨. GitLab 17.0에서 일반적으로 사용 가능해짐. 컨테이너 스캐닝을 위한 지속적 취약점 스캐닝(CVS)은 새 파이프라인을 실행하지 않고도 최신 보안 어드바이저리의 정보와 컴포넌트 이름 및 버전을 비교하여 프로젝트 이미지 의존성의 보안 취약점을 탐지합니다.

히스토리
  • GitLab 16.8에서 container_scanning_continuous_vulnerability_scans라는 플래그와 함께 지속적 컨테이너 스캐닝이 도입됨. 기본적으로 비활성화됨.

컨테이너 스캐닝을 위한 지속적 취약점 스캐닝(CVS)은 새 파이프라인을 실행하지 않고도 최신 보안 어드바이저리의 정보와 컴포넌트 이름 및 버전을 비교하여 프로젝트 이미지 의존성의 보안 취약점을 탐지합니다. CVS는 기본 브랜치에 저장된 CycloneDX SBOM 보고서를 사용하여 프로젝트에서 사용 중인 컴포넌트를 파악합니다. 이 SBOM을 생성하려면 기본 브랜치에서 컨테이너 스캐닝 job이 최소 한 번 실행되어야 합니다. 이후 CVS는 추가 파이프라인 실행 없이 해당 컴포넌트에 대해 새로 게시된 어드바이저리를 자동으로 탐지합니다. 이미지 콘텐츠가 변경되면 CVS가 업데이트된 컴포넌트 집합을 평가할 수 있도록 기본 브랜치에서 새 파이프라인을 실행하여 SBOM을 갱신해야 합니다. 대부분의 프로젝트에서는 의존성 변경 시 코드 변경을 수반하여 파이프라인이 이미 트리거되므로, 이는 일반적인 워크플로의 일부로 처리됩니다.

지속적 취약점 스캐닝이 지원되는 패키지 유형의 컴포넌트를 포함하는 모든 프로젝트에 대해 스캔을 트리거하면 새로운 취약점이 발생할 수 있습니다.

컨테이너 스캐닝을 위한 지속적 취약점 스캐닝이 생성한 취약점은 스캐너 이름으로 GitLab SBoM Vulnerability Scanner를, 취약점 유형으로 Container Scanning을 사용합니다.

CI/CD 기반 보안 스캔과 달리, 지속적 취약점 스캐닝은 CI/CD 파이프라인이 아닌 백그라운드 job(Sidekiq)을 통해 실행되며, 보안 보고서 아티팩트는 생성되지 않습니다.

사전 요구 사항#

지원되는 패키지 유형#

지속적 취약점 스캐닝은 다음 PURL 유형의 컴포넌트를 지원합니다:

  • apk

  • deb

  • rpm

알려진 제한 사항:

  • 선행 0이 포함된 APK 버전은 지원되지 않습니다. 이 버전 지원을 위한 작업은 이슈 471509에서 추적 중입니다.

  • ^가 포함된 RPM 버전은 지원되지 않습니다. 이 버전 지원을 위한 작업은 이슈 459969에서 추적 중입니다.

  • Red Hat 배포판의 RPM 패키지는 지원되지 않습니다. 이 사용 사례 지원을 위한 작업은 에픽 12980에서 추적 중입니다.

CycloneDX SBOM 보고서 생성 방법#

CycloneDX SBOM 보고서를 사용하여 프로젝트 컴포넌트를 GitLab에 등록하세요.

CycloneDX 보고서는 다음 사항을 준수해야 합니다:

GitLab은 GitLab 호환 보고서를 생성할 수 있는 보안 분석기를 제공합니다:

새로운 취약점 확인#

지속적 취약점 스캐닝이 탐지한 새로운 취약점은 취약점 보고서에서 확인할 수 있습니다. 단, 영향을 받는 SBOM 컴포넌트가 탐지된 파이프라인에는 해당 취약점이 나열되지 않습니다.

보안 어드바이저리가 추가되거나 업데이트된 후 취약점이 생성되며, 코드베이스가 변경되지 않는 경우 해당 취약점이 프로젝트에 추가되기까지 몇 시간이 소요될 수 있습니다. 지속적 취약점 스캐닝에는 최근 14일 이내에 게시된 어드바이저리만 고려됩니다.

취약점이 더 이상 탐지되지 않는 경우#

지속적 취약점 스캐닝은 새 어드바이저리가 게시되면 자동으로 취약점을 생성하지만, 프로젝트에서 취약점이 더 이상 존재하지 않는 시점은 감지하지 못합니다. 이를 위해 GitLab은 기본 브랜치에 대한 파이프라인에서 컨테이너 스캐닝을 실행하고, 최신 정보로 보안 보고서 아티팩트를 생성해야 합니다. 이 보고서가 처리될 때 일부 취약점이 더 이상 포함되어 있지 않으면, 지속적 취약점 스캐닝을 통해 생성된 취약점이더라도 해당 상태로 표시됩니다.

Note

레지스트리용 컨테이너 스캐닝을 통해 탐지된 취약점은 이 방법으로 해결할 수 없으며, 이미지에서 수정하더라도 계속 표시됩니다. 이는 레지스트리용 컨테이너 스캐닝이 보안 보고서가 아닌 SBOM만 생성하기 때문입니다. 취약점을 해결된 것으로 표시하려면 보안 보고서가 필요합니다.

보안 어드바이저리#

지속적 취약점 스캐닝은 GitLab이 관리하는 서비스인 패키지 메타데이터 데이터베이스(Package Metadata Database)를 사용합니다. 이 서비스는 라이선스 및 보안 어드바이저리 데이터를 수집하고, GitLab.com 및 GitLab Self-Managed 인스턴스에서 사용하는 업데이트를 정기적으로 게시합니다.

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

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

데이터 소스#

보안 어드바이저리의 현재 데이터 소스에는 다음이 포함됩니다:

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

취약점을 찾으려면 원시 데이터가 포함된 Aqua Security의 vuln-list 리포지터리를 검색할 수 있습니다. 또한 Trivy-DB에 기여할 수도 있습니다.

지속적 컨테이너 스캐닝

GitLab v19.1
Tier: Ultimate
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
원문 보기
요약

GitLab 16.10에서 GitLab Self-Managed 및 GitLab Dedicated에서 활성화됨. GitLab 17.0에서 일반적으로 사용 가능해짐. 컨테이너 스캐닝을 위한 지속적 취약점 스캐닝(CVS)은 새 파이프라인을 실행하지 않고도 최신 보안 어드바이저리의 정보와 컴포넌트 이름 및 버전을 비교하여 프로젝트 이미지 의존성의 보안 취약점을 탐지합니다.

히스토리
  • GitLab 16.8에서 container_scanning_continuous_vulnerability_scans라는 플래그와 함께 지속적 컨테이너 스캐닝이 도입됨. 기본적으로 비활성화됨.

컨테이너 스캐닝을 위한 지속적 취약점 스캐닝(CVS)은 새 파이프라인을 실행하지 않고도 최신 보안 어드바이저리의 정보와 컴포넌트 이름 및 버전을 비교하여 프로젝트 이미지 의존성의 보안 취약점을 탐지합니다. CVS는 기본 브랜치에 저장된 CycloneDX SBOM 보고서를 사용하여 프로젝트에서 사용 중인 컴포넌트를 파악합니다. 이 SBOM을 생성하려면 기본 브랜치에서 컨테이너 스캐닝 job이 최소 한 번 실행되어야 합니다. 이후 CVS는 추가 파이프라인 실행 없이 해당 컴포넌트에 대해 새로 게시된 어드바이저리를 자동으로 탐지합니다. 이미지 콘텐츠가 변경되면 CVS가 업데이트된 컴포넌트 집합을 평가할 수 있도록 기본 브랜치에서 새 파이프라인을 실행하여 SBOM을 갱신해야 합니다. 대부분의 프로젝트에서는 의존성 변경 시 코드 변경을 수반하여 파이프라인이 이미 트리거되므로, 이는 일반적인 워크플로의 일부로 처리됩니다.

지속적 취약점 스캐닝이 지원되는 패키지 유형의 컴포넌트를 포함하는 모든 프로젝트에 대해 스캔을 트리거하면 새로운 취약점이 발생할 수 있습니다.

컨테이너 스캐닝을 위한 지속적 취약점 스캐닝이 생성한 취약점은 스캐너 이름으로 GitLab SBoM Vulnerability Scanner를, 취약점 유형으로 Container Scanning을 사용합니다.

CI/CD 기반 보안 스캔과 달리, 지속적 취약점 스캐닝은 CI/CD 파이프라인이 아닌 백그라운드 job(Sidekiq)을 통해 실행되며, 보안 보고서 아티팩트는 생성되지 않습니다.

사전 요구 사항#

지원되는 패키지 유형#

지속적 취약점 스캐닝은 다음 PURL 유형의 컴포넌트를 지원합니다:

  • apk

  • deb

  • rpm

알려진 제한 사항:

  • 선행 0이 포함된 APK 버전은 지원되지 않습니다. 이 버전 지원을 위한 작업은 이슈 471509에서 추적 중입니다.

  • ^가 포함된 RPM 버전은 지원되지 않습니다. 이 버전 지원을 위한 작업은 이슈 459969에서 추적 중입니다.

  • Red Hat 배포판의 RPM 패키지는 지원되지 않습니다. 이 사용 사례 지원을 위한 작업은 에픽 12980에서 추적 중입니다.

CycloneDX SBOM 보고서 생성 방법#

CycloneDX SBOM 보고서를 사용하여 프로젝트 컴포넌트를 GitLab에 등록하세요.

CycloneDX 보고서는 다음 사항을 준수해야 합니다:

GitLab은 GitLab 호환 보고서를 생성할 수 있는 보안 분석기를 제공합니다:

새로운 취약점 확인#

지속적 취약점 스캐닝이 탐지한 새로운 취약점은 취약점 보고서에서 확인할 수 있습니다. 단, 영향을 받는 SBOM 컴포넌트가 탐지된 파이프라인에는 해당 취약점이 나열되지 않습니다.

보안 어드바이저리가 추가되거나 업데이트된 후 취약점이 생성되며, 코드베이스가 변경되지 않는 경우 해당 취약점이 프로젝트에 추가되기까지 몇 시간이 소요될 수 있습니다. 지속적 취약점 스캐닝에는 최근 14일 이내에 게시된 어드바이저리만 고려됩니다.

취약점이 더 이상 탐지되지 않는 경우#

지속적 취약점 스캐닝은 새 어드바이저리가 게시되면 자동으로 취약점을 생성하지만, 프로젝트에서 취약점이 더 이상 존재하지 않는 시점은 감지하지 못합니다. 이를 위해 GitLab은 기본 브랜치에 대한 파이프라인에서 컨테이너 스캐닝을 실행하고, 최신 정보로 보안 보고서 아티팩트를 생성해야 합니다. 이 보고서가 처리될 때 일부 취약점이 더 이상 포함되어 있지 않으면, 지속적 취약점 스캐닝을 통해 생성된 취약점이더라도 해당 상태로 표시됩니다.

Note

레지스트리용 컨테이너 스캐닝을 통해 탐지된 취약점은 이 방법으로 해결할 수 없으며, 이미지에서 수정하더라도 계속 표시됩니다. 이는 레지스트리용 컨테이너 스캐닝이 보안 보고서가 아닌 SBOM만 생성하기 때문입니다. 취약점을 해결된 것으로 표시하려면 보안 보고서가 필요합니다.

보안 어드바이저리#

지속적 취약점 스캐닝은 GitLab이 관리하는 서비스인 패키지 메타데이터 데이터베이스(Package Metadata Database)를 사용합니다. 이 서비스는 라이선스 및 보안 어드바이저리 데이터를 수집하고, GitLab.com 및 GitLab Self-Managed 인스턴스에서 사용하는 업데이트를 정기적으로 게시합니다.

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

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

데이터 소스#

보안 어드바이저리의 현재 데이터 소스에는 다음이 포함됩니다:

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

취약점을 찾으려면 원시 데이터가 포함된 Aqua Security의 vuln-list 리포지터리를 검색할 수 있습니다. 또한 Trivy-DB에 기여할 수도 있습니다.