C/C++ 소스코드 취약점 탐지를 위한 Language Model의 활용성 분석에 대한 연구
A Study on Language Model Usability Analysis for Vulnerability Detection in C/C++ Source Code
- 주제(키워드) 취약점 탐지 , Language Model , Classification Model
- 발행기관 고려대학교 SW·AI융합대학원
- 지도교수 오학주
- 발행년도 2024
- 학위수여년월 2024. 8
- 학위명 석사
- 학과 및 전공 SW·AI융합대학원 소프트웨어보안학과
- 원문페이지 59 p
- 실제URI http://www.dcollection.net/handler/korea/000000288117
- UCI I804:11009-000000288117
- DOI 10.23186/korea.000000288117.11009.0001564
- 본문언어 한국어
초록/요약
소프트웨어는 제조, 금융, IT, 서비스 등 다양한 산업군에서 여러 기술과 서비스와 결합되어 사용되며, 여러 요구사항과 기능을 제공하기 위해 다양한 프로그래밍 언어로 개발된다. 그러나 다양한 프로그래밍 언어의 특성 등을 제대로 이해하지 못하고 사용하는 경우 취약한 함수 사용 및 코드 내 버그 등이 존재할 가능성이 높아진다. 실제로 매년 수천 개의 보안 취약점이 발견되고, 이를 악용되는 사례가 증가함에 따라 취약점을 탐지하는 것이 매우 중요해졌다. 이에 본 논문은 소스코드의 취약점 탐지를 위한 4가지 언어 모델(Language Model) 기반의 다양한 분류 모델들을 제안하고, 이들 모델의 성능을 평가하는 연구를 진행한다. DiverseVul 데이터 세트와 Draper VDISC 데이터 세트를 사용하여 이진 분류, 멀티 클래스 분류, 멀티 레이블 분류, 멀티 태스크 학습의 네 가지 분류 유형 모델을 생성하고 각 모델 별 성능을 정확도, 정밀도, 재현율 등 평가지표를 사용하여 비교 분석하였다. 본 연구에서는 언어 모델을 활용하여 소스코드 취약점 탐지를 수행하고, 이를 통해 취약점 탐지 작업에 언어 모델의 활용 가능성에 대한 결과를 제공하였다. 이를 기반으로 향후 다양한 언어 및 취약점 유형으로 구성된 소스코드를 활용하여 성능을 개선한다면 언어모델을 취약점 탐지 도구로 사용할 수 있을 것으로 기대된다.
more목차
초록 i
ABSTRACT iii
목차 v
표 목차 vii
그림 목차 viii
1장. 서론 1
1.1 연구 필요성 1
1.2 연구 목적 3
2장. 관련 연구 5
2.1 Language Model 5
2.1.1 CodeBERT 5
2.1.2 RoBERTa 6
2.1.3 CodeT5 6
2.1.4 GPT2 7
2.2 취약점 탐지 연구 7
2.3 LLM을 활용한 취약점 탐지 연구 10
3장. 데이터 소개 13
3.1 실험 데이터 13
3.1.1 DiverseVul Dataset 13
3.1.2 Draper VDISC Dataset 15
3.1.3 통합 데이터 세트 16
3.1.4 CWE 유형 17
4장. 분류 유형별 취약점 탐지 모델 생성 19
4.1 실험환경 19
4.2 모델 생성 프로세스 20
4.2 Data Preprocessing 21
4.3 Fine-tuning 25
4.3.1 이진 분류(Binary Classification) 25
4.3.2 멀티클래스 분류(Multi-Class Classification) 26
4.3.3 멀티레이블 분류(Multi-lable Classification) 26
4.3.4 다중작업 학습(Multi-Task Learning) 27
4.4 Evaluation 28
4.4.1 평가 지표 29
5장. 실험 결과 32
5.1 이진 분류모델 33
5.2 멀티클래스 분류 35
5.3 멀티레이블 분류 38
5.4 다중작업 학습 39
6장. 결론 44
참고문헌 46

