Large Language Model for Vulnerability Detection and Repair: Literature Review and the Road Ahead
아주 따끈따끈한 논문이다. 무려 25년 5월 27일,,
간단한 정리와 함께 우리 연구에 필요한 것들을 생각해봐야겠다.
1. 논문 개요 및 배경
이 논문은 LLM(대형 언어 모델)을 소프트웨어 취약점 탐지와 수리에 적용한 연구들을 체계적으로 검토한 최초의 문헌조사이다. 2018년부터 2024년까지 발표된 58편(학회·저널 43편, 프리프린트 15편)의 연구를 대상으로,
(1) 어떤 LLM을 사용했는지
(2) 취약점 탐지에서 LLM을 어떻게 적응시켰는지
(3) 수리에서는 어떻게 적응시켰는지
(4) 데이터셋 및 실무 배포 전략의 특성은 무엇인지
이 네 가지 주요 연구질문(RQ)을 중심으로 분석하였다.
전통적인 rule 기반 탐지와 프로그램 분석 수리 도구가 가진 한계(높은 오탐률, 취약점 종류에 대한 범용성 부족)를 극복하기 위해 LLM이 어떠한 잠재력을 보이는지 조망한다.
이 연구에서는 조사를 위해 위와 같은 구조도를 그렸는데, 보면 우리가 계속 생각하던 방향(RAG나 fewshot, 정적분석 등)에 더해 처음 보는 방식들도 다양하게 나와있다. 일단 24년까지 나온 연구는 거의 저 그림에 속해있지 않을까 싶다.
새로운 방향을 찾고 관련 논문을 읽어볼 때 아주 도움이 될 것 같다.
2. 연구 질문(RQs) 및 방법론
논문은 네 가지 핵심 RQ를 설정하였다.
- RQ1: 취약점 탐지와 수리에 어떤 LLM이 활용되었는가?
- RQ2: 탐지에 LLM을 어떻게 적응(fine-tuning, prompt engineering, RAG)했는가?
- RQ3: 수리에 LLM을 어떻게 적응했는가?
- RQ4: 데이터셋의 특징과 배포(deployment) 전략은 어떠한가?
이를 위해 13개 권위 학회·저널과 7개 전산 데이터베이스(IEEE, ACM, arXiv 등)를 이용해 논문을 수집한 후, 3단계(초기 필터링, 초록·전문 검토, 품질 평가) 과정을 거쳐 최종 58편을 선정하였다. 품질 평가는 발표지·기여도·실험 상세도·데이터 명확성·실험 결과 설득력 다섯 기준 각각 0–3점으로 채점해 총점 12점 이상인 논문만 포함했다.
3. RQ1: 사용된 LLM 분포
58편 연구에서 총 37종의 LLM이 사용되었으며, 탐지와 수리에서 주요 모델은 다르다.
- 탐지(task: binary classification): CodeBERT(125M)가 전체 사용 횟수의 26.1%를 차지해 최다, 그다음으로 GPT-3.5(9.8%)가 뒤를 이었다. 모델 구조별로는 encoder-only가 47.8%로 절반에 가까웠다.
- 수리(task: seq2seq): CodeT5(220M)가 15.6%로 최다, GPT-3.5(11.1%), GPT-4(8.9%) 순이었다. 구조별로는 decoder-only와 encoder-decoder가 각각 31.1%, 26.7%를 차지했다.
이처럼 가벼운 encoder-only 모델은 취약점 탐지에, 대형(decoder·commercial) 모델은 수리에 주로 활용되었다.
4. RQ2: 취약점 탐지에 대한 LLM 적응기법
취약점 탐지에서는 세 가지 기법이 주류를 이룬다:
- Fine-Tuning (≈73%)
- 데이터 중심 혁신: 불균형 학습, 양성·비표지 학습(PU learning), 식별자 교체(counterfactual) 등으로 데이터 품질 개선
- 프로그램 분석 결합: AST·PDG·프로그램 슬라이싱 정보 통합
- LLM+다른 DL 모듈: GNN, Bi-LSTM 결합
- 도메인 특화 사전학습: 마스킹, 대조학습, 종속성 예측 등
- 인과 학습: do-calculus 기반 학습으로 비robust feature 억제
- Prompt Engineering (≈17%)
- 역할(role)·태스크 설명, 취약점 예시·보조 정보 포함, 체인 오브 소트(prompt에 “Let’s think step by step” 추가), few-shot 설계
- Retrieval-Augmentation (RAG, ≈10%)
- TF-IDF·BM25·CodeBERT 임베딩 기반 유사 코드 검색 후 컨텍스트에 결합
이들 기법은 개별 단계(데이터 준비, 모델 구성, 훈련, 배포)별로 다양한 전략을 제시하며 탐지 성능을 향상시킨다.
5. RQ3: 취약점 수리에 대한 LLM 적응기법
수리에서는 크게 두 기법이 사용되었다:
- Fine-Tuning (≈63%)
- 데이터 중심: AST, CWE 예제, 취약점 유발·수리 커밋 등 다양한 입력 활용
- 모델 설계 혁신: Transformer 기반 query, vulnerability mask 학습
- 도메인 특화 사전학습(버그 픽스→취약점 픽스 transfer learning)
- 강화 학습: CodeBLEU·BERTScore 보상 함수로 RL fine-tuning
- Prompt Engineering (≈37%)
- 취약점 설명 및 위치 주석, PVS(잠재 취약문) 강조, 프로그램 분석 보조정보 통합
- few-shot exemplar 동적 선별 후 패치 생성
이로써 LLM은 단순 코드 생성에서 벗어나, 취약 코드 입력을 정상 코드로 바꾸고 그 이유를 설명하는 역할까지 수행한다.
6. RQ4: 데이터셋과 배포 특성
- 입력 단위(granularity): 대부분 함수(function) 레벨, 일부 라인(line) 레벨. 클래스·레포지토리 레벨은 손에 꼽힐 정도로 미미하다.
- 데이터 품질: 탐지용 데이터는 heuristic 기반 라벨(취약점 수정 커밋 전·후 함수 비교)로 노이즈·오라클 이슈가 크다. 수리용 데이터는 테스트케이스 부재로 수리 결과 검증이 곤란하다.
- 배포 전략: 연구 대부분은 오프라인 평가에 그치며, 개발자와의 상호작용(설명, 피드백)이나 IDE·CI 도구와의 통합은 전무하다.
실제 현업 도입을 위해서는 사용자 신뢰·협업 인터페이스와 워크플로우 통합이 필수적이다.
7. 한계점 및 향후 연구 로드맵
논문은 여섯 가지 한계점을 지적한다.
- 작은 입력 단위(function/line)
- 고품질 데이터셋 부재
- 복잡한 취약점(인터프로시저, 희귀 CWE)에 대한 성능 저하
- 경량 LLM 편중
- 배포·상호작용 고려 부족
- 정확도·강건성 미흡
이를 극복하기 위한 단계별 로드맵을 제시한다(고품질 테스트셋 구축, 레포지토리 레벨 솔루션, 상호작용 인터페이스 설계, 대형 LLM 심층 활용 등).
멋지고 힘든 로드맵이다...
초록색 네모는 현재까지 주로 연구된 부분, 회색 네모와 점선 화살표는 앞으로 연구가 필요한 부분이라고 한다.
Stage 1 (초록색 모듈 개별 탐구)
코드 라인/메서드 단위로 휴리스틱 라벨링한 데이터를 대상으로 경량·대형 LLM을 fine-tuning과 prompting 기반으로 최적화하고, 구축된 오프라인 벤치마크에서 성능을 검증하는 것
Stage 2 (모듈 간 경로 탐색)
테스트케이스 기반 라벨링, 커스텀 LLM, LLM 에이전트 구조 등 이종 기법을 점선 화살표 경로대로 교차 적용하여 프로토타입을 개발하고, 효과를 비교·분석하는 것
Stage 3 (차세대 솔루션 종합)
Stage 1·2 결과를 통합해 함수·클래스·레포지토리 전 범위를 지원하는 멀티 그라뉼러 엔진과 IDE·CI/CD 통합 기능을 갖춘 실전용 고성능 도구를 구현하는 것
이번 논문도 도움이 될 만한 점이 많았던 것 같다. 앞으로의 프로젝트 방향 설정에서 참고하면 좋겠다.