Skip to main content
QUICK REVIEW

[논문 리뷰] Devign: Effective Vulnerability Identification by Learning Comprehensive Program Semantics via Graph Neural Networks

Yaqin Zhou, Shangqing Liu|arXiv (Cornell University)|2019. 09. 08.
Software Engineering Research참고 문헌 22인용 수 361
한 줄 요약

Devign은 다양한 코드 표현으로 합성 프로그램 의미를 학습하는 그래프 신경망을 제안하여 취약 함수 식별에 대해 그래프 수준 분류를 위한 Conv 모듈을 포함한 Baselines보다 우수한 성능을 보인다.

ABSTRACT

Vulnerability identification is crucial to protect the software systems from attacks for cyber security. It is especially important to localize the vulnerable functions among the source code to facilitate the fix. However, it is a challenging and tedious process, and also requires specialized security expertise. Inspired by the work on manually-defined patterns of vulnerabilities from various code representation graphs and the recent advance on graph neural networks, we propose Devign, a general graph neural network based model for graph-level classification through learning on a rich set of code semantic representations. It includes a novel Conv module to efficiently extract useful features in the learned rich node representations for graph-level classification. The model is trained over manually labeled datasets built on 4 diversified large-scale open-source C projects that incorporate high complexity and variety of real source code instead of synthesis code used in previous works. The results of the extensive evaluation on the datasets demonstrate that Devign outperforms the state of the arts significantly with an average of 10.51% higher accuracy and 8.68\\% F1 score, increases averagely 4.66% accuracy and 6.37% F1 by the Conv module.

연구 동기 및 목표

  • 대규모 코드베이스에서 보안 결함을 국지화하기 위해 함수 수준에서 취약성 식별을 동기부여한다.
  • 여러 표현(AST, CFG, DFG, 그리고 토큰 시퀀스)을 결합한 그래프를 구성하여 풍부한 프로그램 의미를 인코딩한다.
  • 새로운 Conv 모듈로 취약 함수의 그래프 수준 분류를 효과적으로 수행하기 위해 그래프 신경망을 학습한다.
  • 네 개의 대형 오픈 소스 C 프로젝트에서 수동으로 라벨링된 데이터셋으로 평가하고 정적 분석기 및 베이스라인과 비교한다.

제안 방법

  • AST, CFG, DFG(LastRead/LastWrite/ComputedFrom로 표현), 그리고 자연 코드 시퀀스 간선을 통합하여 이질 그래프를 구성하고 노드 특성(단어 임베딩으로 표현된 코드 토큰 및 노드 타입)을 갖는 합성 코드 그래프를 구축한다.
  • GRU 기반 융합을 통해 엣지 타입별로 노드 임베딩을 전파하고 업데이트하기 위해 게이트드 그래프 순환 네트워크를 사용한다 (Equation 3 and 4).
  • 1-D 합성곱 및 Dense 계층으로 구성된 Conv 모듈을 적용하여 노드 표현으로부터 그래프 수준 특성을 추출한다 (Equations 6-9).
  • 크로스 엔트로피 손실과 정규화를 포함해 취약한 함수 대 비취약한 함수를 예측하도록 엔드투엔드로 학습한다 (Equation 1).
  • 보안 관련 커밋에서 취약/비취약 함수들을 소싱하고 수동 확인으로 Linux Kernel, QEMU, Wireshark, FFmpeg에서 수동으로 라벨링된 데이터셋을 준비한다.

실험 결과

연구 질문

  • RQ1Devign이 실제 코드에서 최첨단 학습 기반 취약성 식별 방법을 능가할 수 있는가?
  • RQ2Conv 모듈이 노드 임베딩의 단순 합산에 비해 그래프 수준 분류를 향상시키는가?
  • RQ3여러 코드 표현을 결합한 합성 그래프에서의 학습이 단일 엣지 그래프에 비해 취약성 탐지에 우수한가?
  • RQ4불균형 데이터와 최신 CVE에서 Devign의 성능은 어떠한가?
  • RQ5새로 라벨링된 데이터셋에서 CVE를 통해 식별된 제로데이 취약점에 대해 Devign이 일반화할 수 있는가?

주요 결과

  • 합성 코드 표현을 사용하는 Devign은 여러 데이터셋(Linux Kernel, QEMU, Wireshark, FFmpeg)에서 기준 방법보다 더 높은 정확도와 F1 점수를 달성한다.
  • Conv 모듈은 합산 기반 그래프 분류를 가진 단순한 Gated Graph Recurrent Network 대비 추가 정확도와 F1 이점을 제공한다.
  • 단일 엣지 그래프는 때로는 경쟁력이 있지만 합성 그래프는 일반적으로 우수하거나 유사한 성능을 제공하며 합성 표현을 사용할 때 평균 정확도와 F1이 향상된다.
  • 불균형 설정에서 Devign 및 합성 그래프는 정적 분석기보다 우수하며 F1 점수가 현저히 높다.
  • 40건의 CVE에 적용하여 Devign은 추출된 취약 함수에서 평균 정확도 74.11%를 달성했으며 실용성을 시사한다.

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

연구 설계부터 논문 작성까지, 연구 시간을 획기적으로 줄여보세요.

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

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