LLM 생성 코드의 취약점 탐지를 위한 의미 기반 적응 퍼징 SAFuzz

LLM 생성 코드의 취약점 탐지를 위한 의미 기반 적응 퍼징 SAFuzz
안내: 본 포스트의 한글 요약 및 분석 리포트는 AI 기술을 통해 자동 생성되었습니다. 정보의 정확성을 위해 하단의 [원본 논문 뷰어] 또는 ArXiv 원문을 반드시 참조하시기 바랍니다.

초록

SAFuzz는 대형 언어 모델(LLM)로 생성된 알고리즘 코드의 취약점을 효율적으로 찾기 위해 의미‑aware 퍼징과 적응형 자원 할당을 결합한 프레임워크이다. 프롬프트 변형, 문제‑특화 퍼징 하니스 자동 생성, 정적·동적 특징을 이용한 위험 예측 모델을 통해 비취약 코드에 대한 테스트를 조기에 차단하고, 고위험 코드에 더 많은 퍼징 시간을 할당한다. CSES 알고리즘 문제 96개(총 1152개 변형)에서 GreenFuzz 대비 정밀도 85.7% (77.9%→85.7%)와 1.71배 시간 절감 효과를 보였으며, 기존 유닛 테스트와 결합 시 버그 탐지 재현율을 67.3%에서 79.5%로 끌어올렸다.

상세 분석

SAFuzz는 기존 퍼징 시스템이 갖는 두 가지 근본적인 한계를 해결한다. 첫째, AI‑생성 코드 특유의 “프롬프트 의존성”을 활용해 동일 문제에 대해 12가지 프롬프트 변형을 생성한다. 이 과정에서 원본, 의미 변형, 고의적 버그 삽입 변형을 모두 포함해, LLM이 동일한 요구사항을 다르게 해석하면서 발생할 수 있는 다양한 알고리즘·자원 취약성을 포착한다. 둘째, 하니스 생성 단계에서 단순 입력‑출력 검증을 넘어 문제 명세에서 추출한 수치·구조 제약을 반영한 의미 기반 오라클을 자동으로 만든다. 타임아웃, 오버플로, 메모리 크래시, 결정성 검증 등 네 종류의 오라클을 제공함으로써 전통적인 크래시‑중심 퍼징이 놓치기 쉬운 “논리적·성능적” 결함까지 탐지한다.

위험 예측 모델은 정적 코드 메트릭(복잡도, 호출 그래프, 사이클 수 등)과 LLM이 추출한 동적 의미 특징(입력 가중치, 알고리즘 유형, 예상 시간 복잡도 등)을 14개의 피처로 결합한다. 이 하이브리드 모델은 Gradient Boosting 기반 이진 분류기로 학습돼, 각 프로그램에 취약점 확률 점수를 부여한다. 점수가 임계값 이하인 경우 조기 차단하고, 높은 점수를 받은 대상에 대해 가중치 비례식으로 퍼징 시간(예: 30 s → 90 s)과 반복 횟수를 할당한다. 또한, 실시간 커버리지와 오라클 트리거 빈도를 모니터링해 “포화 윈도우”를 동적으로 조정, 불필요한 퍼징을 중단한다.

실험에서는 CSES 알고리즘 문제집을 기반으로 96개의 문제와 1152개의 LLM‑생성 변형을 대상으로 GreenFuzz와 비교했다. 정밀도는 77.9%에서 85.7%로 7.8%p 상승했으며, 전체 퍼징 시간은 1.71배 단축되었다. 재현율은 약간 감소했지만(≈0.5%p) 유닛 테스트와 결합했을 때 전체 버그 탐지 재현율이 67.3%→79.5%로 크게 향상되었다. 하니스 생성 성공률은 92% 이상이며, 재시도 메커니즘 덕분에 복잡한 문제에서도 지수적 비용 폭증을 방지한다.

한계점으로는 (1) 프롬프트 변형이 사전에 정의된 템플릿에 의존해 새로운 도메인에선 추가 설계가 필요하고, (2) LLM‑기반 특징 추출이 LLM 품질에 민감해 모델 교체 시 재학습이 요구되며, (3) 현재는 C++/Java 기반 알고리즘 문제에 초점을 맞추어 일반적인 시스템·네트워크 코드에는 적용 검증이 부족하다. 향후 연구에서는 자동 프롬프트 변형 생성, 멀티‑언어 지원, 그리고 정적 분석과 동적 시뮬레이션을 결합한 하이브리드 오라클 설계가 기대된다.


댓글 및 학술 토론

Loading comments...

의견 남기기