피드로 돌아가기
60–80% of your CVEs are unreachable. Here's how to prove it.
Dev.toDev.to
Security

Import Graph 분석을 통한 CVE 노이즈 60-80% 제거 및 VEX 자동화

60–80% of your CVEs are unreachable. Here's how to prove it.

Rajat Kumar2026년 5월 4일5advanced

Context

전통적인 SCA 도구는 의존성 트리 내 존재 여부만 판단하여 실제 호출되지 않는 취약점까지 탐지하는 과잉 탐지 문제 발생. 이로 인해 보안 엔지니어가 수동으로 Reachability를 검증하고 스프레드시트에 기록하는 비효율적인 Triage 프로세스가 반복됨.

Technical Solution

  • @typescript-eslint/parser 기반의 Static Import Graph를 구축하여 프로젝트 전역의 심볼 참조 관계 분석
  • OSV.dev, NVD, GHSA의 affected_functions 및 fix-commit diff 데이터를 추출하여 CVE별 정밀 취약 심볼 식별
  • 외부 입력 경로(HTTP, CLI 등)와 취약 심볼 간의 연결성을 분석하여 CRITICAL, HIGH, LOW, SAFE의 4단계 Verdict Tier 설계
  • 분석 결과를 CycloneDX VEX 및 OpenVEX 표준 포맷으로 자동 생성하여 SBOM의 machine-readable 증거 문서화 구현
  • ts-morph 도입을 통한 Function-level Call Graph 확장 및 프레임워크(Express, Next.js) 엔트리 포인트 탐지 로직 설계

Impact

  • 의존성 스캐너가 탐지한 CVE 중 실제 실행 경로에 포함되지 않는 60~80%의 취약점을 SAFE로 분류하여 분석 리소스 절감

Key Takeaway

단순한 라이브러리 포함 여부(Presence)가 아닌 실제 실행 가능성(Reachability) 중심의 분석 체계를 구축하여 보안 운영의 노이즈를 획기적으로 낮춘 사례


- SBOM 도입 시 단순 리스트업을 넘어 VEX(Vulnerability Exploitability eXchange) 문서 자동화 방안 검토 - 정적 분석 도구를 활용하여 실제 사용하지 않는 의존성 심볼을 식별하고 공격 표면(Attack Surface) 최소화 - CVE 우선순위 결정 시 CVSS 점수 외에 실제 유입 경로(Entry-point) 기반의 Reachability 분석 단계 추가

원문 읽기