InfoGrab DocsInfoGrab Docs

지속적 의존성 스캐닝

요약

의존성 스캐닝을 위한 지속적 취약점 스캐닝(CVS)은 새 파이프라인을 실행하지 않고도 프로젝트 의존성의 보안 취약점을 탐지합니다. CycloneDX SBOM을 통해 프로젝트 컴포넌트를 등록하려면 기본 브랜치에서 파이프라인이 최소 한 번 실행되어야 합니다.

의존성 스캐닝을 위한 지속적 취약점 스캐닝(CVS)은 새 파이프라인을 실행하지 않고도 프로젝트 의존성의 보안 취약점을 탐지합니다. CVS는 컴포넌트 이름과 버전을 다음 두 가지 소스와 비교합니다:

CycloneDX SBOM을 통해 프로젝트 컴포넌트를 등록하려면 기본 브랜치에서 파이프라인이 최소 한 번 실행되어야 합니다. 그 이후에는 의존성이 변경될 때까지 추가 파이프라인 실행 없이 어드바이저리가 게시될 때마다 CVS가 실행됩니다.

GitLab이 악성코드 어드바이저리 데이터베이스를 업데이트하면 CVS는 보안 어드바이저리와 동일한 방식으로 의존성을 다시 평가합니다. 이미 의존성에 포함된 패키지가 악성으로 확인되면 CVS는 발견 항목을 생성합니다.

GitLab은 발견 항목을 생성해도 알림을 보내지 않으며, 지속적 취약점 스캐닝이 지원되는 패키지 유형의 컴포넌트를 포함한 프로젝트를 스캔할 때마다 새로운 취약점이 나타날 수 있습니다. 취약점 보고서 또는 의존성 목록에서 확인할 수 있습니다.

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

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

사전 요구 사항#

지원되는 패키지 유형#

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

  • cargo
  • conan
  • go
  • maven
  • npm
  • nuget
  • packagist
  • pub
  • pypi
  • rubygem
  • swift

Go 의사 버전(pseudo version)은 지원되지 않습니다. Go 의사 버전을 참조하는 프로젝트 의존성은 미탐지(false negative)를 일으킬 수 있으므로 영향을 받는 것으로 간주되지 않습니다.

CycloneDX SBOM 보고서 생성 방법#

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

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

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

지속적 취약점 스캐닝 켜기 또는 끄기#

히스토리
  • GitLab 19.0에서 cvs_per_scanner_type_settings라는 기능 플래그와 함께 도입됨. 기본적으로 비활성화됨.
  • GitLab 19.2에서 일반 공개됨. 기능 플래그 cvs_per_scanner_type_settings 제거됨.

지속적 취약점 스캐닝은 수집된 모든 CycloneDX SBOM 파일에 대해 기본적으로 실행됩니다. 프로젝트별로 이를 끌 수 있습니다. 꺼져 있는 동안에는 새로운 보안 어드바이저리가 수집되어도 의존성에 대한 취약점 레코드가 생성되지 않습니다.

사전 요구 사항:

  • 프로젝트에 대한 Maintainer, Owner 또는 Security Manager 권한이 있어야 합니다.

지속적 취약점 스캐닝을 켜거나 끄려면:

  1. 상단 바에서 Search or go to를 선택하고 프로젝트를 찾습니다.
  2. 왼쪽 사이드바에서 Secure > Security configuration을 선택합니다.
  3. Continuous Vulnerability Scanning for Dependency Scanning에서 토글을 켜거나 끕니다.

새로운 취약점 확인#

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

취약점은 보안 어드바이저리가 추가되거나 업데이트된 후에 생성됩니다. 코드베이스가 변경되지 않았다면 해당 취약점이 프로젝트에 추가되기까지 몇 시간이 걸릴 수 있습니다. 최근 14일 이내에 게시된 어드바이저리만 지속적 취약점 스캐닝의 대상이 됩니다.

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

지속적 취약점 스캐닝은 새로운 어드바이저리가 게시될 때 자동으로 취약점을 생성하지만, 프로젝트에서 취약점이 더 이상 존재하지 않는 시점은 파악할 수 없습니다. 이를 위해 GitLab은 기본 브랜치의 파이프라인에서 의존성 스캐닝 스캔이 실행되고, 최신 정보가 담긴 해당 보안 보고서 아티팩트가 생성되어야 합니다. 이러한 보고서가 처리될 때 일부 취약점이 더 이상 포함되지 않으면, 지속적 취약점 스캐닝으로 생성된 취약점이라도 그에 맞는 플래그가 지정됩니다.

보안 어드바이저리#

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

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

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

데이터 소스#

현재 보안 어드바이저리의 데이터 소스는 다음과 같습니다:

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

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

