도달 가능성 분석

circle-info

릴리스 상태

도달 가능성 분석은 특정 통합 및 프로그래밍 언어에 대해 정식 출시(GA) 상태입니다.

Snyk 도달 가능성 분석을 사용하면 애플리케이션이 취약점과 관련된 코드 요소(예: 함수, 클래스, 모듈 등)를 호출하고 있는지 식별하여 리스크를 분석할 수 있으며, 이를 통해 애플리케이션 컨텍스트에서 해당 취약점이 악용될 가능성이 높은지 확인할 수 있습니다.

도달 가능성 분석은 의사 결정을 위한 지표로 사용되거나, Snyk 리스크 점수(Risk Score)를 사용하는 더 광범위한 리스크 기반 우선순위 지정 접근 방식의 일부로 사용될 수 있습니다.

Snyk은 정적 프로그램 분석과 다양한 AI 기술의 조합을 사용하여 특정 취약점의 도달 가능성을 결정하며, 보안 연구 전문가의 검증을 거칩니다. 이러한 기능을 통해 Snyk은 스캔 전에 애플리케이션을 빌드할 필요 없이 코드를 신속하게 분석할 수 있습니다.

이 기능을 사용하려면 Snyk이 소스 코드를 분석해야 합니다. 자세한 내용은 Snyk의 데이터 처리 방식을 참조하십시오.

도달 가능한 취약점 분석 작동 방식

Snyk은 보안 전문가 분석, 프로그램 분석 및 다양한 AI 기술의 조합을 사용하여 취약점의 도달 가능성을 결정합니다. 분석 단계는 다음과 같습니다.

  • 취약점 수정을 위해 적용된 패치로 취약점 정보 보강 - Snyk 취약점 큐레이션 프로세스의 일환으로, Snyk은 유지관리자가 적용한 수정 커밋을 참조합니다.

  • 관련 요소 분석 - 수정 커밋을 기반으로, Snyk은 DeepCode AI 프로그램 분석을 사용하여 취약점과 관련된 코드 요소 및 기타 파라미터를 분석합니다.

  • 근본 원인(Root Cause) 분석 - Snyk은 DeepCode AI 및 자연어 처리(NLP) 기술을 사용하여 관련 코드 요소가 취약점의 근본 원인일 가능성에 따라 자동으로 순위를 매깁니다.

  • 도달 가능성 분석 - Snyk 스캔에 의해 애플리케이션에서 이슈가 발견되면, DeepCode 프로그램 분석 엔진을 사용하여 사용된 오픈소스 종속성 간의 호출 그래프와 관련하여 애플리케이션의 호출 그래프를 분석합니다. 애플리케이션과 근본 원인으로 분류된 코드 요소 사이에 경로가 있으면 "도달 가능한(Reachable)" 취약점으로 결과가 나옵니다.

  • 보안 전문가 감독 - Snyk 보안 전문가가 수동으로 요소를 근본 원인으로 검증하고 표시하여 시간이 지남에 따라 전체 분석을 더 정확하게 만듭니다.

도달 가능한 취약점 분석에는 오탐(false positive) 및 미탐(false negative)과 관련된 다음 고려 사항이 적용됩니다.

프로그램 분석은 정확한 결과(오탐 최소화)와 재현율(잠재적으로 악용 가능한 취약점 회피) 사이의 절충이 필요합니다.

이러한 절충을 용이하게 하기 위해, Snyk DeepCode 분석은 특정 환경에서 도달 가능한 경로가 발견될 가능성에 대한 분석을 기반으로 도달 가능한 요소 집합을 과소 근사(under-approximate)할지 여부를 실시간으로 결정합니다.

예를 들어, 리플렉션(reflection) 프로그래밍이 사용되는 경우 항상 정확한 답변을 주는 것이 가능하지는 않습니다. 이러한 경우 대량의 오탐을 반환하거나 "도달 불가능(Not reachable)"을 반환하는 것만으로는 충분하지 않습니다. Snyk 분석의 에이전틱(agentic) 역량은 주어진 코드 구조에 대해 가능한 가장 정확하고 완전한 결과를 검색하기 위해 최적화됩니다.

