코드 취약점 관리
Snyk Web UI에서 코드 취약점 관리를 위한 전제 조건
Snyk Code로 취약점을 관리하기 전에 다음을 확인하십시오.
시작하기의 단계를 완료했습니다.
리포지토리에 지원되는 언어 및 플랫폼의 코드가 포함되어 있습니다.
Snyk Code를 구성했습니다.
Snyk Code 프로젝트 테스트 작동 방식
프로젝트가 테스트될 때마다 Snyk Code는 현재 상태의 리포지토리 스냅샷을 찍고 분석하여 취약점을 찾습니다. Snyk Code가 분석할 수 있는 소스 코드가 포함된 모든 파일은 Code Analysis(코드 분석)에 집계됩니다.
리포지토리를 가져오면 Snyk은 리포지토리에 있는 파일 유형에 따라 다른 Snyk 프로젝트가 포함된 타겟 폴더를 생성합니다. 타겟 폴더의 이름에는 리포지토리 이름, 통합된 Git 리포지토리 계정 이름 및 아이콘, 리포지토리에 대해 생성된 Snyk 프로젝트 수가 포함됩니다.
Snyk Code는 리포지토리에서 가져온 모든 파일에 대해 단일 프로젝트를 생성합니다. 이는 리포지토리 코드에서 감지된 취약점을 하나의 프로젝트로 집계하여 여러 파일에 걸친 취약점 문제의 데이터 흐름을 제공합니다.
API 엔드포인트 Import targets를 사용하여 여러 리포지토리 가져오기를 자동화하십시오.
가져오기에서 재테스트까지의 코드 테스트
다음은 테스트 단계를 기반으로 Snyk Code의 테스트 프로세스에 대한 개요를 제공합니다.
리포지토리를 가져올 때 수행됩니다.
예약할 때 자동으로 수행됩니다.
Retest now를 선택할 때 온디맨드로 수행됩니다.
코드 리포지토리 다시 테스트
리포지토리에서 가장 최근의 취약점을 확인하려면 Retest now 옵션을 선택하여 수동 테스트를 수행할 수 있습니다. 이렇게 하면 Snyk Code가 리포지토리의 새 스냅샷을 찍고 소스 코드 파일을 분석하도록 트리거됩니다. 결과는 Code Analysis 페이지에 표시됩니다. Snyk은 수동 테스트를 새로운 테스트로 간주합니다. 테스트로 간주되는 것은 무엇입니까?를 참조하십시오.
Retest now 옵션을 사용하여 가져온 리포지토리에 .snyk 파일의 제외 규칙을 적용할 수도 있습니다. 프로젝트 가져오기에서 디렉토리 및 파일 제외를 참조하십시오.

프로젝트 필터
Snyk Web UI의 프로젝트 페이지에는 Snyk 프로젝트를 분류하고 각 기준에 대해 일치하는 프로젝트 수를 보여주는 필터 창이 있습니다. 프로젝트 정보를 참조하십시오.
Grouping by File or Vulnerability Type(파일 또는 취약점 유형별 그룹화) 기능은 다음과 같은 추가 옵션을 제공합니다.
Group by File(파일별 그룹화): 이 옵션은 여러 취약점이 포함된 특정 파일을 식별하여 보다 엄격한 검토 또는 리팩토링이 필요할 수 있는 문제 파일에 집중할 수 있도록 도와줍니다.
Group by Vulnerability Type(취약점 유형별 그룹화): 이 옵션은 SQL Injection 또는 Cross-Site Scripting (XSS)과 같은 유형별로 취약점을 분류하여 코드베이스 내에서 가장 널리 퍼진 유형의 취약점을 해결하는 데 도움을 줍니다.
취약점 문제
다음 옵션을 사용하여 Code Analysis 페이지에서 문제 표시를 변경할 수 있습니다.
File(파일) 또는 **Vulnerability Type(취약점 유형)**별 그룹화
여러 문제가 있는 문제 파일 또는 빈번한 취약점 유형을 식별하십시오. 이 필터링 옵션을 사용하여 취약점이 함께 뭉쳐 있을 가능성이 있는 위치를 파악하십시오.
심각도 수준별 정렬
가장 높은 심각도 수준을 가진 취약점 문제를 먼저 표시하고 그 뒤에 낮은 심각도 수준을 가진 문제를 표시하여 취약점 문제를 정렬합니다.
기준별 취약점 필터링
다음 표에 표시된 다양한 기준에 따라 발견된 취약점 문제를 필터링합니다.
특정 심각도 수준의 문제를 표시합니다. Snyk Code는 Critical 없이 High, Medium, Low 심각도 수준만 사용합니다.
특정 우선순위 점수 범위의 문제를 표시합니다.
상태
Open 문제 또는 Ignored(무시됨) 문제를 표시합니다.
특정 언어로 작성된 코드 파일에서 발견된 문제를 표시합니다. 분석된 리포지토리에서 발견된 프로그래밍 언어만 필터 창에 표시됩니다.
특정 취약점 유형의 문제를 표시합니다. Snyk Code 보안 규칙을 참조하십시오.

