InfoGrab DocsInfoGrab Docs

지속적 종속성 스캐닝

요약

종속성 스캐닝을 위한 지속적 취약점 스캐닝(CVS)은 새 파이프라인 실행 없이 컴포넌트 이름과 버전을 최신 보안 어드바이저리 정보와 비교하여 프로젝트 종속성의 보안 취약점을 탐지합니다. 새로운 취약점이 발생할 수 있습니다.

히스토리
  • 종속성 스캐닝을 위한 지속적 취약점 스캐닝은 기본으로 활성화된 기능 플래그 dependency_scanning_on_advisory_ingestionpackage_metadata_advisory_scans와 함께 도입됨.
  • GitLab 16.10에서 일반적으로 사용 가능해짐. 기능 플래그 dependency_scanning_on_advisory_ingestionpackage_metadata_advisory_scans 제거됨.

종속성 스캐닝을 위한 지속적 취약점 스캐닝(CVS)은 새 파이프라인 실행 없이 컴포넌트 이름과 버전을 최신 보안 어드바이저리 정보와 비교하여 프로젝트 종속성의 보안 취약점을 탐지합니다. 파이프라인은 CycloneDX SBOM을 통해 프로젝트 컴포넌트를 등록하기 위해 기본 브랜치에서 최소 한 번 실행되어야 합니다. 이후 CVS는 종속성이 변경될 때까지 추가 파이프라인 실행 없이 어드바이저리가 게시될 때마다 실행됩니다.

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

종속성 스캐닝을 위한 지속적 취약점 스캐닝으로 생성된 취약점은 스캐너 이름으로 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 versions)은 지원되지 않습니다. Go 의사 버전을 참조하는 프로젝트 종속성은 오탐(false negatives)이 발생할 수 있으므로 영향을 받는 것으로 간주되지 않습니다.

CycloneDX SBOM 보고서 생성 방법#

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

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

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

새로운 취약점 확인#

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

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

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

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

보안 어드바이저리#

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

GitLab.com에서는 동기화가 GitLab에 의해 관리되며 모든 프로젝트에서 사용할 수 있습니다.

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

데이터 소스#

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

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

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

지속적 종속성 스캐닝

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

종속성 스캐닝을 위한 지속적 취약점 스캐닝(CVS)은 새 파이프라인 실행 없이 컴포넌트 이름과 버전을 최신 보안 어드바이저리 정보와 비교하여 프로젝트 종속성의 보안 취약점을 탐지합니다. 새로운 취약점이 발생할 수 있습니다.

히스토리
  • 종속성 스캐닝을 위한 지속적 취약점 스캐닝은 기본으로 활성화된 기능 플래그 dependency_scanning_on_advisory_ingestionpackage_metadata_advisory_scans와 함께 도입됨.
  • GitLab 16.10에서 일반적으로 사용 가능해짐. 기능 플래그 dependency_scanning_on_advisory_ingestionpackage_metadata_advisory_scans 제거됨.

종속성 스캐닝을 위한 지속적 취약점 스캐닝(CVS)은 새 파이프라인 실행 없이 컴포넌트 이름과 버전을 최신 보안 어드바이저리 정보와 비교하여 프로젝트 종속성의 보안 취약점을 탐지합니다. 파이프라인은 CycloneDX SBOM을 통해 프로젝트 컴포넌트를 등록하기 위해 기본 브랜치에서 최소 한 번 실행되어야 합니다. 이후 CVS는 종속성이 변경될 때까지 추가 파이프라인 실행 없이 어드바이저리가 게시될 때마다 실행됩니다.

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

종속성 스캐닝을 위한 지속적 취약점 스캐닝으로 생성된 취약점은 스캐너 이름으로 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 versions)은 지원되지 않습니다. Go 의사 버전을 참조하는 프로젝트 종속성은 오탐(false negatives)이 발생할 수 있으므로 영향을 받는 것으로 간주되지 않습니다.

CycloneDX SBOM 보고서 생성 방법#

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

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

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

새로운 취약점 확인#

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

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

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

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

보안 어드바이저리#

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

GitLab.com에서는 동기화가 GitLab에 의해 관리되며 모든 프로젝트에서 사용할 수 있습니다.

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

데이터 소스#

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

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

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