기술나눔

논문 연구_취약점 탐지를 위한 딥러닝 모델의 실증적 연구

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1. 소개

연구배경 : 최근 몇 년 동안 딥러닝 취약점 탐지 도구는 유망한 결과를 얻었습니다. 최첨단 모델은 F1 점수 0.9를 보고하며 정적 분석기보다 성능이 뛰어납니다. 딥 러닝이 소프트웨어 보증에 혁명을 일으킬 수 있기 때문에 결과는 매우 흥미롭습니다. 따라서 IBM, Google, Amazon과 같은 업계 기업은 이러한 도구와 데이터 세트 개발에 큰 관심을 갖고 막대한 투자를 하고 있습니다.

기존 문제 : 딥러닝 취약점 탐지는 유망하지만 아직 컴퓨터 비전이나 자연어 처리 수준에는 도달하지 못했습니다. 현재 연구 초점의 대부분은 새로운 딥 러닝 모델을 시도하고 이를 Devign 또는 MSR 데이터 세트와 같은 데이터 세트에 적용하는 것입니다. 그러나 모델이 효과적으로 처리할 수 있는 프로그램 유형이 무엇인지, 각 취약점 유형에 대한 모델을 구축해야 하는지, 아니면 좋은 훈련 데이터를 사용하여 모든 취약점 유형에 대한 통합 모델을 구축해야 하는지 등 모델 자체에 대해서는 아는 바가 거의 없습니다. 세트의 모양과 모델이 결정을 내릴 때 사용하는 정보. 이러한 질문에 대한 답을 알면 모델을 더 효과적으로 개발, 디버그 및 적용하는 데 도움이 될 수 있습니다. 그러나 딥러닝의 블랙박스 특성을 고려할 때 이러한 질문에 대답하기는 어렵습니다. 이 문서의 목적은 이러한 문제에 대한 완전한 솔루션을 제공하는 것이 아니라 이러한 목표를 탐색하는 것입니다.

과학적인 질문 : 본 논문에서는 일련의 최첨단 딥 러닝 취약성 탐지 모델을 조사 및 재현하고 이러한 모델을 이해하기 위한 연구 질문을 설정하며, 이를 통해 미래 모델을 더 잘 설계하고 디버깅하기 위한 교훈과 지침을 도출하는 것을 목표로 합니다.이 논문은 연구 질문을 구성하고 이를 세 가지 영역으로 나눕니다.모델 기능훈련 데이터그리고모델 설명 . 특히, 이 논문의 주요 목표는 다음과 같은 연구 질문에 특별히 초점을 맞춰 취약성 탐지 문제에 대한 딥 러닝의 기능을 이해하는 것입니다.

  • 질문 1 : 서로 다른 모델이 취약점 탐지에 대한 합의에 도달할 수 있습니까? 다양한 모델의 차이점은 무엇입니까?
  • 질문 2 : 특정 유형의 취약점을 탐지하기가 더 쉽습니까? 각 취약점 유형에 대한 모델을 구축해야 합니까, 아니면 모든 취약점을 탐지하는 모델을 구축해야 합니까?
  • 질문 3 : 모델이 예측하기 어려운 코드 패턴이 있나요? 이런 코드 패턴이 존재한다면 어떤 코드 패턴일까요?

이 논문의 두 번째 연구 초점은 훈련 데이터입니다. 이 논문의 목표는 훈련 데이터의 크기와 구성이 모델 성능에 영향을 미치는지 여부와 방법을 이해하는 것입니다. 구체적으로 본 논문은 다음과 같은 연구문제를 구성한다.

  • 질문 4: 데이터 세트 크기를 늘리면 취약점 감지를 위한 모델 성능이 향상됩니까?
  • 질문 5: 학습 데이터 세트의 항목 구성이 모델 성능에 어떤 영향을 미치나요?

마지막으로 본 논문의 세 번째 연구분야는 모델해석이다. 이 논문에서는 SOTA 모델 해석 도구를 사용하여 다음을 조사합니다.

  • 질문 6 : 모델이 예측을 위해 사용하는 소스 코드 정보는 무엇입니까? 모델이 중요한 기능에 대해 일관성을 갖고 있나요?