코드 취약점 스캔
리포지토리를 스캔하고 코드 취약점을 관리하려면 다음 작업을 확인하십시오.
리포지토리의 취약점 보기
Snyk Web UI에 로그인하고 Group 및 Organization을 선택합니다.
Projects로 이동하여 리포지토리의 프로젝트가 포함된 타겟 폴더를 선택합니다.
Code analysis 프로젝트를 열어 Snyk Code가 감지한 모든 취약점 문제를 확인합니다.
결과를 이해하려면 코드 분석 세부 정보를 참조하십시오.
추가 리포지토리 가져오기
Snyk 계정에 기존 프로젝트가 있는 경우 Snyk이 테스트할 추가 리포지토리를 추가할 수 있습니다. Snyk으로 리포지토리 가져오기를 참조하십시오.
테스트에서 리포지토리 제거
더 이상 취약점 테스트를 할 필요가 없는 경우 Code Analysis 프로젝트를 제거하거나 가져온 리포지토리를 삭제할 수 있습니다. 가져온 리포지토리 제거를 참조하십시오.
디렉토리 및 파일 제외
Snyk Code에서 특정 파일 및 디렉토리를 가져오지 않도록 제외하려면 리포지토리에 .snyk YAML 정책 파일을 생성해야 합니다. 프로젝트 가져오기에서 디렉토리 및 파일 제외를 참조하십시오.
Git 리포지토리를 통해 리포지토리를 가져올 때 제외 대화 상자를 사용하여 가져오기 프로세스에서 제외할 디렉토리를 지정할 수 있습니다. 그러나 이 기능은 오픈소스 종속성 스캔(SCA)에만 지원됩니다.
리포지토리 외부 링크 열기
통합된 Git 리포지토리 플랫폼의 리포지토리에 액세스하려면 Code Analysis 프로젝트로 이동하여 리포지토리 이름을 선택하십시오.

프로젝트 기록 보기
결과 기록은 Code Analysis 프로젝트의 History 페이지에 표시됩니다. 이 페이지에는 테스트가 수행될 때 찍은 스냅샷이 표시됩니다. 모든 테스트 단계에 대한 Snyk Code 테스트 결과를 검토할 수 있습니다. 가져오기에서 재테스트까지의 코드 테스트를 참조하십시오.
History 페이지에는 두 개의 고유한 스냅샷만 표시됩니다. 스냅샷은 리포지토리 또는 관련 취약점 발견 사항이 마지막 평가 이후 변경되어 이러한 변경 사항을 보여주는 스냅샷이 생성된 경우 고유한 것으로 간주됩니다. 마지막 테스트 이후 리포지토리 또는 취약점 결과에 변경이 없으면 새 스냅샷은 이전 스냅샷을 복제합니다. 결과적으로 이는 History 페이지에 추가 테스트 실행으로 나열됩니다. 즉, 페이지에 여러 테스트 항목이 표시될 수 있지만 고유한 결과는 최대 두 개까지만 표시됩니다.
프로젝트 기록을 보려면:
Snyk Web UI에 로그인하고 Group 및 Organization을 선택합니다.
Projects로 이동하여 리포지토리의 프로젝트가 포함된 타겟 폴더를 선택합니다.
Code analysis 프로젝트를 열고 History로 이동합니다.
목록에서 테스트를 선택하여 프로젝트 과거 스냅샷을 봅니다.
(선택 사항) View most recent snapshot을 선택합니다. 이 옵션은 가장 최근 스냅샷이 열려 있는 경우에는 사용할 수 없습니다.

프로젝트 설정 관리
다음과 같이 프로젝트 설정을 관리합니다.
반복 테스트 예약: 테스트 및 자동화된 풀 리퀘스트 빈도 구성.
프로젝트 ID 검색: 프로젝트의 고유 식별자 검색.
프로젝트 비활성화: 데이터를 삭제하지 않고 프로젝트를 일시적으로 비활성화.
프로젝트 삭제: 프로젝트 및 모든 관련 데이터를 영구적으로 제거.
코드 변경에 따른 취약점 추적
Snyk Code는 단순한 정적 분석을 넘어 코드베이스가 발전함에 따라 여러 스캔에 걸쳐 취약점을 추적합니다. 이를 통해 코드 리팩토링, 파일 이름 변경 또는 위치 변경에 관계없이 일관되고 정확한 취약점 관리를 보장합니다.
file1.js의 45행에 취약점이 있는 시나리오를 고려해 보십시오. 코드 리팩토링 후 취약점은 지속되지만 다른 파일 및 줄에 위치합니다. 이러한 시나리오를 효과적으로 해결하기 위해 Snyk Code는 정교한 문제 추적 시스템을 사용합니다. 취약점을 추적하기 위해 Snyk Code는 다음을 수행합니다.
지문(Fingerprint) 매칭:
각 취약점에 대해 코드의 구문 트리(syntax tree)의 최소 해시(min-hash)를 생성합니다.
이러한 해시에서 가장 가까운 이웃을 계산하여 스캔 간에 유사한 취약점을 식별합니다.
파일 위치 비교:
파일 경로 및 줄 번호를 분석하여 코드 이동을 설명합니다.
디렉토리, 파일 이름 및 줄/열 변경을 기반으로 유사성을 계산합니다.
최종 신뢰도 점수
Snyk Code는 지문 매칭, 파일 위치 비교 및 과거 가중치 결과를 결합하여 최종 신뢰도 점수를 생성합니다. 이 점수는 서로 다른 스캔의 두 취약점이 동일할 가능성을 나타냅니다.
예를 들어, utils/auth_utils.js의 취약점이 utils/auth_helpers.js로 이동하고 줄 번호가 변경된 경우입니다. Snyk Code의 알고리즘은 다음을 수행합니다.
utils/auth_helpers.js에서 새로운 취약점을 식별하고 AST에서 지문을 생성합니다.새 취약점의 지문을 이전 스캔에서 발견된 문제와 비교합니다.
사소한 AST 변경에도 불구하고 높은 지문 유사성을 식별합니다.
공유 디렉토리 및 유사한 파일 이름으로 인해 높은 파일 경로 유사성을 인식합니다.
높은 전체 신뢰도 점수를 유지하면서 줄 번호 변경을 설명합니다.
새로운 취약점을 이전 스캔에서 가장 높은 신뢰도 점수를 가진 취약점과 일치시킵니다.
다음 단계는?
Last updated