AI Sparkup

최신 AI 쉽게 깊게 따라잡기⚡

Snyk VulnBench JS 1.0 – LLM 보안 리뷰의 반복 가능성을 측정하는 벤치마크

Snyk VulnBench JS 1.0은 같은 JavaScript/Express 코드, 같은 프롬프트, 같은 하네스에서 LLM 보안 리뷰를 반복 실행했을 때 취약점 결과가 얼마나 안정적으로 재현되는지 측정한 벤치마크다. 핵심 결론은 LLM과 SAST 중 하나가 이긴다는 이야기가 아니라, 두 방식이 서로 다른 실패 모드를 가진다는 점이다.

벤치마크 설계

벤치마크는 10개의 작은 JavaScript fixture 프로젝트와 44개의 Snyk Code 기준 취약점으로 구성된다. 여섯 설정을 각 태스크에 5회씩 실행해 총 300회 스캔을 만들었다.

설정유형반복
Snyk Code SAST명령형 기준선태스크당 5회
Claude Opus 4.6 Medium/HighClaude Code 하네스태스크당 5회
Claude Opus 4.7 MaxClaude Code 하네스태스크당 5회
Claude Sonnet 4.6 Medium/HighClaude Code 하네스태스크당 5회

모델은 프로젝트 파일을 읽을 수 있지만 reference findings 파일은 볼 수 없다. 점수는 Snyk Code reference set과의 일치도를 기준으로 한 Snyk-reference F1이다. 이 점수는 독립적인 완전 정답률이 아니라, Snyk Code 기준 결과를 얼마나 반복적으로 재현하는지 보는 좁은 지표다.

주요 결과

  • 최고 recall LLM 설정도 Snyk Code 기준 취약점의 81%만 찾았다.
  • 최고 점수 LLM 설정의 Snyk-reference F1은 75.4%로, deterministic SAST 기준 재현과 24.6포인트 차이가 났다.
  • LLM-only 취약점 보고의 거의 절반은 동일 조건 5회 중 1회만 등장했다.
  • 기준 취약점과 매칭된 LLM 결과는 훨씬 안정적이었다. reference-matched findings 중 85%가 5회 모두 반복됐다.
  • LLM은 command injection, SQL injection, SSRF, hardcoded credentials, prototype pollution처럼 신호가 큰 패턴에 강했고, repeated path traversal, resource limit, framework information exposure, sanitization/type validation 같은 체계적 열거에는 약했다.

해석

LLM 보안 리뷰의 강점은 낯선 코드에서 의미를 추론하고, SAST 규칙이 놓친 가능성을 설명하는 데 있다. 반대로 SAST는 같은 규칙·같은 코드에서 같은 결과를 내는 결정성이 강하다. VulnBench 결과는 “LLM을 SAST 대신 쓴다”보다 “SAST로 deterministic baseline을 만들고 LLM으로 보완 신호를 얻는다”는 운영 모델을 지지한다.

특히 LLM-only finding은 두 부류로 나눠야 한다. 일부는 실제 취약점처럼 보이지만 실행 가능한 sink가 없는 과잉 보고다. 다른 일부는 Snyk Code reference set이 놓친 실제 gap일 수 있다. 반복 횟수와 독립 검증을 함께 봐야 triage 비용을 줄일 수 있다.

사용 대상 및 케이스

  • AppSec 팀: LLM 보안 리뷰를 PR 게이트에 넣기 전 반복 가능성과 triage 비용을 측정할 때
  • 에이전트 평가 팀: 보안 리뷰 에이전트가 한 번만 맞히는지, 반복 실행에서도 안정적인지 분리해 보고 싶을 때
  • 개발 플랫폼 팀: SAST와 LLM 리뷰를 함께 배치하는 정책을 설계할 때

관련 문서

참고 자료



AI Sparkup 구독하기

최신 게시물 요약과 더 심층적인 정보를 이메일로 받아 보세요! (무료)