Kernkonzepte
대규모 언어 모델을 활용하여 소프트웨어 코드 내 취약점의 정확한 위치를 자동으로 파악할 수 있다.
Zusammenfassung
이 연구는 대규모 언어 모델(LLM)의 자동 취약점 위치 파악(AVL) 기능을 종합적으로 분석했다. 10개 이상의 선도적인 LLM을 대상으로 조사했으며, 이들은 인코더 전용, 인코더-디코더, 디코더 전용 등 3가지 아키텍처 유형으로 구성되어 있다. 연구팀은 제로 샷 학습, 원 샷 학습, 판별 파인 튜닝, 생성 파인 튜닝 등 4가지 접근법을 활용해 LLM의 효과를 탐구했다.
연구 결과, 판별 파인 튜닝을 통해 LLM이 기존 학습 기반 방법보다 크게 향상된 성능을 보였다. 특히 CodeLlama-7B가 BV-LOC 데이터셋에서 F1 점수 82.0%를 기록하며 기존 최고 모델 대비 36.2% 향상을 달성했다. 반면 다른 접근법은 상대적으로 효과적이지 않았다.
연구팀은 또한 LLM의 강건성을 CWE(Common Weakness Enumeration) 유형과 프로젝트 간 분석을 통해 평가했다. LLM은 다양한 취약점 유형에 대해 우수한 적응력과 정확성을 보였지만, 일부 특정 취약점 유형과 이전에 보지 못한 취약점에 대해서는 한계를 보였다. 이는 LLM이 다양한 취약점 패턴을 인식하고 세부적으로 구분할 수 있도록 지속적으로 개선되어야 함을 시사한다.
연구팀은 판별 파인 튜닝 과정에서 두 가지 주요 과제를 파악했다. 첫째, 인코더 기반 LLM은 입력 길이 제한으로 인해 일부 토큰을 처리하지 못하는 문제가 있다. 둘째, 디코더 기반 LLM은 단방향 주의 메커니즘으로 인해 양방향 문맥을 충분히 고려하지 못한다. 이에 연구팀은 슬라이딩 윈도우와 우향 임베딩이라는 두 가지 전략을 제안했으며, 이를 통해 성능을 최대 24.1% 향상시킬 수 있었다.
Statistiken
취약점이 있는 함수의 평균 토큰 수는 1,515.4개이다.
BV-LOC 데이터셋에는 10,811개의 취약점이 포함되어 있다.
SC-LOC 데이터셋에는 1,369개의 취약점이 포함되어 있다.
Zitate
"대규모 언어 모델을 활용하여 소프트웨어 코드 내 취약점의 정확한 위치를 자동으로 파악할 수 있다."
"판별 파인 튜닝을 통해 LLM이 기존 학습 기반 방법보다 크게 향상된 성능을 보였다."
"LLM은 다양한 취약점 유형에 대해 우수한 적응력과 정확성을 보였지만, 일부 특정 취약점 유형과 이전에 보지 못한 취약점에 대해서는 한계를 보였다."