Skip to main content
QUICK REVIEW

[논문 리뷰] Stack-based Buffer Overflow Detection using Recurrent Neural Networks

William Arild Dahl, László Erdődi|arXiv (Cornell University)|2020. 12. 30.
Anomaly Detection Techniques and Applications참고 문헌 19인용 수 8
한 줄 요약

이 논문은 어셈블리 코드를 자연어처럼 간주함으로써 스택 기반 버퍼 오버플로우 취약성을 탐지하기 위해 장기 단기 기억(LSTM) 순환 신경망을 사용하는 것을 제안한다. 모델은 합성 데이터셋에서 99.00%의 정확한 분류율을 달성하여, RNN이 저수준 코드의 문맥적 패턴을 효과적으로 학습하여 미묘한 버퍼 오버플로우 결함을 식별할 수 있음을 입증한다.

ABSTRACT

Detecting vulnerabilities in software is a critical challenge in the development and deployment of applications. One of the most known and dangerous vulnerabilities is stack-based buffer overflows, which may allow potential attackers to execute malicious code. In this paper we consider the use of modern machine learning models, specifically recurrent neural networks, to detect stack-based buffer overflow vulnerabilities in the assembly code of a program. Since assembly code is a generic and common representation, focusing on this language allows us to potentially consider programs written in several different programming languages. Moreover, we subscribe to the hypothesis that code may be treated as natural language, and thus we process assembly code using standard architectures commonly employed in natural language processing. We perform a set of experiments aimed at confirming the validity of the natural language hypothesis and the feasibility of using recurrent neural networks for detecting vulnerabilities. Our results show that our architecture is able to capture subtle stack-based buffer overflow vulnerabilities that strongly depend on the context, thus suggesting that this approach may be extended to real-world setting, as well as to other forms of vulnerability detection.

연구 동기 및 목표

  • 기계 학습을 활용하여 어셈블리 코드가 취약성 탐지에 자연어처럼 간주될 수 있는지 조사하기.
  • 이상적 순환 신경망(RNN)이 바이너리 코드 내 스택 기반 버퍼 오버플로우 취약성을 탐지하는 데의 가능성을 평가하기.
  • RNN이 미묘한 버퍼 오버플로우 결함을 식별하는 데 핵심적인 문맥 의존적 패턴을 포착할 수 있는지 평가하기.
  • NLP 기반 모델을 저수준 소프트웨어 보안 분석에 적용하는 개념적 실현 가능성을 확립하기.

제안 방법

  • 저자들은 어셈블리 지시어의 시퀀스를 처리하기 위해 순환 신경망의 일종인 장기 단기 기억(LSTM) 네트워크를 사용한다.
  • 어셈블리 코드는 토큰화된 후 밀도 높은 벡터 표현으로 임bedding되어 LSTM 아키텍처에 입력된다.
  • 배치 크기가 80이고 학습률이 $5 \cdot 10^{-5}$인 두 층의 LSTM 모델을 사용하여 이진 교차 엔트로피 손실을 기반으로 분류를 위해 훈련한다.
  • 모델은 취약하고 비취약한 기능을 포함한 자체 생성한 어셈블리 코드 샘플 데이터셋을 기반으로 훈련된다.
  • 학습률과 배치 크기의 초모수 최적화를 통해 모델 성능을 최적화한다.
  • 정확도 및 손실을 포함한 분류 지표를 사용하여 테스트 세트에서 모델을 평가한다.

실험 결과

연구 질문

  • RQ1어셈블리 코드가 자연어와 유사한 토큰의 시퀀스로 효과적으로 모델링될 수 있는가? 이는 NLP 기법의 적용을 가능하게 하는가?
  • RQ2LSTM 기반 모델은 어셈블리 코드 내에서 문맥에 민감한 스택 기반 버퍼 오버플로우 취약성을 탐지할 수 있는가?
  • RQ3이 작업에서 모델의 깊이(예: 1층 대비 2층 LSTM 레이어)는 탐지 성능에 어떤 영향을 미치는가?
  • RQ4이 취약성 탐지 작업에서 최적의 성능를 얻기 위한 초모수 설정(학습률, 배치 크기)은 무엇인가?

주요 결과

  • 두 층의 LSTM 모델은 테스트 세트에서 99.00%의 정확한 분류율(Correct Classification Rate, CCR)을 달성하여 강력한 일반화 능력을 보였다.
  • 약 17,500개의 훈련 스텝 이후 성능 향상이 두드러지게 나타나 훈련 정체 상태를 돌파하였다.
  • 동일한 훈련 제약 조건 하에서 두 층의 LSTM 구성이 더 얕은 한 층의 아키텍처보다 성능이 뛰어났다.
  • 복잡한 코드 샘플에서도 문맥 의존적 버퍼 오버플로우 패턴을 탐지하는 데 있어 모델의 강건성이 입증되었다.
  • 낮은 학습률($5 \cdot 10^{-5}$)이 안정적인 수렴과 높은 성능을 확보하는 데 필수적이었다.
  • 결과는 코드를 언어로 간주할 수 있으며, 이는 순차 모델링을 통해 효과적인 취약성 탐지가 가능하다는 가설을 지지한다.

더 나은 연구,지금 바로 시작하세요

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.