Simple Science

最先端の科学をわかりやすく解説

# コンピューターサイエンス# ソフトウェア工学

言語モデルを使ったスマートコントラクトのセキュリティ向上

新しいアプローチがスマートコントラクトの監査と脆弱性検出を向上させる。

― 1 分で読む


スマートコントラクト監査のスマートコントラクト監査の進展る方法。スマートコントラクトの脆弱性検出を強化す
目次

スマートコントラクトは、Ethereumみたいなブロックチェーン上で動くデジタル契約みたいなもので、オンラインサービス、とくに金融でめっちゃ重要になってる。でも、スマートコントラクトを使う人が増えると、ミスや攻撃の可能性も増えてくる。ハッカーはこうしたミスを利用することが多くて、結果的に大きな財政的損失を招くことがある。例えば、数百万ドルがこういう契約の脆弱性のせいで失われたことがあるんだ。

こうした脆弱性を理解することは、スマートコントラクトをもっと安全にするためにめっちゃ大事。研究者たちは、新しい方法でこういう弱点を見つけようとしている。その中で、有力なアプローチの一つが、大規模言語モデル(LLM)を使うこと。これらはコードを分析したり理解したりするのに強力なツールなんだけど、エラーを見つけるのには精度と信頼性が足りないことが多い。

この記事では、従来のファインチューニング手法とLLMを組み合わせて、スマートコントラクトの監査を改善する新しい方法について話してる。目指しているのは、脆弱性を見つけるだけじゃなく、その理由を説明できるシステムを作ることで、開発者が修正しやすくすること。

スマートコントラクトの脆弱性の課題

スマートコントラクトはコードに基づいて動いていて、コードにエラーがあると深刻な問題が発生することがある。こうした問題は、論理の欠陥から生じることが多く、標準的な分析ツールでは特定するのが難しい。多くの脆弱性が悪用されていて、ユーザーには大きな財政的損失が出てしまってる。

脆弱性を追跡するプラットフォームの報告によると、ハッカーは脆弱なスマートコントラクトから何十億も盗んでる。この厳しい状況により、研究者や開発者はこうした脆弱性を特定し修正するための効果的なソリューションを見つけようと急いでいる。

従来の脆弱性を見つける方法は、事前に定義されたルールに頼ることが多いけど、ハッカーが新しい弱点を見つけると、これらのルールはすぐに古くなっちゃう。もっと革新的で適応力のある解決策が求められている。

言語モデルの役割

大規模言語モデルは、スマートコントラクトの脆弱性を検出する新しいフロンティアを表している。これらのモデルは膨大なデータを使ってコードのパターンや関係を学んで、スマートコントラクトをより効果的に分析できるようになっている。でも、最も進んだモデル、例えばGPT-4でも、脆弱性を見つけたり説明したりするのに、約30%の精度しか出せないんだ。

この低いパフォーマンスの理由の一つは、これらのモデルがスマートコントラクトのコードに特化して調整されていないから。いろんなテキストデータでトレーニングされてるけど、スマートコントラクトプログラミング言語、例えばSolidityのユニークな特徴に特化したトレーニングではないんだ。

それを解決するために、研究者たちはこれらのモデルをスマートコントラクトの脆弱性に特化して調整し始めてる。関連する例が豊富なデータセットでファインチューニングすることで、精度と信頼性を向上させようとしてる。

二段階ファインチューニングアプローチ

この新しい方法は、スマートコントラクトの監査におけるLLMのパフォーマンスを向上させるために、二段階ファインチューニングアプローチを採用している。方法は主に二つの要素から構成されていて、DetectorとReasonerがいる。

脆弱性の検出

Detectorモデルは、コードが脆弱かどうかを特定する役割を持っている。これまでの人間のハッカーがどうやってコードを評価するかを模倣して、特定のタスクに合わせたファインチューニング技術を使ってる。脆弱なサンプルと非脆弱なサンプルの両方から学ぶことで、Detectorは特定のコードセグメントの安全性に関して情報に基づいた決定ができるようになる。

脆弱性の背後にある理由

Reasonerモデルは、Detectorが脆弱性を特定した後に活躍する。こいつの仕事は、なぜそのコードが脆弱と考えられるのかを説明すること。コードを詳しく分析して、どんな具体的な問題が悪用につながる可能性があるのかを特定する。

この二段階の設定では、Detectorが最初にコードにラベルを付けて、次にReasonerがそのラベルの背後にある理由を説明することができる。これによって、各モデルがそれぞれの特定のタスクに集中できるから、全体的なパフォーマンスが良くなるかもしれない。

ReasoningをLLMエージェントで強化

二段階アプローチは効果的だけど、Reasonerが生成する説明の精度を確保するのが課題だ。それを改善するために、RankerとCriticというLLMベースのエージェントが導入されている。

RankerとCriticの役割

Rankerエージェントは、Reasonerが提供した様々な理由を評価して、最も適切なものを選ぶ。特定の基準を使って説明を評価して、最も関連性が高く正確なものだけが選ばれるようにしてる。

一方、CriticはRankerの選択を見直す。提供された理由を議論したり、必要に応じて再評価を求めたりする。このRankerとCriticの協力プロセスは、説明にさらに一層の精査を加えて、出力の質と信頼性を向上させる。

高品質なデータの収集