지속적 의존성 스캐닝

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

요약

의존성 스캐닝을 위한 지속적 취약점 스캐닝(CVS)은 새 파이프라인을 실행하지 않고도 프로젝트 의존성의 보안 취약점을 탐지합니다. CycloneDX SBOM을 통해 프로젝트 컴포넌트를 등록하려면 기본 브랜치에서 파이프라인이 최소 한 번 실행되어야 합니다.

의존성 스캐닝을 위한 지속적 취약점 스캐닝(CVS)은 새 파이프라인을 실행하지 않고도 프로젝트 의존성의 보안 취약점을 탐지합니다. CVS는 컴포넌트 이름과 버전을 다음 두 가지 소스와 비교합니다:

CycloneDX SBOM을 통해 프로젝트 컴포넌트를 등록하려면 기본 브랜치에서 파이프라인이 최소 한 번 실행되어야 합니다. 그 이후에는 의존성이 변경될 때까지 추가 파이프라인 실행 없이 어드바이저리가 게시될 때마다 CVS가 실행됩니다.

GitLab이 악성코드 어드바이저리 데이터베이스를 업데이트하면 CVS는 보안 어드바이저리와 동일한 방식으로 의존성을 다시 평가합니다. 이미 의존성에 포함된 패키지가 악성으로 확인되면 CVS는 발견 항목을 생성합니다.

GitLab은 발견 항목을 생성해도 알림을 보내지 않으며, 지속적 취약점 스캐닝이 지원되는 패키지 유형의 컴포넌트를 포함한 프로젝트를 스캔할 때마다 새로운 취약점이 나타날 수 있습니다. 취약점 보고서 또는 의존성 목록에서 확인할 수 있습니다.

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

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

사전 요구 사항#

지원되는 패키지 유형#

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

  • cargo
  • conan
  • go
  • maven
  • npm
  • nuget
  • packagist
  • pub
  • pypi
  • rubygem
  • swift

Go 의사 버전(pseudo version)은 지원되지 않습니다. Go 의사 버전을 참조하는 프로젝트 의존성은 미탐지(false negative)를 일으킬 수 있으므로 영향을 받는 것으로 간주되지 않습니다.

CycloneDX SBOM 보고서 생성 방법#

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

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

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

지속적 취약점 스캐닝 켜기 또는 끄기#

히스토리
  • GitLab 19.0에서 cvs_per_scanner_type_settings라는 기능 플래그와 함께 도입됨. 기본적으로 비활성화됨.
  • GitLab 19.2에서 일반 공개됨. 기능 플래그 cvs_per_scanner_type_settings 제거됨.

지속적 취약점 스캐닝은 수집된 모든 CycloneDX SBOM 파일에 대해 기본적으로 실행됩니다. 프로젝트별로 이를 끌 수 있습니다. 꺼져 있는 동안에는 새로운 보안 어드바이저리가 수집되어도 의존성에 대한 취약점 레코드가 생성되지 않습니다.

사전 요구 사항:

  • 프로젝트에 대한 Maintainer, Owner 또는 Security Manager 권한이 있어야 합니다.

지속적 취약점 스캐닝을 켜거나 끄려면:

  1. 상단 바에서 Search or go to를 선택하고 프로젝트를 찾습니다.
  2. 왼쪽 사이드바에서 Secure > Security configuration을 선택합니다.
  3. Continuous Vulnerability Scanning for Dependency Scanning에서 토글을 켜거나 끕니다.

새로운 취약점 확인#

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

취약점은 보안 어드바이저리가 추가되거나 업데이트된 후에 생성됩니다. 코드베이스가 변경되지 않았다면 해당 취약점이 프로젝트에 추가되기까지 몇 시간이 걸릴 수 있습니다. 최근 14일 이내에 게시된 어드바이저리만 지속적 취약점 스캐닝의 대상이 됩니다.

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

지속적 취약점 스캐닝은 새로운 어드바이저리가 게시될 때 자동으로 취약점을 생성하지만, 프로젝트에서 취약점이 더 이상 존재하지 않는 시점은 파악할 수 없습니다. 이를 위해 GitLab은 기본 브랜치의 파이프라인에서 의존성 스캐닝 스캔이 실행되고, 최신 정보가 담긴 해당 보안 보고서 아티팩트가 생성되어야 합니다. 이러한 보고서가 처리될 때 일부 취약점이 더 이상 포함되지 않으면, 지속적 취약점 스캐닝으로 생성된 취약점이라도 그에 맞는 플래그가 지정됩니다.

보안 어드바이저리#

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

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

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

데이터 소스#

현재 보안 어드바이저리의 데이터 소스는 다음과 같습니다:

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

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