Skip to main content
QUICK REVIEW

[論文レビュー] A ground-truth dataset of real security patches

Sofia Reis, Rui Abreu|arXiv (Cornell University)|Oct 18, 2021
Web Application Security Vulnerabilities参考文献 18被引用数 7
ひとこと要約

本論文は、20言語および146種類のCWEタイプをカバーする1,339のプロジェクトからなる、8,057件の実際のセキュリティ関連コミット(5,942件のセキュリティパッチに相当)のスケーラブルかつ真実のデータセットを提示する。CVE Details、Secbench、Pontasら、Big-Vulから得たデータを統合・拡張することで、自然言語アーティファクト(コミットメッセージ、コメント、要約)、コード変更、メタデータ、およびダウンロード可能なコードベースを提供するとともに、機械学習用途向けに110,161件の非セキュリティコミットを含むネガティブセットを提供し、脆弱性検出、パッチ解析、セキュリティ向け自然言語処理に関する研究を可能にする。

ABSTRACT

Training machine learning approaches for vulnerability identification and producing reliable tools to assist developers in implementing quality software -- free of vulnerabilities -- is challenging due to the lack of large datasets and real data. Researchers have been looking at these issues and building datasets. However, these datasets usually miss natural language artifacts and programming language diversity. We scraped the entire CVE details database for GitHub references and augmented the data with 3 security-related datasets. We used the data to create a ground-truth dataset of natural language artifacts (such as commit messages, commits comments, and summaries), meta-data and code changes. Our dataset integrates a total of 8057 security-relevant commits -- the equivalent to 5942 security patches -- from 1339 different projects spanning 146 different types of vulnerabilities and 20 languages. A dataset of 110k non-security-related commits is also provided. Data and scripts are all available on GitHub. Data is stored in a .CSV file. Codebases can be downloaded using our scripts. Our dataset is a valuable asset to answer research questions on different topics such as the identification of security-relevant information using NLP models; software engineering and security best practices; and, vulnerability detection and patching; and, security program analysis.

研究の動機と目的

  • 脆弱性検出およびパッチ適用における機械学習モデルの学習・評価に用いる大規模かつ現実世界のデータセットの不足に対処すること。
  • 既存のデータセットに見られる制限、例えば自然言語アーティファクトの欠落、プログラミング言語の多様性の不足、コードベースへのアクセス不能といった問題を克服すること。
  • 豊富なメタデータ、自然言語コンテンツ、コード変更を備えた、統合的でクリーニング済みかつ拡張されたセキュリティ関連コミットデータセットを提供すること。
  • 再現可能でオープンソースのデータセットを通じて、ソフトウェア工学のベストプラクティス、セキュリティパッチの影響分析、自動脆弱性検出に関する研究を支援すること。

提案手法

  • 年次単位でCVE Detailsデータベース全体をウェブスクレイピングし、GitHubのコミットリファレンスを含むCVEメタデータを抽出する。
  • セキュリティおよびパッチ情報の強化のため、3つの外部データセット(Secbench、Pontas ら、Big-Vul)を統合する。
  • 収集したコミットURLを用いてGitHubから詳細なコミットメタデータ(メッセージ、著者、日付、コメント、ファイル変更、差分、親コミット)を抽出する。
  • データクリーニングおよび重複除去処理(重複エントリの削除およびパッチバージョンより進んだブランチのフィルタリング)を実施する。
  • 各コミットにおけるファイル拡張子に基づきプログラミング言語を分類し、5%未満の失敗率を達成する。
  • 教師あり機械学習タスク用に、110,161件の非セキュリティ関連コミットからなるネガティブデータセットを構築する。

実験結果

リサーチクエスチョン

  • RQ1自然言語アーティファクト(例:コミットメッセージやコメント)は、セキュリティ関連コミットを識別するためのモデル学習に信頼性を持って抽出・利用可能だろうか?
  • RQ2実際のオープンソースプロジェクトにおいて、異なるプログラミング言語や脆弱性タイプ(CWE)ごとに、セキュリティパッチはどのように異なるのだろうか?
  • RQ3開発者は、コミットメッセージやコード変更において、ソフトウェア工学およびセキュリティのベストプラクティスをどの程度守っているのだろうか?
  • RQ4提示されたデータセットは、脆弱性検出およびパッチ生成における機械学習モデルの性能向上および一般化能力向上に寄与するだろうか?
  • RQ5現実世界のセキュリティパッチの構造的・言語的特徴は何か。また、非セキュリティコミットとはどのような点で異なるのだろうか?

主な発見

  • 1,339の異なるプロジェクトから8,057件のセキュリティ関連コミットが収集され、これは5,942件の固有のセキュリティパッチに相当する。
  • これらのコミットは146種類の異なるCWEタイプと20種類のプログラミング言語をカバーしており、既存のデータセットと比べて顕著な多様性の向上を実現している。
  • CVE要約、コミットメッセージ、開発者コメントを含む包括的な自然言語アーティファクトが含まれており、NLPベースの研究を可能にしている。
  • コード変更および完全なコードベースは、提供されたスクリプトを通じてダウンロード可能であり、低レベルのプログラム解析を支援している。
  • 教師あり学習およびモデル評価を支援する目的で、110,161件の非セキュリティ関連コミットからなるネガティブデータセットが提供されている。
  • データセットはGitHub上で公開されており、データアクセス、拡張、再現性を確保するための完全なツールキットを備えている。

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

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

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

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