論文の概要: Enabling Memory Safety of C Programs using LLMs
- arxiv url: http://arxiv.org/abs/2404.01096v1
- Date: Mon, 1 Apr 2024 13:05:54 GMT
- ステータス: 処理完了
- システム内更新日: 2024-04-03 22:25:32.516911
- Title: Enabling Memory Safety of C Programs using LLMs
- Title(参考訳): LLMを用いたCプログラムのメモリ安全性向上
- Authors: Nausheen Mohammed, Akash Lal, Aseem Rastogi, Subhajit Roy, Rahul Sharma,
- Abstract要約: C言語で書かれた低レベルのコードのメモリ安全性違反は、ソフトウェア脆弱性の主要な原因のひとつであり続けています。
このような違反を建設によって除去する方法の1つは、安全なC方言にCコードを移植することである。
このような方言は、最小限のランタイムオーバーヘッドで安全性を保証するためにプログラマが提供するアノテーションに依存している。
この移植は、プログラマに多大な負担をかける手作業であり、そのため、このテクニックの採用は限られている。
- 参考スコア(独自算出の注目度): 5.297072277460838
- License: http://creativecommons.org/licenses/by/4.0/
- Abstract: Memory safety violations in low-level code, written in languages like C, continues to remain one of the major sources of software vulnerabilities. One method of removing such violations by construction is to port C code to a safe C dialect. Such dialects rely on programmer-supplied annotations to guarantee safety with minimal runtime overhead. This porting, however, is a manual process that imposes significant burden on the programmer and, hence, there has been limited adoption of this technique. The task of porting not only requires inferring annotations, but may also need refactoring/rewriting of the code to make it amenable to such annotations. In this paper, we use Large Language Models (LLMs) towards addressing both these concerns. We show how to harness LLM capabilities to do complex code reasoning as well as rewriting of large codebases. We also present a novel framework for whole-program transformations that leverages lightweight static analysis to break the transformation into smaller steps that can be carried out effectively by an LLM. We implement our ideas in a tool called MSA that targets the CheckedC dialect. We evaluate MSA on several micro-benchmarks, as well as real-world code ranging up to 20K lines of code. We showcase superior performance compared to a vanilla LLM baseline, as well as demonstrate improvement over a state-of-the-art symbolic (non-LLM) technique.
- Abstract(参考訳): C言語で書かれた低レベルのコードのメモリ安全性違反は、ソフトウェア脆弱性の主要な原因のひとつであり続けている。
このような違反を建設によって除去する方法の1つは、安全なC方言にCコードを移植することである。
このような方言は、最小限のランタイムオーバーヘッドで安全性を保証するためにプログラマが提供するアノテーションに依存している。
しかしこの移植は、プログラマに多大な負担をかける手作業であり、そのため、このテクニックの採用は限られている。
ポーティングのタスクはアノテーションを推論するだけでなく、そのようなアノテーションに対処するためにコードのリファクタリングや書き直しも必要かもしれない。
本稿では,これら2つの問題に対処するために,Large Language Models (LLMs) を用いる。
複雑なコード推論や大規模なコードベースの書き直しにLLM機能を利用する方法を示す。
また、軽量な静的解析を利用して、LLMによって効果的に実行できる小さなステップに変換を分解する、プログラム全体の変換のための新しいフレームワークを提案する。
We implement our ideas in a tool called MSA that target the CheckedC dialect。
マイクロベンチマークや,最大20K行までの実世界のコードに対して,MSAを評価した。
我々は,バニラLLMベースラインよりも優れた性能を示すとともに,最先端のシンボル(非LLM)技術よりも優れた性能を示す。
関連論文リスト
- Context-aware Code Segmentation for C-to-Rust Translation using Large Language Models [1.8416014644193066]
大きな言語モデル(LLM)は、ルールベースのメソッドよりも自然で安全なコードを生成することで、この翻訳を自動化することを約束している。
大規模Cコードをコンパイル可能なRustコードに変換する際の成功率を改善するLLMベースの翻訳方式を提案する。
4キロのコードを含む20のベンチマークCプログラムの実験では、すべてのプログラムをコンパイル可能なRustコードに変換することに成功した。
論文 参考訳(メタデータ) (2024-09-16T17:52:36Z) - HexaCoder: Secure Code Generation via Oracle-Guided Synthetic Training Data [60.75578581719921]
大規模言語モデル(LLM)は、自動コード生成に大きな可能性を示している。
最近の研究は、多くのLLM生成コードが深刻なセキュリティ脆弱性を含んでいることを強調している。
我々は,LLMがセキュアなコードを生成する能力を高めるための新しいアプローチであるHexaCoderを紹介する。
論文 参考訳(メタデータ) (2024-09-10T12:01:43Z) - What can Large Language Models Capture about Code Functional Equivalence? [24.178831487657945]
SeqCoBenchは、コード-LLMがコード関数同値をキャプチャする方法を評価するベンチマークである。
我々は,SeqCoBenchにおける意味論的に等価なプログラムと異なるプログラムのペアを識別できるかどうかを,最先端(Code-)LLMで評価する。
論文 参考訳(メタデータ) (2024-08-20T11:19:06Z) - Assured LLM-Based Software Engineering [51.003878077888686]
この記事では,2024年4月15日にポルトガルのリスボンで開催された International Workshop on Interpretability, Robustness, and Benchmarking in Neural Software Engineering で,Mark Harman 氏による基調講演の内容の概要を紹介する。
論文 参考訳(メタデータ) (2024-02-06T20:38:46Z) - Code Prompting Elicits Conditional Reasoning Abilities in Text+Code LLMs [65.2379940117181]
自然言語の問題をコードに変換する一連のプロンプトであるコードプロンプトを導入します。
コードプロンプトは複数のLLMに対して高速に向上することがわかった。
GPT 3.5を解析した結果,入力問題のコードフォーマッティングが性能向上に不可欠であることが判明した。
論文 参考訳(メタデータ) (2024-01-18T15:32:24Z) - If LLM Is the Wizard, Then Code Is the Wand: A Survey on How Code
Empowers Large Language Models to Serve as Intelligent Agents [81.60906807941188]
大型言語モデル(LLM)は、自然言語と形式言語(コード)の組み合わせに基づいて訓練される
コードは、標準構文、論理一貫性、抽象化、モジュール性を備えた高レベルの目標を実行可能なステップに変換する。
論文 参考訳(メタデータ) (2024-01-01T16:51:20Z) - DeceptPrompt: Exploiting LLM-driven Code Generation via Adversarial
Natural Language Instructions [27.489622263456983]
DeceptPromptは、コードLLMを駆動し、脆弱性のある機能の正しいコードを生成する、逆の自然言語命令を生成するアルゴリズムである。
最適化プレフィックス/サフィックスを適用する場合、アタック成功率(ASR)はプレフィックス/サフィックスを適用せずに平均50%向上する。
論文 参考訳(メタデータ) (2023-12-07T22:19:06Z) - SALLM: Security Assessment of Generated Code [0.5137309756089941]
本稿では,セキュアなコードを体系的に生成する大規模言語モデルの能力をベンチマークするフレームワークであるSALLMについて述べる。
フレームワークには3つの主要なコンポーネントがある。セキュリティ中心のPythonプロンプトの新たなデータセット、生成されたコードを評価するための評価テクニック、セキュアなコード生成の観点からモデルのパフォーマンスを評価するための新しいメトリクスである。
論文 参考訳(メタデータ) (2023-11-01T22:46:31Z) - Guess & Sketch: Language Model Guided Transpilation [59.02147255276078]
学習されたトランスパイレーションは、手作業による書き直しやエンジニアリングの取り組みに代わるものだ。
確率的ニューラルネットワークモデル(LM)は、入力毎に可塑性出力を生成するが、正確性を保証するコストがかかる。
Guess & Sketch は LM の特徴からアライメントと信頼性情報を抽出し、意味的等価性を解決するためにシンボリック・ソルバに渡す。
論文 参考訳(メタデータ) (2023-09-25T15:42:18Z) - Exploring Continual Learning for Code Generation Models [80.78036093054855]
継続的学習(CL)は、コードドメインの中でまだ過小評価されていない重要な側面である。
コード生成,翻訳,要約,改良など,幅広いタスクをカバーするCodeTask-CLというベンチマークを導入する。
即時選択機構の不安定な訓練により,プロンプトプール (PP) などの有効手法が破滅的な忘れ込みに悩まされることが判明した。
論文 参考訳(メタデータ) (2023-07-05T16:58:39Z) - LLMSecEval: A Dataset of Natural Language Prompts for Security
Evaluations [4.276841620787673]
Codexのような大規模言語モデル(LLM)は、コード補完とコード生成タスクを実行する強力なツールである。
これらのモデルは、パブリックGitHubリポジトリから言語やプログラミングプラクティスを学ぶことによって、自然言語(NL)記述からコードスニペットを生成することができる。
LLMはNL駆動によるソフトウェアアプリケーションのデプロイを約束するが、それらが生成するコードのセキュリティは広く調査されておらず、文書化されていない。
論文 参考訳(メタデータ) (2023-03-16T15:13:58Z)
関連論文リストは本サイト内にある論文のタイトル・アブストラクトから自動的に作成しています。
指定された論文の情報です。
本サイトの運営者は本サイト(すべての情報・翻訳含む)の品質を保証せず、本サイト(すべての情報・翻訳含む)を使用して発生したあらゆる結果について一切の責任を負いません。