論文の概要: Finding Memory Leaks in C/C++ Programs via Neuro-Symbolic Augmented Static Analysis
- arxiv url: http://arxiv.org/abs/2603.27224v2
- Date: Thu, 02 Apr 2026 16:04:03 GMT
- ステータス: 翻訳完了
- システム内更新日: 2026-04-03 14:21:09.156013
- Title: Finding Memory Leaks in C/C++ Programs via Neuro-Symbolic Augmented Static Analysis
- Title(参考訳): Neuro-Symbolic Augmented Static AnalysisによるC/C++プログラムのメモリリークの検出
- Authors: Huihui Huang, Jieke Shi, Bo Wang, Zhou Yang, David Lo,
- Abstract要約: MemHintは、コードの意味的理解とシンボリック推論を組み合わせた、ニューロシンボリックパイプラインである。
MemHintは検出されたバグ毎に52のユニークなメモリリークを検出し、バニラCodeQLでは19、バニラInferでは3である。
7つの現実世界のC/C++プロジェクトが合計340万行を超えるコードに対して、MemHintは検出されたバグ毎に52のユニークなメモリリークを約1.7ドルで検出した。
- 参考スコア(独自算出の注目度): 10.008985618291723
- License: http://creativecommons.org/licenses/by/4.0/
- Abstract: Memory leaks remain prevalent in real-world C/C++ software. Static analyzers such as CodeQL provide scalable program analysis but frequently miss such bugs because they cannot recognize project-specific custom memory-management functions and lack path-sensitive control-flow modeling. We present MemHint, a neuro-symbolic pipeline that addresses both limitations by combining LLMs' semantic understanding of code with Z3-based symbolic reasoning. MemHint parses the target codebase and applies an LLM to classify each function as a memory allocator, deallocator, or neither, producing function summaries that record which argument or return value carries memory ownership, extending the analyzer's built-in knowledge beyond standard primitives such as malloc and free. A Z3-based validation step checks each summary against the function's control-flow graph, discarding those whose claimed memory operation is unreachable on any feasible path. The validated summaries are injected into CodeQL and Infer via their respective extension mechanisms. Z3 path feasibility filtering then eliminates warnings on infeasible paths, and a final LLM-based validation step confirms whether each remaining warning is a genuine bug. On seven real-world C/C++ projects totaling over 3.4M lines of code, MemHint detects 52 unique memory leaks (49 confirmed/fixed, 4 CVEs submitted) at approximately $1.7 per detected bug, compared to 19 by vanilla CodeQL and 3 by vanilla Infer.
- Abstract(参考訳): メモリリークは、現実世界のC/C++ソフトウェアで依然として多い。
CodeQLのような静的アナライザは、スケーラブルなプログラム分析を提供するが、プロジェクト固有のカスタムメモリ管理機能を認識できず、パスに敏感な制御フローモデリングが欠けているため、そのようなバグをしばしば見逃す。
我々は、LLMによるコードの意味的理解とZ3に基づく記号的推論を組み合わせることで、両方の制限に対処する神経シンボルパイプラインであるMemHintを提案する。
MemHintはターゲットのコードベースを解析し、それぞれの関数をメモリアロケータ、デコロケータ、あるいはどちらも分類するためにLLMを適用し、どの引数や戻り値がメモリオーナシップを持つかを記録する関数サマリを生成し、解析器の組み込み知識をmalocやfreeのような標準的なプリミティブを超えて拡張する。
Z3ベースの検証ステップは、各サマリを関数の制御フローグラフに対してチェックし、要求されるメモリ操作が実行不可能なパスで破棄する。
検証済みの要約は、それぞれの拡張メカニズムを介してCodeQLとInferに注入される。
Z3パス実現可能性フィルタリングは、無効なパスの警告を排除し、最後のLCMベースの検証ステップは、各残りの警告が真のバグであるかどうかを確認する。
合計340万行を超える7つの現実世界のC/C++プロジェクトで、MemHintは52のユニークなメモリリーク(49の確認/修正、4のCVEが提出された)を、検出されたバグ毎に約1.7ドルで検出する。
関連論文リスト
- Bridging Code Property Graphs and Language Models for Program Analysis [1.7158296436650338]
大規模言語モデル(LLM)は、現実世界のセキュリティ脆弱性を分析する上で、重大な課題に直面します。
トークン制限はレポジトリ全体をロードすることを防ぎ、コード埋め込みはプロシージャ間データフローのキャプチャに失敗し、LLMは複雑な静的解析クエリを生成するのに苦労する。
我々は,Joern の Code Property Graph エンジンと LLM を統合した,オープンソースの Model Context Protocol (MCP) サーバである codebadger を紹介する。
論文 参考訳(メタデータ) (2026-03-25T22:08:04Z) - SPARC: Scenario Planning and Reasoning for Automated C Unit Test Generation [1.0010193170880752]
本稿では,高レベルのプログラム意図とポインタ演算と手動メモリ管理の厳密な構文制約とのギャップを埋める,ニューロシンボリックなシナリオベースのフレームワークを提案する。
我々は、59の現実世界およびアルゴリズムの被験者で評価し、バニラプロンプト生成ベースラインを31.36%、分岐カバレッジ26.01%、突然変異スコア20.78%で上回り、シンボリック実行ツールKLEEに適合または超えている。
論文 参考訳(メタデータ) (2026-02-18T18:09:03Z) - PlugMem: A Task-Agnostic Plugin Memory Module for LLM Agents [74.4491017652226]
タスク固有の再設計なしに任意のLLMエージェントにアタッチ可能なタスク非依存メモリモジュールであるPlugMemを提案する。
意思決定関連情報が生の経験よりも抽象的な知識として集中しているという事実に感銘されて、認識科学に焦点をあてて、エピソード記憶をコンパクトで知識中心の記憶グラフに構造化する。
PlugMemを3つのベンチマーク(長期会話型質問応答、マルチホップ知識検索、Webエージェントタスク)で評価する。
論文 参考訳(メタデータ) (2026-02-06T18:55:38Z) - Sparse-dLLM: Accelerating Diffusion LLMs with Dynamic Cache Eviction [72.27673320976933]
Diffusion Large Language Models (dLLMs) は推論と並列デコードにおけるブレークスルーを可能にする。
現在のキャッシュ技術は、フルレイヤ状態を保存することでデコーディングを加速するが、メモリ使用量を大幅に増加させる。
Sparse-dLLMは、動的キャッシュ消去とスパースアテンションを統合した最初のトレーニングフリーフレームワークである。
論文 参考訳(メタデータ) (2025-08-04T16:14:03Z) - LAMeD: LLM-generated Annotations for Memory Leak Detection [5.529919602615033]
機能固有のアノテーションを自動的に生成する新しいアプローチであるLAMeDを提案する。
Cooddyのようなアナライザと統合すると、LAMeDはメモリリークの検出を大幅に改善し、パスの爆発を低減する。
論文 参考訳(メタデータ) (2025-05-05T05:34:33Z) - LeakGuard: Detecting Memory Leaks Accurately and Scalably [3.256598917442277]
LeakGuardは、正確性とスケーラビリティの十分なバランスを提供するメモリリーク検出ツールである。
正確性のために、LeakGuardはライブラリと開発者が定義したメモリ割り当てとトランザクションロケーション関数の挙動を分析する。
スケーラビリティのために、LeakGuardは関数の要約と制約の少ないシンボル実行技術を用いて、興味のある各関数を独立に調べる。
論文 参考訳(メタデータ) (2025-04-06T09:11:37Z) - MemLLM: Finetuning LLMs to Use An Explicit Read-Write Memory [49.96019697955383]
本稿では,構造化および明示的な読み書きメモリモジュールを統合することで,大規模言語モデル(LLM)の拡張手法であるMemLLMを紹介する。
実験の結果, 言語モデリング, 特に知識集約型タスクにおいて, MemLLMはLLMの性能と解釈可能性を向上させることが示唆された。
論文 参考訳(メタデータ) (2024-04-17T18:13:16Z) - FoC: Figure out the Cryptographic Functions in Stripped Binaries with LLMs [51.898805184427545]
削除されたバイナリの暗号関数を抽出するFoCと呼ばれる新しいフレームワークを提案する。
まず、自然言語における暗号関数のセマンティクスを要約するために、バイナリ大言語モデル(FoC-BinLLM)を構築した。
次に、FoC-BinLLM上にバイナリコード類似モデル(FoC-Sim)を構築し、変更に敏感な表現を作成し、データベース内の未知の暗号関数の類似実装を検索する。
論文 参考訳(メタデータ) (2024-03-27T09:45:33Z) - rCanary: Detecting Memory Leaks Across Semi-automated Memory Management Boundary in Rust [4.616001680122352]
Rustはコンパイル時の検証を通じてメモリ安全性を保証するシステムプログラミング言語である。
本稿では,半自動境界を越えたリークを検出する静的,非自動,完全自動モデルチェッカーであるrCanaryを提案する。
論文 参考訳(メタデータ) (2023-08-09T08:26:04Z)
関連論文リストは本サイト内にある論文のタイトル・アブストラクトから自動的に作成しています。
指定された論文の情報です。
本サイトの運営者は本サイト(すべての情報・翻訳含む)の品質を保証せず、本サイト(すべての情報・翻訳含む)を使用して発生したあらゆる結果について一切の責任を負いません。