circle-info

자사 코드의 변경, 취약점 분석의 변화 및 SAST 엔진의 개선은 결과에 영향을 미칠 수 있습니다. 따라서 Not path found로 레이블이 지정된 취약점이 시간이 지나면서 Reachable로 변경될 수 있습니다.

정적 분석에서 도달 가능성의 한계

Snyk은 코드 요소가 도달 가능한 시점을 식별하고 입증하는 것을 목표로 하는 동시에, 코드 요소에 도달할 수 없음을 나타내는 문제도 해결하려고 노력합니다.

정적 분석 기술은 적어도 하나의 실행 경로를 통해 취약점이나 코드 요소에 도달할 수 있음을 보여줄 수 있습니다. 그러나 이에 대한 증거가 없다고 해서 해당 요소에 도달할 수 없다는 의미는 아닙니다.

도달 가능한 것으로 표시되지 않은 코드 요소라도 분석 중에 고려되지 않은 조건 하에서는 여전히 액세스 가능할 수 있습니다. 이는 불완전한 정보, 제어 흐름 문제, 잠재적인 동적 동작 또는 간과된 에지 케이스로 인해 발생할 수 있습니다.

도달 가능성은 보안 리스크를 평가하는 데 중요한 요소입니다. 이러한 리스크를 평가할 때 도달 가능한 이슈와 도달 불가능한 이슈를 모두 고려하십시오. 이를 통해 잠재적인 위협을 간과하지 않고 보안 리스크를 전체적으로 평가할 수 있습니다.

기술적 제한 사항:

  • 총 파일 수: 최대 300,000개의 파일을 업로드할 수 있습니다.

  • 총 파일 크기: 업로드된 모든 파일의 합계 크기는 3GB를 초과할 수 없습니다.

  • 개별 파일 크기: 각 개별 파일의 최대 크기 제한은 1MB입니다. 자세한 내용은 기술 사양 및 지침을 참조하십시오.

  • 파일 이름 길이: 파일 이름의 길이는 256자를 초과할 수 없습니다.

지원되는 언어 및 통합

도달 가능성 분석은 다음 언어 및 패키지 관리자에 대해 지원됩니다.

언어
패키지 관리자
릴리스 상태

Maven, Gradle

정식 출시 (GA)

npm, Yarn, pnpm

정식 출시 (GA)

pip, poetry, pipenv

얼리 액세스 (EA)

NuGet, paket

얼리 액세스 (EA)

도달 가능성 분석은 다음 통합에서 지원됩니다.

통합
릴리스 상태

정식 출시 (GA)

정식 출시 (GA)

정식 출시 (GA)

정식 출시 (GA)

정식 출시 (GA)

정식 출시 (GA)

정식 출시 (GA)

정식 출시 (GA)

얼리 액세스 (EA)

얼리 액세스 (EA)

얼리 액세스 (EA)

얼리 액세스 (EA)

얼리 액세스 (EA)

얼리 액세스 (EA)

얼리 액세스 (EA)

도달 가능성 분석 설정

지원되는 구성 옵션

Snyk은 여러 도달 가능성 분석 구성 옵션을 지원합니다.

  • 그룹 레벨: 상위 그룹의 설정을 사용하여 모든 조직에 대한 기본 도달 가능성 분석 설정을 지정할 수 있습니다. 기본 설정은 도달 가능성 분석 구성이 없는 기존 조직과 모든 신규 조직에 적용됩니다.

  • 조직 레벨: 조직 설정에서 단일 조직에 대해 도달 가능성을 활성화할 수 있습니다. 도달 가능성 분석 조직 설정은 그룹 레벨 기본값을 재정의합니다.

  • 그룹 내 모든 조직에 대해 활성화: 상위 그룹의 설정을 사용하여 그룹 내 모든 조직에 대해 도달 가능성 분석을 활성화하거나 비활성화할 수 있습니다. 일괄 설정 변경은 기존의 모든 도달 가능성 분석 조직 설정을 재정의합니다.

그룹 레벨에서 도달 가능성 활성화

