スマートコントラクトの監査にGPTはどの程度有効なのでしょうか?

by Slow Mist
2023年3月21日

はじめに

最近、ChatGPTは、従来のテキストを強化し、作業効率を高め、簡潔な概要を提供する能力をユーザーに印象づけ、大きな人気を集めています。また、GPTをベースにコーディングの効率化を図るプラグイン「CodeGPT」も人気を博しています。今回リリースされたGPT-4は、ブロックチェーンやSolidityのスマートコントラクトの監査に適用できるのだろうか。この問いに基づき、様々なフィージビリティテストを実施しました’

テスト環境と方法論

本テストで使用した比較機種はGPT-3.5(Web),GPT-3.5-turbo-0301,GPT-4(Web).

テストで使用されたプロンプト:このSolidityスマートコントラクトの脆弱性を発見するのを手伝ってください。

脆弱性コードスニペット検出の比較

テストは3回実施しました。テスト1、2では、過去によく遭遇した歴史的な脆弱性コードをテストケースとして利用し、モデルの基本的な脆弱性を検出する能力を評価しました。テスト3では、中程度の難易度の脆弱性コードを主要なテストケースとして導入しました。

テスト1:

例”スマートコントラクト監査入門 “シリーズ:tx.orginを使ったフィッシング

脆弱性コードです:

GPTに送信されます:

GPT-3.5(Web)対応:

GPT-3.5-turbo-0301 応答:

GPT-4(Web)対応:

結果からわかるように、3つのモデルともtx.originに関連する重要な問題を特定しています。

テスト2:

例題です:”スマートコントラクト・セキュリティ監査入門|オーバーフロー

GPTに送信されます:

GPT-3.5(Web)対応:

GPT-3.5-turbo-0301 応答:

GPT-4(Web)応答:

GPT-3.5(Web)とgpt-3.5-turbo-0301の両方がクリティカルなオーバーフローの脆弱性を特定できたのに対し、驚くべきことにGPT-4(Web)は関連するプロンプトを提供しなかったことは特筆すべきです。

テスト 3:

例”手ぶらで白狼~アイスキャンデーハックの分析

GPTに送信されます:

GPT-3.5(Web)対応:

GPT-3.5-turbo-0301 応答:

GPT-4(Web)応答:

その結果、3つのバージョンとも、重要な脆弱性を検出することはできませんでした。

コードスニペット検出の概要

GPTモデルは、単純な脆弱性コードスニペットに対しては十分な検出能力を示したが、より複雑な脆弱性の特定に関しては、不十分でした。GPT-4(Web)は、テストを通じて、優れた可読性と明確な出力形式を示しました。しかし、コードの監査能力はGPT-3.5 (Web)やGPT-3.5-turbo-0301を上回っていないようです。また、トランスの出力に不確定要素があるため、GPT-4 (Web)では、重要な問題を見落とすケースもありました。

フルコントラクトにおける既知の脆弱性の検出の比較

コントラクト監査におけるプロジェクトの実用的な要件をよりよく満たすために、大規模なコードベースを持つコントラクトをインポートすることで、難易度を上げました。これにより、GPT-4モデルの監査能力を包括的にテストすることができました。一方、GPT-3は文脈上の文字数制限が小さいため、この文脈では評価されませんでした。

今回の例では、過去の事例をテストテンプレートとして使用し、実際のシナリオをシミュレートしています:

例”$31 Million MonoX Protocol Hack “の詳細な分析

監査を開始するにあたり、コントラクトを一括で入力し、対話の終盤に脆弱性検出のリクエストを提出しました。

このテストでは、以下のプロンプトが利用されました:

“ここにSolidityのスマートコントラクトがあります”

コントラクトコードを挿入する

“上記は完全なコードです、このスマートコントラクトの脆弱性を発見するのを手伝ってください。”

このように、GPT-4は、OpenAIが公開した情報によると、単一の入力文字数の上限が最も高いにもかかわらず、最後の脆弱性検出リクエストの際にテキストのオーバーフローが発生し、コンテキスト上の問題が発生しました。その結果、このモデルはコンテンツの一部しか識別できず、大規模なコントラクトの徹底的なコンテキスト監査を実施することができません。

