DeepCode AI Fix: Fixing Security Vulnerabilities with Large Language Models

要約

自動プログラム修復の分野は長年にわたって大きな関心を集めてきましたが、多大な研究努力にもかかわらず、セキュリティの脆弱性などの複雑なセマンティックバグに対して適切に機能するシステムを作成することは困難であることが判明しています。
この課題を解決する有望な方向性は、さまざまなプログラミング タスクを解決するためにますます使用される大規模言語モデル (LLM) を活用することです。
この論文では、コード修復タスクを解決するための LLM の有効性を調査します。
モデルが長距離のコード関係を学習する必要があるため、このタスクが困難であることを示します。このタスクは本質的に大量のトレーニング データに依存します。
同時に、複雑なプログラムのバグとそれに対応する修正のための大規模でクリーンなデータセットを作成することは簡単ではありません。
私たちは、LLM のクエリと微調整のための新しいアプローチでこれらの課題に対処する手法を提案します。
このアイデアは、プログラム分析を使用して、修正の実行に必要なコード部分に対する LLM のアテンション メカニズムを制限し、必要なトレーニング データの量を大幅に削減することです。
具体的には、トレーニングと推論のために、プログラム全体を LLM に供給するのではなく、そのコードを、報告された欠陥と必要なコンテキストを含むはるかに短いスニペットに縮小し、代わりにそれを使用します。
私たちの評価では、このコード削減アプローチにより、微調整モデルだけでなく、少数ショット学習を使用する GPT-4 などの利用可能なモデルも大幅に改善されることが示されています。
システムをトレーニングして評価するために、156 のバグ パターン (40 のセキュリティ ルールを含む) を広範囲にラベル付けして、包括的なコード修正データセットを作成しました。これを発見するには複雑なプロシージャ間のデータフローが必要です。
Mixtral-8x7B を使用した当社の最高のシステムは、報告された欠陥の 80% 以上を除去し、ケースの 10 ~ 50% で人間による修正と正確に一致し、GPT-3.5 および GPT-4 またはウィンドウベースに基づくベースラインを上回るパフォーマンスを発揮します。
TFixのようなモデル。

要約(オリジナル)

The automated program repair field has attracted substantial interest over the years, but despite significant research efforts, creating a system that works well for complex semantic bugs such as security vulnerabilities has proven difficult. A promising direction to solve this challenge is by leveraging large language models (LLMs), which are increasingly used to solve various programming tasks. In this paper, we investigate the effectiveness of LLMs for solving code-repair task. We show that the task is difficult as it requires the model to learn long-range code relationships, a task that inherently relies on extensive amounts of training data. At the same time, creating a large, clean dataset for complex program bugs and their corresponding fixes is non-trivial. We propose a technique to address these challenges with a new approach for querying and fine-tuning LLMs. The idea is to use program analysis to limit the LLM’s attention mechanism on the portions of code needed to perform the fix, drastically reducing the amount of required training data. Concretely, for training and inference, rather than feeding the entire program to the LLM, we reduce its code to a much shorter snippet that contains the reported defect together with the necessary context – and use that instead. Our evaluation shows that this code reduction approach substantially improves available models such as GPT-4 using few-shot learning, as well as fine-tuning models. To train and evaluate our system, we created a comprehensive code fixing dataset by extensively labeling 156 bug patterns (including 40 security rules), requiring complex interprocedural dataflow to discover. Our best system with Mixtral-8x7B can remove more than 80% of the reported defects while exactly matching the human fix in between 10 and 50% of cases, outperforming baselines based on GPT-3.5 and GPT-4, or based on window-based models like TFix.

arxiv情報

著者 Berkay Berabi,Alexey Gronskiy,Veselin Raychev,Gishor Sivanrupan,Victor Chibotaru,Martin Vechev
発行日 2024-02-23 17:26:06+00:00
arxivサイト arxiv_id(pdf)

提供元, 利用サービス

arxiv.jp, Google

カテゴリー: cs.CR, cs.LG, cs.PL, cs.SE パーマリンク