Skip to main content
QUICK REVIEW

[論文レビュー] CodeLMSec Benchmark: Systematically Evaluating and Finding Security Vulnerabilities in Black-Box Code Language Models

Hossein Hajipour, Hassler, Keno|arXiv (Cornell University)|Feb 8, 2023
Software Engineering Research被引用数 6
ひとこと要約

本稿では、ブラックボックス型コード言語モデルが脆弱なコードを生成するのを引き起こすプロンプトを体系的かつ自動的に同定するための自動手法であるCodeLMSecベンチマークを紹介する。少ないショットのプロンプトを用いてモデルの逆問題を近似することで、CodeGen や ChatGPT などのモデルに広がるセキュリティ上の欠际を露呈する移行可能な非セキュアプロンプトを生成し、2,000件を超える脆弱なコードサンプルを含む公開ベンチマークを構築した。

ABSTRACT

Large language models (LLMs) for automatic code generation have achieved breakthroughs in several programming tasks. Their advances in competition-level programming problems have made them an essential pillar of AI-assisted pair programming, and tools such as GitHub Copilot have emerged as part of the daily programming workflow used by millions of developers. The training data for these models is usually collected from the Internet (e.g., from open-source repositories) and is likely to contain faults and security vulnerabilities. This unsanitized training data can cause the language models to learn these vulnerabilities and propagate them during the code generation procedure. While these models have been extensively assessed for their ability to produce functionally correct programs, there remains a lack of comprehensive investigations and benchmarks addressing the security aspects of these models. In this work, we propose a method to systematically study the security issues of code language models to assess their susceptibility to generating vulnerable code. To this end, we introduce the first approach to automatically find generated code that contains vulnerabilities in black-box code generation models. To achieve this, we present an approach to approximate inversion of the black-box code generation models based on few-shot prompting. We evaluate the effectiveness of our approach by examining code language models in generating high-risk security weaknesses. Furthermore, we establish a collection of diverse non-secure prompts for various vulnerability scenarios using our method. This dataset forms a benchmark for evaluating and comparing the security weaknesses in code language models.

研究の動機と目的

  • コード生成型大規模言語モデルにおけるセキュリティ脆弱性の体系的評価手法の欠如に応えること。
  • 特定のセキュリティ欠际を有するコードを生成するようモデルに誘導するプロンプトを自動的に同定するアプローチを開発すること。
  • モデルのセキュリティを評価・比較するための移行可能でスケーラブルな非セキュアプロンプトのベンチマークを構築すること。
  • 高リスクの脆弱性を生成する傾向があるコードLLMの脆弱性に対する大規模かつ再現可能な評価を可能にすること。
  • 公開データセットを活用して、今後のAI支援コード生成のセキュリティ向上に貢献すること。

提案手法

  • 少ないショットのプロンプトを用いてブラックボックス型コード生成モデルの逆問題を近似し、特定の脆弱性を引き起こすプロンプトを生成すること。
  • 脆弱なコードとその対応するプロンプトのコンテキスト例を用いて、モデルが自らの逆関数として振る舞うように誘導すること。
  • CodeQLを用いた静的解析により、生成されたコード内のセキュリティ脆弱性を自動で検出すること。
  • 複数のCWEおよびプログラミング言語からなる多様な非セキュアプロンプトのデータセットを収集・整備すること。
  • CodeGen や ChatGPT などのモデル間でのプロンプトの移行性を評価し、一般化の有効性を検証すること。
  • バイアスの低減を図るため、複数のソースから同一CWEの脆弱なコードサンプルを複数取得すること。

実験結果

リサーチクエスチョン

  • RQ1自動的に、コード言語モデルが脆弱なコードを生成するよう誘導するプロンプトを体系的に生成することは可能か?
  • RQ2少ないショットのプロンプトは、ブラックボックス型コード生成モデルの逆関数をどの程度正確に近似できるか?
  • RQ3生成された非セキュアプロンプトは、異なるコードLLM間で移行可能か?
  • RQ4提案手法は、多様な種類のセキュリティ脆弱性を同定・ベンチマーク化するためにスケーラブルか?
  • RQ5ベンチマークは、どの程度再現可能かつ体系的なモデルセキュリティ評価を可能にするか?

主な発見

  • 自動的に導出されたプロンプトを用いて、CodeGen および ChatGPT で合計2,000件を超える脆弱なコードサンプルを成功裏に生成した。
  • 非セキュアプロンプトは非常に高い移行性を示し、1つのモデル(例:ChatGPT)からのプロンプトが、別のモデル(例:CodeGen)においても効果的に脆弱性を引き起こした。
  • ベンチマークには、複数のCWEおよびプログラミング言語をカバーする多様なプロンプトが含まれており、幅広いセキュリティ評価が可能である。
  • CodeQLを用いた静的解析により、短く自己完結的なコードスニペットにおける脆弱性が信頼性高く検出されたため、再現性が保証された。
  • モデルの内部構造やファインチューニングを必要とせず、スケーラブルかつ自動的で拡張可能なセキュリティベンチマーク手法を実現した。
  • データセットの公開により、将来のモデルにおける安全なコード生成の評価と改善を継続的に支援できるようになった。

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

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

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

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