バッチ式監査:インクリメンタルインプットとディテクションによるアンパックドコントラクト:

プロンプト1

“このSolidityスマートコントラクトの脆弱性を発見するのを手伝ってください。”

コントラクトコードのバッチ1。

プロンプト2

“このSolidityスマートコントラクトの脆弱性を発見するのを手伝ってください。”

コントラクトコードのバッチ2です。

プロンプト3

“このSolidityスマートコントラクトの脆弱性を発見するのを手伝ってください。”

コントラクトコードのバッチ3

なお、GPT-4では、重要な脆弱性ポイントを特定することができませんでした。

要約: GPTの機能の現状は、コントラクトの分析に完全に適しているとは言えないかもしれませんが、この領域におけるAIの可能性は依然として素晴らしいものです。

利点があります:

コントラクトコードに含まれる複雑な脆弱性に対するGPTの検出能力は限定的かもしれませんが、基本的で単純な脆弱性については、部分的に素晴らしい検出能力を示しています。さらに、脆弱性が特定されると、モデルは理解しやすく、ユーザーが読みやすいフォーマットで解説を提供します。このユニークな機能は、初期トレーニングの段階で迅速なガイダンスとわかりやすい回答を必要とする初心者のコントラクト監査人に特に有益です。

チャレンジすることです:

GPTの出力はダイアログごとにある程度のばらつきがあり、APIインターフェースのパラメーターで調整することができます。しかし、それでも出力は一定ではありません。このような変動は言語対話には有益であり、会話の信憑性を大いに高めるが、コード解析作業には不向きである。AIが提供しうる複数の脆弱性回答を網羅するためには、同じ質問に対して複数のリクエストを行い、その結果を比較・フィルタリングする必要がありました。これは不用意に作業量を増やし、結局、人間の効率化を支援するというAIの基本的な目的を損なってしまいます。

例えば、「脆弱性コードスニペット検出の比較」のテスト2を、関数名を少し変更してから再度生成する追加テストを実施しました。

このように、その出力結果は、前回のテストと比較して、いくつかの付加的な内容が追加されていることがわかります。

脆弱性解析能力については、まだ大きな改善の余地があります。

なお、現在(2024年3月16日現在)のGPTのトレーニングモデルでは、少し複雑な脆弱性については、重要な脆弱性ポイントを正確に分析・特定することができません。

コントラクトの脆弱性に関するGPTの分析・マイニング機能には現在のところ限界がありますが、一般的な脆弱性に関する単純なコードブロックを分析しレポートを作成する能力は、今でもユーザーの間で興奮を呼び起こしています。GPTやその他のAIモデルのトレーニングや開発を続けることで、大規模で複雑なコントラクトの監査支援は、予測可能な将来、より速く、より知的で、より包括的な結果を達成できると固く信じています。技術開発が人間の効率を指数関数的に向上させるように、変革的なシフトが迫っています。私たちは、ブロックチェーンのセキュリティ強化におけるAIの利点を切望しており、この重要な分野に対する新たなAI製品の影響を監視することに警戒しています。目に見える未来において、私たちは必然的にAIとある程度融合することになるでしょう。AIとブロックチェーンがあなたとともにありますように。

SlowMistについて

SlowMistは、2018年1月に設立されたブロックチェーンセキュリティ企業です。10年以上のネットワークセキュリティの経験を持つチームが、世界的な勢力となるべくスタートした会社です。私たちの目標は、ブロックチェーンエコシステムを誰にとっても可能な限り安全なものにすることです。私たちは現在、Huobi、OKX、Binance、imToken、Crypto.com、Amber Group、Klaytn、EOS、1inch、PancakeSwap、TUSD、アルパカファイナンス、マルチチェーン、O3Swapなど様々な有名なプロジェクトに取り組んできた国際的なブロックチェーンセキュリティ会社として知られています。

原文:How effective is GPT for auditing smart contracts?

Scalablyメディアをフォローしましょう!

Scalablyのブログをフォローして世界のWeb3 VCやアクセラレーターの最新の発信をチェックしよう!

--

--

ScalablyResearch
Community-Driven Ecomedia

Research team at Scalably Inc - Community Tech Web3.0 company