여러 조직에 대해 도달 가능성 분석을 기본 설정으로 지정할 수 있습니다. 방법은 다음과 같습니다.

  1. 그룹 Settings > Snyk Open Source로 이동합니다.

  2. Reachability analysis 아래에서 Enable Reachability를 클릭하여 새로운 조직에 적용합니다.

  3. 선택 사항을 확인하여 변경 사항을 저장합니다.

그룹 레벨에서 도달 가능성 활성화
그룹 레벨에서 도달 가능성 활성화

도달 가능성 분석이 활성화되면, Snyk은 프로젝트 스캔의 일환으로 분석을 수행합니다.

circle-info

수동 테스트(manual test)를 트리거하여 기존 프로젝트에 도달 가능성 분석을 적용할 수 있습니다.

조직 레벨에서 도달 가능성 활성화

조직에 대해 도달 가능성 분석을 활성화하고 도달 가능한 취약점에 대한 프로젝트 분석을 시작하려면:

  1. 조직 Settings > Snyk Open Source로 이동합니다.

  2. General 아래에서 Enable reachability analysis를 선택합니다.

  3. 선택 사항을 확인하여 변경 사항을 저장합니다.

조직 레벨에서 도달 가능성 활성화
조직 레벨에서 도달 가능성 활성화

도달 가능성 분석이 활성화되면, 프로젝트 스캔의 일환으로 분석이 수행됩니다.

circle-info

수동 테스트(manual test)를 트리거하여 기존 프로젝트에 도달 가능성 분석을 적용할 수 있습니다.

그룹 내 모든 조직에 대해 도달 가능성 활성화

그룹 내 모든 조직에 대해 도달 가능성을 활성화하거나 비활성화하여 기존의 모든 조직 레벨 설정을 재정의할 수 있습니다.

  1. 그룹 Settings에서 Snyk Open Source로 이동합니다.

  2. General 아래에서 Enable/Disable reachability analysis를 선택하여 모든 조직에 대해 활성화합니다.

  3. 선택 사항을 확인하여 변경 사항을 저장합니다.

그룹 내 모든 조직에 대해 도달 가능성 분석 활성화
그룹 내 모든 조직에 대해 도달 가능성 분석 활성화

Snyk CLI 및 CI/CD 통합을 위한 도달 가능성 활성화

circle-info

Snyk CLI 및 CI/CD 통합을 위한 도달 가능성 분석은 얼리 액세스(Early Access) 상태입니다.

Snyk은 CLI 및 CI/CD 통합을 통해 도달 가능성 분석 수행을 지원합니다. Reachability analysis for Snyk CLI and CI/CD integrations가 활성화되면, 모든 그룹과 조직에 대해 Snyk Preview 토글이 기본적으로 켜집니다.

그룹 또는 조직에 대해 Reachability in the Snyk CLI and CI/CD integrations를 활성화하거나 비활성화하려면:

  1. 그룹 또는 조직 Settings > Snyk Preview로 이동합니다.

  2. Reachability for Snyk CLI and CI/CD integrations 아래에서 Enable Reachability for Snyk CLI and CI/CD integrations를 켜거나 끕니다.

  3. 선택 사항을 확인하여 변경 사항을 저장합니다.

Snyk Preview에서 Snyk CLI 및 CI/CD 통합을 위한 도달 가능성 활성화
Snyk Preview에서 Snyk CLI 및 CI/CD 통합을 위한 도달 가능성 활성화

Broker 연결을 위한 도달 가능성 분석 활성화

SCM에 Broker 연결을 사용하는 경우, 소스 파일에 대한 액세스를 제공하도록 Broker를 구성하십시오.

Snyk 웹 UI에서 도달 가능성 분석 사용

취약점이 식별된 후에는 다음 중 하나의 도달 가능성 상태를 가집니다.

  • REACHABLE - 애플리케이션에서 취약한 코드로 이어지는 직접 또는 간접 경로가 발견되었습니다.

  • NO PATH FOUND - 애플리케이션에서 취약한 코드로 이어지는 경로가 발견되지 않았습니다.

  • NOT APPLICABLE - 이 취약점에 대해 도달 가능성이 지원되지 않습니다.

