논문 리뷰

[논문] LLM-Assisted Static Analysis for Detecting Security Vulnerabilities

aaa0843 2025. 4. 8. 00:23

1. 개요 (Abstract)

기존의 프로그램 정적 분석 도구는 인간이 작성한 명세(specification)에 의존하여 보안 취약점을 탐지하므로, 실제 환경에서는 효과가 제한적이다. LLM(대형 언어 모델)은 코드 생성에는 뛰어나지만, 전체 저장소 수준의 정교한 코드 추론에는 한계가 있다.

본 논문에서는 IRIS라는 뉴로-심볼릭(neuro-symbolic) 접근법을 제안하여, LLM과 정적 분석을 결합해 전체 프로젝트를 분석하고 보안 취약점을 탐지한다. 특히 LLM을 사용해 taint specification을 추론하고 맥락 기반 분석을 수행함으로써 인간 개입을 최소화한다.

성과 요약:

  • 새로운 Java 취약점 데이터셋 CWE-Bench-Java (취약점 120개 포함) 제작
  • 기존 정적 분석 도구 CodeQL은 27개 탐지
  • IRIS + GPT-4는 55개 탐지 (+28개)
  • 평균 거짓 탐지율(FDR)을 5%P 감소시킴
  • 기존 도구로는 탐지 불가능한 6개의 신규 취약점 발견

2. 동기 (Motivation)

기존 정적 분석 도구의 한계:

  1. 타사 API 명세 누락으로 인해 탐지 누락 발생
  2. 정확한 문맥 추론 부족으로 거짓 탐지율이 높음
  3. 기계학습 기반 기법들도 실전에서는 제한적 성능

LLM의 한계:

  • 코드 생성에는 유능하지만, 프로젝트 전체 수준의 논리적 취약점 탐지에는 부족

해결 방안:

  • LLM이 보유한 지식을 정적 분석 도구와 결합하여, 전체 저장소 수준에서 취약점을 탐지하는 IRIS 시스템 제안

3. IRIS 시스템 구조

주요 구성 요소:

  1. 후보 API 추출
  2. 외부 라이브러리 및 내부 함수의 formal parameter들을 source/sink 후보로 추출
  3. LLM을 통한 Source/Sink 명세 추론
  4. LLM에게 prompt를 주어 source, sink를 구분하도록 요청
  5. 정적 분석 수행 (CodeQL 사용)
  6. LLM이 추론한 명세를 기반으로 CodeQL을 실행하여 취약점 탐지
  7. 문맥 기반 필터링
  8. LLM을 이용해 탐지된 경로가 진짜 취약점인지 거짓 양성인지 분류

기술적 정의:

  • taint source/sink: 악의적 데이터의 시작점과 종료점
  • sanitizer: 데이터 흐름을 막는 정화 로직

4. 데이터셋: CWE-Bench-Java

  • 총 120개의 취약점
    • CWE-22: 경로 조작 (55개)
    • CWE-78: 명령어 삽입 (13개)
    • CWE-79: XSS (31개)
    • CWE-94: 코드 삽입 (21개)
  • 특징
    • Maven 기반 실무 프로젝트
    • 평균 30만 LOC (최대 700만 LOC)
    • GitHub URL, 취약한 버전, 수정 커밋 포함
    • 자동 빌드 및 수동 확인 지원

5. 평가 결과

탐지 성능 비교 (총 120개 중 탐지 수):

방법 탐지 수 FDR (↓) F1 점수 (↑)

CodeQL 27 90.03% 0.076
IRIS + GPT-4 55 84.82% 0.177
IRIS + GPT-3.5 47 90.42% 0.096
  • GPT-4 사용 시 가장 높은 탐지 성능
  • 작은 LLM(DeepSeekCoder 7B)도 높은 성능 달성 (탐지 52건)

신규 취약점 탐지:

  • 30개 최신 Java 프로젝트에 대해 IRIS 적용
  • 기존 도구가 탐지하지 못한 6개의 신규 취약점 탐지 (예: Zip Slip 등)

LLM이 추론한 명세 품질:

  • GPT-4 기준 sink 명세의 재현율 87.11%
  • 수동 평가 결과 precision 70% 이상

6. 기존 연구와의 차별성

기존 접근 IRIS 접근

정적 분석만 사용 정적 분석 + LLM 조합
API 명세 수동 작성 필요 LLM이 자동 추론
많은 거짓 양성 발생 문맥 기반 필터링으로 감소
메서드 단위 탐지 전체 프로젝트 단위 탐지

7. 결론 및 한계점

  • IRIS는 정적 분석과 LLM의 결합을 통해 취약점 탐지 성능을 대폭 향상시킴
  • 새로운 데이터셋과 함께 공개되어 reproducibility 보장
  • 한계점:
    • 다른 언어로의 일반화는 아직 검증되지 않음
    • 많은 LLM 호출로 인해 비용 발생
    • 개발자에게 유용한 리포트 형식은 아직 미흡