환경에 따른 오픈 소스 취약점 수 차이

snyk test를 실행한 환경에 따라 취약성 수가 다를 수 있습니다.

CLI를 통해 찾은 일부 의존성은 소스 Git 통합을 통해 찾은 것과 다를 수 있습니다. 이는 Snyk 웹 UI를 통해 설정된 Git 통합을 의미합니다.

보고된 취약성의 차이가 있는 가능성이 있습니다. 이러한 가능성은 이 페이지에서 요약되어 있습니다.

CLI를 사용하여 로컬 저장소를 스캔하는 경우

CLI를 사용하여 로컬 저장소를 스캔할 때 snyk test는 빌드 환경의 소스 파일을 기반으로 의존성 그래프를 작성합니다. CLI를 통해 snyk test로 테스트를 실행하거나 snyk monitor를 사용하여 계속해서 테스트할 수 있도록 스냅샷을 만들 때, Snyk은 프로젝트가 정확히 어떤 것에 의존하는지를 확인하기 위해 빌드 도구 (예: Maven, npm 등)에 의해 감지된 의존성을 살펴봅니다. 프라이빗 의존성 및 빌드 환경의 세부 사항은 빌드 도구와 Snyk 모두에서 사용 가능합니다.

웹 UI를 사용하여 원격 저장소를 스캔하는 경우

Snyk 웹 UI를 통해 SCM 통합을 통해 원격 저장소를 스캔할 때, Snyk은 볼 수 있는 파일을 기반으로 의존성을 추론합니다. 따라서 CLI로 스캔한 것보다 더 많은 취약성을 발견할 수 있습니다.

구체적으로, Snyk가 GitHub, GitLab 또는 Bitbucket 서버 통합과 같은 SCM 통합을 사용하여 테스트를 실행할 때, Snyk는 프로젝트의 의존성 매니페스트 파일만 처리합니다. 예를 들어 pom.xml, package-lock.json, Gemfile.lock 등을 사용합니다.

그런 다음 Snyk 통합은 프로젝트의 의존성 그래프를 추론하여 빌드 도구의 작동을 대략적으로 모델링합니다. Snyk SCM 통합에는 프라이빗 의존성이나 빌드 환경의 세부 사항 (예: 환경 변수)에 대한 액세스 권한이 없습니다. 따라서 결과는 부분적이거나 Snyk CLI를 사용한 스캔과 약간 다를 수 있습니다.

프로젝트가 lockfile로 스캔된 경우, 결과는 package.json과 같은 매니페스트 파일을 사용하여 프로젝트를 스캔한 결과와 다를 수 있습니다. 일반적으로 lockfile이 존재하는 경우 의존성 그래프를 더 명확하게 볼 수 있습니다. lockfile이 있는 경우 CLI와 SCM 통합 모두 이를 선호하며 특히 SCM 통합에서는 훨씬 더 정확하고 CLI 결과와 유사하게 만들어줍니다. 따라서 Snyk는 가능하면 lockfile을 사용할 것을 권장합니다.

CLI 대 웹 UI 스캔 간의 결과 차이 예

다음 예를 살펴보세요:

  • 하위 의존성이 foo ^0.0.5를 요구하고 빌드 중 foo 0.0.6이 설치되어 있고 해당 버전에 취약성이 있습니다.

  • 그 후 foo 0.0.7이 릴리스되어 취약성이 패치되었지만 foo 0.0.6이 이미 설치되어 있었습니다.

  • Snyk의 규칙에 따라 통합은 foo 0.0.7이 설치된 것으로 가정하지만 로컬 프로젝트 자체를 스캔할 때 foo 0.0.7은 고려되지 않습니다.

참고: Snyk 웹 UI에서 취약성을 찾았을 때, CLI는 프로젝트를 프로젝트 설정에서 삭제하고 다시 가져오지 않습니다. 문제가 지속되는 경우, Snyk 지원팀에 요청을 제출하십시오.

Gradle 및 sbt 프로젝트 스캔 시 차이점

Gradle 및 sbt와 같은 일부 패키지 관리자에서, GitHub, GitLab, Bitbucket 및 기타 SCM 통합을 사용한 Snyk SCM 통합에서는 의존성을 결정하기 위해 매니페스트 파일을 구문 분석하는 반면, 이러한 패키지 관리자들은 종종 코드를 사용하여 의존성 트리를 작성합니다.

코드를 사용하여 의존성 오버라이드 및 매핑은 가끔 CLI가 SCM을 통해 가져온 프로젝트보다 의존성에 대해 더 정확한 그림을 보고할 수 있도록 할 수 있습니다.

Golang 프로젝트를 스캔하는 경우의 차이점

Git 통합을 통해 가져온 Go Modules 프로젝트의 경우, 의존성은 패키지 수준이 아니라 모듈 수준에서 해결되므로 Snyk은 프로젝트 소스 코드에 완전 액세스할 수 없습니다.

이는 Git 저장소에서 테스트된 프로젝트에 대해 Snyk이 모듈 별로 모든 취약성을 보고하고 소스 코드에 참조된 패키지(들)에 대해서만 보고하기 때문입니다.

... (이어집니다)

Last updated