연구 내용 : 위의 질문에 답하기 위해 본 논문에서는 최첨단 딥러닝 모델을 조사하고 원본 데이터 세트에서 11개의 모델을 성공적으로 재현했습니다. 이러한 모델은 GNN, RNN, LSTM, CNN 및 Transformers와 같은 다양한 딥 러닝 아키텍처를 사용합니다. 이러한 모델을 비교하기 위해 이 논문에서는 Devign과 MSR이라는 두 가지 인기 데이터 세트를 사용하여 9개 모델을 실행했습니다. 논문에서 이 두 데이터세트를 선택한 이유는 다음과 같습니다. (1) 두 데이터세트 모두 실제 프로젝트와 취약점을 포함합니다. (2) 대부분의 논문의 모델은 Devign 데이터세트를 사용하여 평가 및 조정됩니다. (3) MSR 데이터세트에는 310개의 프로젝트가 포함되어 있습니다. , 데이터에는 취약성 유형이 주석으로 추가되어 있으며 이는 우리의 연구 질문에 매우 중요합니다. 신중하게 설계된 실험과 위협 고려를 통해 이 논문은 6가지 연구 질문에 대한 결과를 찾았습니다. 전반적으로 이 논문의 연구 기여는 다음과 같습니다.

  • 기여도: 1: 본 논문에서는 딥러닝 취약점 탐지 모델에 대한 종합적인 조사를 실시합니다.
  • 기여 2: 이 논문은 다양한 연구 설정을 갖춘 SOTA 딥 러닝 프레임워크에 대한 11개의 훈련 모델과 데이터 세트가 포함된 코드 저장소를 제공합니다.
  • 기여 3: 이 논문은 모델 역량, 훈련 데이터, 모델 해석을 이해하기 위한 6가지 과학적 질문을 설계합니다.
  • 기여 4: 논문은 제기된 과학적 질문에 대한 실험을 통해 연구를 구성하고 결과를 얻습니다.
  • 5 기여: 이 논문은 모델의 해석 가능성을 추가로 조사하기 위해 흥미로운 사례와 데이터를 준비합니다.

2. 모델 재현

가장 발전된 딥러닝 모델을 수집하기 위해 본 논문은 2018년부터 2022년까지의 논문을 연구했으며, 마이크로소프트의 CodeXGLUE 순위와 IBM의 결함 탐지 D2A 순위를 참고했다. 논문은 사용 가능한 모든 오픈 소스 모델을 사용했으며 11개 모델을 성공적으로 재현했습니다. 모델의 전체 목록과 일부 모델을 재현할 수 없는 이유가 문서의 데이터 복제 패키지에 포함되어 있습니다.

위의 표에서 볼 수 있듯이 재현된 모델은 다양한 딥러닝 아키텍처를 다루고 있습니다. Devign과 ReVeal은 속성 그래프에 GNN을 사용하여 제어 흐름, 데이터 종속성 및 AST를 통합합니다. ReGVD는 토큰에 GNN을 사용합니다. Code2Vec은 AST에서 MLP(다층 퍼셉트론)를 사용합니다. VulDeeLocator 및 SySeVR은 RNN 및 Bi-LSTM을 기반으로 하는 시퀀스 모델입니다. 최근 딥 러닝 감지는 CodeBERT, VulBERTa-CNN, VulBERTa-MLP, PLBART 및 LineVul을 포함하여 사전 훈련된 Transformer를 사용합니다.

논문의 연구 질문에 대한 응답으로 논문에서는 Devign 및 MSR 데이터 세트를 선택했습니다. 이 논문은 위의 표에 표시된 원본 논문에 사용된 데이터 세트에서 이러한 11개 모델을 연구합니다. 이 논문에서는 Devign 데이터 세트가 8개 모델을 평가하고 조정하는 데 사용되었음을 발견했습니다. 데이터 세트는 총 27,318개의 데이터 포인트(각 예를 데이터 포인트라고도 함)에 대해 대략 동일한 수의 취약한 예와 취약하지 않은 예를 포함하는 균형 잡힌 데이터 세트입니다. LineVul은 최근에 사용 가능한 데이터 세트인 MSR 데이터 세트를 사용합니다. 데이터 세트는 불균형하며 10,900개의 취약한 예와 177,736개의 비취약한 예를 포함합니다. 예제에는 소스 프로젝트와 취약점 유형을 보여주는 CWE(Common Weakness Enumeration) 항목이 있습니다. 이 논문은 이러한 데이터 세트 특성을 사용하여 몇 가지 연구 질문을 공식화합니다.

논문은 위의 표와 같이 원본 데이터 세트와 설정을 기반으로 모델의 결과를 재현합니다. 그 중 A, P, R, F 열은 정확도, 정밀도, 재현율, F1 점수 등 딥러닝 취약점 탐지에서 일반적으로 사용되는 지표를 나타냅니다. 원본 논문과 비교하여 논문의 재현 결과는 일반적으로 2% 이내의 계산 오류가 있습니다. 특별한 경우는 저자가 우리 결과가 원본 논문의 데이터 유출 오류를 수정했음을 확인한 ReVeal과 원본 Devign 코드가 아니기 때문에 논문에서 제3자 복제 코드(Chakaborthy 외 출판)를 사용한 Devign입니다. 오픈 소스.