このモデルが効果的であるためには、高品質なデータでトレーニングする必要がある。このデータには、脆弱なコードサンプルと非脆弱なコードサンプルの例が含まれる。研究者たちは、業界の専門家からの信頼できる監査報告書に目を向けて、このデータを集めている。

これらの報告書は、スマートコントラクトで見つかった実際の脆弱性を詳しく説明しているけど、非脆弱なコードの例が不足していることが多くて、モデルのトレーニングにも必要なんだ。それに対処するために、研究者たちはセキュアなコードのネガティブサンプル、つまり安全なコードの例を作る方法を開発して、バランスの取れたデータセットを確保している。

新しい方法の評価

モデルがトレーニングされた後、研究者たちは他の既存モデルとそのパフォーマンスを評価する。この評価では、精度、再現率、F1スコアなどのさまざまな指標を見て、脆弱性を検出したり説明したりする際のモデルのパフォーマンスを評価する。

実際のスマートコントラクトの脆弱性を含むテストでは、この新しい方法が従来のモデルに比べて大きな改善を示した。結果は、この方法が脆弱性を検出するだけじゃなく、その決定の背後にある理由を説明するのが得意であることを示している。

多数決の応用

評価プロセスの重要な側面は、多数決の使用を含む。この技術は、推論フェーズ中に生成された複数のプロンプトから予測を集約する。いくつかの出力から最も一般的な結果を取ることで、システムは予測の精度と安定性を高めることができる。

最終的には、多数決がDetectorの全体的なパフォーマンスを向上させ、F1スコアや精度など、結果の信頼性を評価するのに重要な指標を改善することが証明された。

制限と将来の方向性

この新しい方法が示した改善にもかかわらず、まだ解決すべき課題がある。モデルのパフォーマンスは、データの質やファインチューニングに使用される技術によって変わることがあるし、関数呼び出しの関係性などの追加コンテキストを組み込むことが、必ずしも改善に繋がるわけじゃなくて、時にはモデルを混乱させることもある。

これからは、研究者たちはさらなるファインチューニングを進めて、モデルをもっと強固にする方法を探る予定だ。将来の研究では、モデルの人間の思考との整合性を高めて、スマートコントラクトを扱う開発者や監査人にとって直感的に使えるようにすることにも焦点を当てていく。

結論

まとめると、ファインチューニング技術とLLMベースのエージェントの組み合わせは、スマートコントラクトの監査を改善するための有望なアプローチを提供する。このシステムを開発することで、脆弱性を効果的に特定し、その理由を説明することができれば、開発者がより安全でセキュアなスマートコントラクトを作るのを助けられるんだ。

この研究は、スマートコントラクトのセキュリティ分野でのさらなる研究の基盤を築くもので、言語モデルの強みを活かしつつ、その弱点に対処することで、デジタル資産を保護し、ブロックチェーン技術への信頼を維持する上で大きな進展が期待できる。

オリジナルソース

タイトル: Combining Fine-Tuning and LLM-based Agents for Intuitive Smart Contract Auditing with Justifications

概要: Smart contracts are decentralized applications built atop blockchains like Ethereum. Recent research has shown that large language models (LLMs) have potential in auditing smart contracts, but the state-of-the-art indicates that even GPT-4 can achieve only 30% precision (when both decision and justification are correct). This is likely because off-the-shelf LLMs were primarily pre-trained on a general text/code corpus and not fine-tuned on the specific domain of Solidity smart contract auditing. In this paper, we propose iAudit, a general framework that combines fine-tuning and LLM-based agents for intuitive smart contract auditing with justifications. Specifically, iAudit is inspired by the observation that expert human auditors first perceive what could be wrong and then perform a detailed analysis of the code to identify the cause. As such, iAudit employs a two-stage fine-tuning approach: it first tunes a Detector model to make decisions and then tunes a Reasoner model to generate causes of vulnerabilities. However, fine-tuning alone faces challenges in accurately identifying the optimal cause of a vulnerability. Therefore, we introduce two LLM-based agents, the Ranker and Critic, to iteratively select and debate the most suitable cause of vulnerability based on the output of the fine-tuned Reasoner model. To evaluate iAudit, we collected a balanced dataset with 1,734 positive and 1,810 negative samples to fine-tune iAudit. We then compared it with traditional fine-tuned models (CodeBERT, GraphCodeBERT, CodeT5, and UnixCoder) as well as prompt learning-based LLMs (GPT4, GPT-3.5, and CodeLlama-13b/34b). On a dataset of 263 real smart contract vulnerabilities, iAudit achieves an F1 score of 91.21% and an accuracy of 91.11%. The causes generated by iAudit achieved a consistency of about 38% compared to the ground truth causes.

著者: Wei Ma, Daoyuan Wu, Yuqiang Sun, Tianwen Wang, Shangqing Liu, Jian Zhang, Yue Xue, Yang Liu

最終更新: 2024-08-17 00:00:00

言語: English

ソースURL: https://arxiv.org/abs/2403.16073

ソースPDF: https://arxiv.org/pdf/2403.16073

ライセンス: https://creativecommons.org/licenses/by-nc-sa/4.0/

変更点: この要約はAIの助けを借りて作成されており、不正確な場合があります。正確な情報については、ここにリンクされている元のソース文書を参照してください。

オープンアクセスの相互運用性を利用させていただいた arxiv に感謝します。

著者たちからもっと読む

類似の記事