코드 분석 세부 정보
리포지토리를 가져오면 Snyk Code는 가져온 코드 내의 취약점을 자동으로 테스트합니다. 단일 리포지토리의 모든 파일에서 감지된 취약점은 Code Analysis(코드 분석)라는 Snyk 프로젝트로 컴파일됩니다. Code Analysis는 특정 리포지토리에 대한 테스트 결과를 제공하며, 리포지토리의 소스 코드에서 발견된 모든 취약점을 나열합니다.

코드 분석 구성 요소
이 표는 코드 분석 프로젝트의 요소를 요약합니다.
헤더
가져온 리포지토리의 세부 정보, Git 리포지토리의 리포지토리 링크, 프로젝트 이름 및 프로젝트 탭(Overview, History, Settings)을 포함합니다.
프로젝트 요약 정보 영역
리포지토리 가져오기 및 마지막 테스트 날짜, 온디맨드 테스트를 위한 Retest now 옵션, 리포지토리를 가져온 사용자 이름, 프로젝트 소유자 이름, 분석된 코드 파일 수 및 분석되지 않은 코드 파일 수를 포함합니다. 코드 리포지토리 다시 테스트를 참조하십시오.
표시된 문제를 필터링하기 위한 사전 정의된 기준 집합을 포함합니다.
취약점 문제
Snyk Code가 가져온 리포지토리에서 발견한 취약점 문제를 포함합니다.
코드 내 문제의 오염 흐름(taint flow)을 표시합니다.
발견된 취약점 유형, 이 문제를 예방하기 위한 모범 사례 및 수정 코드 예제에 대한 추가 세부 정보를 제공합니다.
CWE
특정 취약점 유형의 CWE (Common Weakness Enumeration) ID와 해당 취약점 유형이 설명된 CWE 웹사이트 링크입니다. 예시: CWE-22: Path Traversal을 참조하십시오.
즉각적인 수정을 위해 통합된 Git 리포지토리에 빠르게 액세스합니다.
가져온 사람
리포지토리를 가져온 Git 리포지토리 사용자 이름입니다.
데이터 흐름
데이터 흐름은 소스 코드에서 발견된 문제의 위치와 애플리케이션 전체에서 어떻게 흐르는지를 보여줍니다. 소스에서 싱크까지 단계별 시각화를 통해 코드 내 문제의 오염 흐름을 보여주며, 흐름의 모든 단계에 대한 코드 줄을 제시합니다.
소스는 잠재적 문제의 입력 지점입니다. 이는 사용자나 외부 장치가 데이터를 입력할 수 있는 애플리케이션 내 지점으로, 잠재적으로 애플리케이션의 보안을 침해할 수 있습니다. 예를 들어, SQL Injection 문제에서 소스는 사용자가 채우는 양식이나 기타 데이터 입력 영역이 될 것입니다.
싱크는 애플리케이션이 문제를 실행하는 코드의 작업입니다. 이 지점은 깨끗한 입력을 받아야 하며, 그렇지 않으면 악용될 수 있습니다. 예를 들어, SQL Injection 문제에서 싱크는 수신된 입력에 따라 특정 작업을 수행하도록 DB에 지시하는 내부 작업이 될 것입니다.
Snyk Code가 발견한 모든 문제에는 데이터 흐름이 있습니다. 예를 들어 하드 코딩된 비밀의 경우와 같이 문제에 단계가 하나만 있는 경우 문제의 소스가 데이터 흐름 페이지에 표시됩니다.
데이터 흐름 보기
Snyk Web UI에 로그인하고 Group 및 Organization을 선택합니다.
Projects로 이동하여 리포지토리의 프로젝트가 포함된 타겟 폴더를 선택합니다.
Code analysis 프로젝트를 엽니다.
(선택 사항) 특정 취약점 문제를 검색하거나 필터링합니다.
취약점 문제를 선택하고 Full details > Data flow로 이동합니다.
데이터 흐름 분석의 일부로 다음 작업을 수행할 수 있습니다.
소스에서 싱크까지 코드 내 문제의 오염 흐름을 봅니다. 데이터 흐름 분석 예시를 참조하십시오.
Ignore 버튼을 사용하여 열려 있는 취약점 문제를 무시합니다. 문제 무시를 참조하십시오.
데이터 흐름 분석 예시
다음 Path Traversal 문제에서 개발자는 입력을 삭제(sanitize)하지 않았습니다. 이를 통해 공격자는 패스 통과 공격을 수행하여 암호 파일과 같은 민감한 데이터를 포함한 파일 시스템의 모든 파일에 액세스할 수 있습니다.

데이터 흐름 외부 링크 열기
Git 리포지토리에서 표시된 소스 코드를 열려면 오른쪽 패널 위의 파일 이름을 선택하십시오. 이 예에서는 파일 이름이 "routes/profileImageUrlUpload.ts"입니다.
소스 코드가 통합된 Git 리포지토리에 나타나 취약점을 수정할 위치를 정확히 보여줍니다. 코드의 취약점을 해결하기 위해 필요한 수정을 수행할 수 있습니다.

수정 분석
수정 분석은 코드에서 발견된 취약점 문제를 수정하는 데 도움이 됩니다. 발견된 취약점 유형에 대한 세부 정보, 이 문제를 예방하기 위한 사용 가능한 모범 사례 및 글로벌 오픈소스 커뮤니티의 수정 코드 예제를 제공합니다.
식별된 특정 취약점에 대한 심층적인 세부 정보를 탐색하려면 CWE 링크를 열어 취약점 유형에 대해 자세히 알아볼 수 있습니다. CWE-22 및 CWE-601 예제를 참조하십시오.
일부 취약점에는 취약점을 이해하고, 수정하고, 예방하는 방법에 대한 대화형 레슨 링크가 포함되어 있습니다. Snyk Learn을 참조하십시오.