circle-info

취약점 상태가 NO PATH FOUND라고 해서 해당 취약점이 완전히 도달 불가능하거나 악용 불가능하다는 의미는 아닙니다.

도달 가능성 분석 상태는 프로젝트 페이지, 리스크 점수(Risk Score)의 일부, 이슈 상세 보고서(Issues Detail report), 그리고 그룹 ID별 이슈 가져오기(Get issues by Group ID) API 엔드포인트를 통해 확인할 수 있습니다.

프로젝트 페이지에 표시되는 도달 가능성 분석

Snyk 웹 UI를 사용하여 프로젝트를 가져오거나 테스트하면 Snyk이 프로젝트를 모니터링하며, 도달 가능한 취약점 분석 결과가 다음과 같이 프로젝트 페이지에 나타납니다.

  • 필터로 표시 - Reachable 필터를 사용하여 도달 가능성에 따라 결과를 필터링할 수 있습니다.

  • 도달 가능성 배지 - 취약점이 도달 가능한 경우 이슈 카드에서 신속하게 확인할 수 있게 해줍니다.

  • 호출 경로 (Call path) - 결과를 검증하기 위해 귀하의 코드에서 취약한 코드 요소까지의 경로를 볼 수 있게 해줍니다.

프로젝트 UI의 도달 가능성 필터, 배지 및 호출 경로
프로젝트 UI의 도달 가능성 필터, 배지 및 호출 경로

CLI monitor를 통해 가져온 프로젝트의 경우, 도달 가능성 상태는 monitor 시점에 캡처된 코드 스냅샷을 기반으로 합니다. 반복 테스트는 새로운 취약점이 도입되거나 기존 취약점이 변경될 때 프로젝트를 업데이트합니다. 도달 가능성 상태를 최신으로 유지하려면 Snyk은 CLI monitor를 지속적으로 사용할 것을 권장합니다.

리스크 점수(Risk Score)의 일부로서의 도달 가능성 분석

리스크 점수(Risk Score)는 취약점과 관련된 여러 요인이나 애플리케이션의 컨텍스트를 결합하여 총체적인 리스크 기반 우선순위 지정을 적용하는 데 도움을 줍니다. 도달 가능성 분석은 전체 점수를 크게 높이는 이러한 컨텍스트 요인 중 하나입니다.

리스크 점수는 프로젝트 페이지, API 및 보고서에서 확인할 수 있습니다.

리스크 점수의 일부인 도달 가능성
리스크 점수의 일부인 도달 가능성
circle-info

리스크 점수 이전의 레거시 모델인 우선순위 점수(Priority score)도 도달 가능한 취약점을 고려합니다.

Snyk CLI에서 도달 가능성 분석 사용

Snyk은 CLI 버전 1.1301.0 이상에서 도달 가능성을 지원합니다. 도달 가능성 분석을 수행하려면 --reachability=true 옵션을 사용하십시오.

circle-info

--reachability를 사용할 때 Snyk은 새로운 발견 사항 스키마를 반환합니다. 일부 레거시 필드는 이 스키마에서 사용 불가능할 수 있습니다. 사용하기 전에 자동화가 실패하지 않도록 먼저 확인하십시오.

기본적으로 Snyk은 도달 가능성 분석을 위해 현재 작업 디렉토리의 소스 코드를 업로드합니다. 분석을 위해 별도의 디렉토리에 있는 소스 파일을 지정하려면 --source-dir 옵션을 사용하십시오.

도달 가능성을 기준으로 발견 사항을 필터링하려면 --reachability-filter=reachable 옵션을 사용하십시오.

지원되는 옵션의 전체 목록은 test, monitor, sbom test CLI 명령에 대한 도움말 문서를 참조하십시오.

사람이 읽을 수 있는 출력

기본적으로 발견 사항은 각 발견 사항에 대한 속성으로 Reachability가 포함된 사람이 읽을 수 있는 출력으로 반환됩니다.

JSON 출력

발견 사항을 JSON으로 출력하려면 --json 옵션을 사용하십시오. reachabilityvulnerabilities의 속성입니다.

Last updated