환경별 오픈소스 취약점 수의 차이
Snyk을 사용하여 프로젝트를 스캔할 때, 스캔 환경(예: 로컬 CLI, SCM 통합, CI/CD 파이프라인)에 따라 발견된 취약점 수나 종속성 결과가 다를 수 있습니다. 이러한 차이가 발생하는 주요 이유와 이를 이해하는 방법은 다음과 같습니다.
1. 스캔 대상의 동일성 여부
동일한 프로젝트라도 스캔 시점에 따라 결과가 다를 수 있습니다.
서로 다른 머신에서 서로 다른 시간에 빌드되었나요?
종속성 버전을 고정하는 락파일(lockfile) 없이 스캔이 진행되었나요?
2. 무시(Ignore) 규칙 적용 여부
한 도구(예: Snyk 웹 UI)에서는 무시 규칙이 설정되어 있지만, 다른 도구(예: 로컬 CLI)에서는 해당 규칙이 포함된 .snyk 파일이 없거나 정책이 적용되지 않았을 수 있습니다.
3. 개발 종속성(Dev Dependencies) 포함 여부
Snyk은 기본적으로 프로덕션 환경의 노이즈를 줄이기 위해 개발 종속성을 스캔하지 않습니다. 하지만 특정 환경에서 개발 종속성 스캔 옵션이 활성화되어 있다면 취약점 수가 다르게 나타날 수 있습니다.
4. 취약점 데이터베이스의 차이
Snyk은 취약점을 직접 검수하고 고유한 심각도를 부여합니다. 단순히 데이터베이스를 긁어오는(scrape) 다른 벤더 도구와 Snyk을 비교할 경우, Snyk의 정제된 데이터로 인해 결과가 다를 수 있습니다.
도구마다 이슈를 세는 방식이 다를 수 있습니다.
취약점의 모든 인스턴스나 경로를 개별적으로 세나요?
아니면 동일한 패키지로 이어지는 경로들을 하나로 그룹화하여 세나요?
가장 정확한 결과를 얻으려면 다음을 준수하십시오.
락파일(lockfile) 사용: package-lock.json, yarn.lock, Gemfile.lock 등을 사용하여 모든 환경에서 동일한 버전의 종속성을 스캔하도록 하십시오.
동일한 정책 적용: .snyk 파일을 리포지토리에 포함하여 CLI와 SCM 모두에서 동일한 무시 규칙이 적용되도록 하십시오.
빌드 후 스캔: 특히 Java나 .NET 프로젝트의 경우, 정확한 종속성 트리를 구축하기 위해 빌드된 아티팩트가 있는 환경에서 스캔하는 것이 좋습니다.
자세한 내용은 Snyk 오픈소스로 취약점 수정 문제 해결을 참조하십시오.