수정 분석 보기
Snyk Web UI에 로그인하고 Group 및 Organization을 선택합니다.
Projects로 이동하여 리포지토리의 프로젝트가 포함된 타겟 폴더를 선택합니다.
Code analysis 프로젝트를 엽니다.
(선택 사항) 특정 취약점 문제를 검색하거나 필터링합니다.
취약점 문제를 선택하고 Full details > Fix analysis로 이동합니다.
수정 분석의 일부로 다음 작업을 수행할 수 있습니다.
발견된 문제와 이를 예방하는 방법을 봅니다.
코드 샘플을 검토하고 탐색하여 글로벌 오픈소스 커뮤니티의 수정 예제를 검토합니다.
통합된 Git 리포지토리에 나타나는 수정 예제의 코드 diff를 확인하여 이 취약점이 어떻게 수정되었는지 보여줍니다. 통합된 Git 리포지토리에서 수정 분석 외부 링크 열기를 참조하십시오.
Ignore 버튼을 사용하여 열려 있는 취약점 문제를 무시합니다. 문제 무시를 참조하십시오.
Fix analysis 페이지에서는 다음을 수행할 수 있습니다.
수정 분석 외부 링크 열기
Git 리포지토리에서 취약점에 대한 코드 수정을 열려면 오른쪽 패널 위의 Git 리포지토리를 선택하십시오. 이렇게 하면 문제를 해결하는 Git 리포지토리 코드의 차이점이 표시됩니다. 이 예에서 Git 리포지토리 이름은 "eclipse-vertx/vert.x"입니다.

수정 사항이 Git 리포지토리에 나타나 취약점을 수정할 위치를 정확히 보여줍니다. 취약점을 해결하기 위해 필요한 수정을 수행할 수 있습니다.

심각도 점수 요소
Snyk Code는 문제를 High, Medium, Low 심각도 수준으로 보고합니다. Snyk Code는 현재 Critical 심각도 수준을 사용하지 않습니다. 심각도 점수는 다음 요소를 기반으로 합니다.
취약점 고유의 품질
수명 동안 취약점의 진화
예외
코드, 파일 이름 또는 폴더에서 test라는 단어가 포함된 곳에서 취약점이 감지되면 심각도가 낮은 취약점으로 간주됩니다. 이는 모든 언어에 적용됩니다. CWE의 심각도는 환경에 따라 변경될 수 있습니다.
우선순위 점수 요소
우선순위 점수(Priority Score)를 사용하여 중요도, 위험, 빈도 및 수정 분석 가용성에 따라 발견된 문제를 필터링하고 우선순위를 지정하십시오.
각 문제에 대한 우선순위 점수는 0에서 1,000 사이이며 요소 중 하나가 변경되면 자동으로 변경됩니다. 예를 들어 문제의 심각도 수준이 증가하거나 감소하면 문제의 우선순위 점수가 그에 따라 변경됩니다.
PRIORITY SCORE 슬라이더를 사용하여 표시하려는 점수의 범위를 설정함으로써 우선순위 점수로 코드 분석 프로젝트의 문제를 필터링할 수 있습니다(우선순위 점수로 문제 보기 참조).
심각도 수준이 높을수록 문제의 보안 위험이 높습니다. 각 심각도 수준은 문제에 다른 점수를 추가합니다. 점수는 최대 500점이 될 수 있습니다. 현재 Snyk Code는 Critical 심각도 수준을 사용하지 않습니다.
문제에 실제 수정 예제가 있는 경우 수정하기 쉬운 것으로 표시되고 우선순위 점수가 더 높습니다. 점수는 최대 200점이 될 수 있습니다. 수정 분석을 사용할 수 있는 경우 문제의 Full Details 패널의 Fix analysis 탭에 표시됩니다.
프로젝트 내 문제 발생
Code Analysis 프로젝트에 특정 문제가 나타나는 횟수입니다. 빈도가 높을수록 위험과 점수가 높아집니다. 점수는 최대 100점이 될 수 있습니다.
파일 내 문제 발생
특정 파일에 문제가 나타나는 횟수입니다. 빈도가 높을수록 위험과 점수가 높아집니다. 점수는 최대 100점이 될 수 있습니다.
커뮤니티 프로젝트
Snyk이 조사한 외부 오픈소스 프로젝트에서 문제가 수정된 횟수입니다. 점수는 최대 100점이 될 수 있습니다.
문제에 프로젝트 태그가 있으면 우선순위 점수가 100점 감소합니다. 이 내부 태그는 다음 중 하나일 수 있습니다.
Test - 문제가 테스트 파일에서 발견되었습니다.
Beta - 문제의 취약점 유형이 베타 상태입니다. 이러한 내부 태그는 Snyk Code 분석에 의해 자동으로 할당됩니다.
정량적 요소
정보가 공개적으로 제공되는 다른 SAST 제품의 심각도 점수
Snyk 취약점 데이터베이스에서 유사한 취약점을 식별한 심각도 점수
정성적 요소
소스의 심각도, 직접 대 간접
싱크의 확산도 및 영향
보안 팀 경험 및 연구
고객 피드백
예시: CWE-22: Path Traversal
CWE-22 Path Traversal의 경우, 취약점이 테스트에서 발생하면 Low 심각도입니다. 그렇지 않고 직접 소스에서 온 것이라면 High 심각도입니다. 그렇지 않으면 Low 심각도입니다.

예시: CWE-601: Open Redirect
CWE-601 Open Redirect의 경우, 취약점이 테스트에서 발생하면 Low 심각도입니다. 그렇지 않고 직접 소스에서 온 것이라면 Medium 심각도입니다.

Last updated