오픈소스 C++ 스캔을 위한 Snyk CLI

오픈소스 C/C++용 Snyk CLI

C/C++의 취약점을 탐색하려면 Snyk 취약점 데이터베이스(Vuln DB)arrow-up-right를 검색하십시오. Snyk은 온라인 소스의 최신 소스 코드로 주기적으로 업데이트되는 이 데이터베이스를 기반으로 코드를 테스트합니다. 자세한 내용은 Snyk 취약점 데이터베이스를 참조하십시오.

Snyk이 오픈소스 프로젝트를 스캔하려면 종속성이 스캔된 디렉토리에 소스 코드로 제공되어야 합니다. 종속성이 다른 위치에 있는 경우 해당 위치를 스캔해야 합니다.

snyk test --unmanaged 명령을 실행하면 Snyk은 다음 작업을 수행합니다:

  1. 현재 폴더의 모든 파일을 해시 목록으로 변환합니다.

  2. 종속성 목록을 계산하기 위해 해시를 Snyk 스캔 서버로 보냅니다.

  3. 데이터베이스를 조회하여 잠재적으로 일치하는 종속성 목록을 찾습니다.

  4. 종속성을 알려진 취약점에 연결합니다.

  5. 결과를 표시합니다.

아카이브 스캔

기본적으로 아카이브는 스캔되지 않습니다. 그러나 CLI는 아카이브를 재귀적으로 추출하여 내부의 소스 코드를 분석할 수 있습니다.

아카이브 추출을 활성화하려면 --max-depth 옵션을 사용하여 추출 깊이를 지정하십시오.

지원되는 아카이브 형식은 다음과 같습니다:

  • zip 계열 아카이브

  • tar 아카이브

  • gzip 압축 알고리즘을 사용하는 tar

소스 코드 종속성은 스캔된 폴더에 있어야 합니다

CLI가 소스 코드에서 종속성을 찾으려면 스캔된 폴더에 전체 종속성 소스 코드가 충분히 존재해야 합니다.

원래의(수정되지 않은) 형태의 파일 비율이 높은 것이 종속성을 정확하게 식별하고 올바른 취약점 세트를 보고하는 데 중요합니다. 소스 코드를 수정하면 스캐닝 엔진의 신뢰도가 떨어져 결과의 정확도가 낮아집니다. 다른 잠재적인 문제로는 종속성이 식별되지 않거나 다른 버전 또는 다른 패키지로 잘못 식별될 수 있습니다.

다음 예시는 종속성이 나열된 일반적인 패키지를 보여줍니다:

릴리스 지원

공식 릴리스만 추적됩니다. 기본 브랜치로의 커밋을 포함하여 공식 릴리스나 태그에 포함되지 않은 커밋은 식별되지 않습니다.

패키지 관리자가 있는 프로젝트의 경우, 이는 패키지 관리자에 대한 릴리스를 의미합니다.

Go 및 비관리형(Unmanaged) 스캔(C/C++)의 경우, 이는 GitHub 리포지토리의 공식 릴리스 또는 태그가 필요함을 의미합니다.

스캔 중 수집되는 데이터

C++ 프로젝트를 스캔할 때 다음 데이터가 수집되며 문제 해결 목적으로 저장될 수 있습니다:

스캔된 파일의 해시: 모든 파일은 되돌릴 수 없는 해시 목록으로 변환됩니다.

스캔된 파일의 상대 경로: 더 나은 식별 및 매칭을 위해 스캔 중인 디렉토리에 대한 파일 상대 경로가 포함됩니다. 예: ./project-name/vendor/bzip2-1.0.6/blocksort.c

종속성 표시

종속성을 표시하려면 --print-deps 옵션을 사용하십시오:

각 종속성을 식별하는 데 기여한 파일이 무엇인지 알아보려면 --print-dep-paths 옵션을 사용하십시오:

이 출력은 또한 식별된 종속성과 그 버전에 대해 Snyk이 얼마나 확신하는지 보여줍니다. 식별된 종속성과 버전에 대한 확신도를 확인하려면 --print-deps 또는 --print-dep-paths 옵션을 사용하십시오.

신뢰 수준(Confidence level) 이해하기

신뢰 수준은 종속성의 실제 식별에 대해 Snyk이 얼마나 확신하는지를 보여줍니다. 숫자는 0에서 1 사이일 수 있으며 숫자가 높을수록 식별이 더 정확합니다. 신뢰 수준이 1이면 소스 트리의 모든 파일이 Snyk 데이터베이스의 예상 파일과 완전히 일치함을 의미합니다.

curl|https://github.com/curl/curl/releases/download/curl-7_58_0/[email protected] confidence: 0.993

소프트웨어에서 사용하는 종속성의 소스 코드를 변경해야 할 수도 있습니다. Snyk은 파일 서명을 사용하여 오픈소스 라이브러리와 가능한 가장 가까운 일치 항목을 찾으므로, 소스 코드를 변경하면 실제 라이브러리 식별의 정확도가 떨어질 수 있습니다.

JSON 출력

JSON 형식으로 기계가 읽을 수 있는 출력을 얻으려면 --json 옵션을 사용하십시오:

명령줄 옵션

snyk test --unmanagedsnyk monitor --unmanaged 명령과 함께 다음 snyk 명령줄 옵션이 지원됩니다:

--org=<ORG_ID> --json --json-file-output=<OUTPUT_FILE_PATH> (snyk test 전용) --remote-repo-url=<URL> --severity-threshold=<low|medium|high|critical> (snyk test 전용) --max-depth --print-dep-paths --target-reference=<TARGET_REFERENCE> (snyk monitor 전용) --project-name=<c-project> (snyk monitor 전용)

명령줄 옵션에 대한 자세한 내용은 Snyk 도움말 문서를 참조하십시오: snyk test --unmanaged를 사용한 스캔 옵션 또는 snyk monitor --unmanaged.

Snyk CLI에서 테스트 결과(이슈 및 종속성)를 가져오려면 snyk monitor --unmanaged 명령을 실행하십시오:

이는 종속성 및 취약점의 스냅샷을 생성하고 이를 Snyk 웹 UI로 가져오며, 여기서 이슈를 검토하고 보고서에 포함된 것을 확인할 수 있습니다.

비관리형 종속성이 포함된 프로젝트를 가져오면 프로젝트 페이지에 나열되는 새 프로젝트가 생성됩니다:

비관리형 종속성이 포함된 프로젝트
비관리형 종속성이 포함된 프로젝트

Last updated