Skip to main content
QUICK REVIEW

[論文レビュー] Devign: Effective Vulnerability Identification by Learning Comprehensive\n Program Semantics via Graph Neural Networks

Yaqin Zhou, Shangqing Liu|arXiv (Cornell University)|Sep 8, 2019
Software Engineering Research参考文献 22被引用数 361
ひとこと要約

Devign は、複数のコード表現から合成プログラム意味論を学習するグラフニューラルネットワークを提案し、グラフレベル分類のための専用 Conv モジュールを用いて基準を上回り、脆弱な関数を特定する。

ABSTRACT

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

研究の動機と目的

  • 大規模なコードベースのセキュリティ欠陥を局所化するため、機能レベルでの脆弱性識別を動機づける。
  • 複数の表現(AST、CFG、DFG、トークン列)から結合グラフを構築することでリッチなプログラム意味論をエンコードする。
  • 脆弱な関数のグラフレベル分類を効果的に行う新規 Conv モジュールを備えたグラフニューラルネットワークを訓練する。
  • 4つの大規模なオープンソース C プロジェクトから手動ラベル付けされたデータセットで評価し、静的解析手法およびベースラインと比較する。

提案手法

  • AST、CFG、DFG(LastRead/LastWrite/ComputedFromとして表現)、および自然コードシーケンスのエッジを統合し、ノード特徴(word2vecによるコードトークンとノードタイプ)を持つ異種グラフとして複合コードグラフを構築する。
  • GRU ベースの統合を用いて、エッジタイプ間でノード埋め込みを伝搬・更新するゲート付きグラフ再帰ネットワークを適用する。
  • ノード表現からグラフレベルの特徴を抽出するために、1-D 畳み込み層および密結合層からなる Conv モジュールを適用する(式 6-9)。
  • 脆弱性の有無を予測するために、クロスエントロピー損失と正則化を用いてエンドツーエンドで訓練する(式 1)。
  • Linux Kernel、QEMU、Wireshark、FFmpeg から脆弱/非脆弱関数をセキュリティ関連コミットから取得し、手動検証して手動でラベル付けしたデータセットを準備する。

実験結果

リサーチクエスチョン

  • RQ1Devign は実世界のコードにおいて最先端の学習ベースの脆弱性識別手法を上回ることができるか。
  • RQ2Conv モジュールは単純なノード埋め込みの和によるグラフ分類より精度を改善するか。
  • RQ3複合グラフ(複数のコード表現を組み合わせること)の学習は、単一エッジグラフより脆弱性検出に優れているか。
  • RQ4不均衡データ下での性能はどうか、最新の CVE にも耐性があるか。
  • RQ5新規ラベル付けデータセットで CVE によって識別されたゼロデイ脆弱性へ一般化できるか。

主な発見

  • 複合コード表現を用いた Devign は、Linux Kernel、QEMU、Wireshark、FFmpeg などの複数データセットでベースライン手法より高い精度と F1 スコアを達成する。
  • Conv モジュールは、和ベースのグラフ分類を用いた単純なゲート付きグラフ再帰ネットワークよりも追加の精度と F1 の利得を提供する。
  • 単一エッジグラフは時として競合的な性能を示すが、複合グラフは一般に優れたまたは同等の性能を示し、複合表現を使用することで精度と F1 の平均的な改善が得られる。
  • 不均衡な設定では、Devign およびその複合表現は静的解析ツールを上回り、F1 スコアが大幅に改善される。
  • 40 個の CVE に適用した場合、抽出された脆弱関数に対して平均精度 74.11% を達成し、実用的適用性を示す。

より良い研究を、今すぐ始めましょう

論文設計から論文執筆まで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。