← 最新の論文
💻 computer science

Chiral Analysis of Smart Contracts: Detecting Vulnerabilities from Relational Inconsistencies Across Business Paths

本論文は、意味的にペアとなるビジネスパス間の不整合を特定することで、従来の単一関数解析では見逃される複雑なロジックバグを効果的に発見する、ChiralDetectorツールに実装された関係的静的解析モデルである「カイラル解析(chiral analysis)」を紹介するものである。

原著者: Yue Xue

公開日 2026-07-21
📖 1 分で読めます☕ さくっと読める

原著者: Yue Xue

原論文は CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) でライセンスされています。 これは以下の論文のAI生成解説です。著者が執筆または承認したものではありません。技術的な正確性については原論文を参照してください。 免責事項の全文を読む

探偵のジレンマ:コードが「欠落」によって嘘をつくとき

あなたは、活気ある都市でミステリーを解決しようとしている探偵だと想像してください。通常、あなたは決定的な証拠を探します。割れた窓、泥のついた足跡、あるいは怪しいメモといったものです。コンピュータコードの世界、特にブロックチェーン上で動く「スマートコントラクト」の世界では、従来のセキュリティツールはこの探偵のような役割を果たします。それらはコードを一行ずつスキャンし、ドアの鍵のかけ忘れや計算における数学的なミスといった、明らかな間違いを探し出します。これらのツールは、「ローカル」なバグ(一つの部屋の中で発生するような種類のもの)を見つけることには長けています。

しかし、もし犯罪がその部屋の中ではなく、外で起きていたらどうでしょう? もし、フロントドアには鍵がかかっているのに、バックドアが大きく開いていて、その二つのドアが本来は一つのセキュリティシステムの一部であるべきだったとしたら? コンピュータサイエンスにおいて、これは「リレーショナル(関係的)」な問題と呼ばれます。それは単一の部品の破損についてではなく、二つの部品が互いに一致すべきなのに、一致していないという問題なのです。本論文は、これらコードのペアを、互いに同じ真実を映し出す鏡像として扱うことで、これらの巧妙なバグを捉える新しい手法を提示しています。もし一方のパスが「止まれ」と言い、もう一方が「進め」と言っているなら、たとえ「止まれ」も「進め」も単体で見れば完璧に見えたとしても、そのシステムは壊れているのです。

論文:カイラル解析と鏡のテスト

本論文は、**カイラル解析(Chiral Analysis)**と呼ばれる巧妙な新手法を紹介しています。「カイラル(対掌性)」という言葉は化学に由来し、互いに鏡合わせの関係にあるが、完全に重ね合わせることができない物体(例えば、左手と右手)を説明するものです。スマートコントラクトの世界において、著者らは多くのビジネス操作がペアで存在すると提案しています。「シングル」トレードと「バッチ」トレード、「買い」と「売り」、あるいは価格の「プレビュー」とその価格の「実行」などです。これらのペアは、コードにおける「カイラルの双子」なのです。

核心となるアイデアはシンプルかつ強力です。これらのペアを、互いに宿題をチェックし合っているかのように扱うことです。ユーザーがアイテムを購入した場合、コードは手数料を徴収すべきです。もし同じユーザーが後でそのアイテムを売却する場合、コードはその元の購入と整合性が取れる方法で資金を処理しなければなりません。もし「買い」のパスが手数料をドルで徴収する一方で、「売り」のパスが誤って異なる通貨で返金してしまう場合や、「バッチ」版が「シングル」版が返金するはずの資金を返し忘れている場合、バグが存在することになります。論文は、これらのバグは標準的なスキャナーには見えないと主張しています。なぜなら、個々のコード行自体は正しく見えるからです。エラーは、二つのパスを鏡にかざし、それらが一致しないことを確認したときに初めて明らかになるのです。

これらの見えないエラーを見つけ出すために、著者らはChiralDetectorというプロトタイプツールを構築しました。このツールを、特定の職務記述書を持つ非常に賢いインターンだと考えてください。まず、ツールはコードベース全体を読み込み、あらゆる可能な「ビジネスパス」(例えば、顧客が店の中を移動するあらゆるルートを辿るように)をマッピングします。次に、「静的ランカー(static ranker)」——一連の単純なルール——を使用して、どのパスがカイラルの双子である可能性があるかを推測します。例えば、buy という名前の関数と、同じ銀行口座に触れている sell という名前の関数を探すといった具合です。

潜在的な双子のリストを作成した後、ツールは「重量級の助っ人」を呼び出します。それは、人間の言語やコードを理解するAIの一種である**大規模言語モデル(LLM)**です。AIは単にエラーを探すのではなく、論理学者のように振る舞います。AIはこう問いかけます。「もしこれら二つのパスが鏡であるべきなら、どのようなルールに従うべきか?」そして、以下の7つの特定の次元をチェックします。

  1. ガード(Guards): 両方のパスは同じパスワードや権限をチェックしたか?
  2. アクター(Actors): 両方において、同じ人物が支払いを受け、受け取ったか?
  3. 状態(State): 両方のパスはデータベースを同じ方法で更新したか?
  4. 値(Value): 手数料や返金を一貫して扱っているか?
  5. 順序(Order): 同じシーケンスで実行されたか?
  6. 失敗(Failure): 何か問題が発生した際、両方のパスは同様にクラッシュするか、あるいは回復するか?
  7. 外部(External): 同じ外部ソースを信頼しているか?

もしAIが不一致を見つけた場合、すぐに「バグだ!」と叫ぶわけではありません。検出結果を「厳格な検証器(strict validator)」に渡します。この検証器は、AIが間違っていることを証明しようとする懐疑的な編集者です。それはこう問いかけます。「これは本当にバグなのか、それとも単なる設計上の選択なのか?」最後に、ツールは類似の検出結果をグループ化し、100個の小さなエラーを報告する代わりに、一つの大きな根本原因を報告するようにします。

結果:隠れたグリッチを見つける

著者らは、このシステムを Phi プロトコル という実世界のプロジェクトでテストしました。結果は、このアプローチが機能していることを示唆していますが、まだ発展途上の段階でもあります。

実験で行われた内容は以下の通りです:

  • ツールは 3,217 組のコードパスのペアを調査することから始まりました。
  • 明らかに関連していないものをフィルタリングした後、深く調査するために 1,643 組のペアを保持しました。
  • AI検出器は、201 個の潜在的な問題(「疑わしい」ものと「確定した」候補の混合)を見つけました。
  • 類似のレポートをグループ化し、重複を削除した後、これは 101 組のグループに減少しました。
  • 厳格な検証器により、これがさらに 44 個の確定したポジティブ(陽性)へと絞り込まれました。
  • 最終的に、人間の専門家が根本原因をレビューした後、チームは 13 個のユニークで効果的な問題を特定しました。

これら13の問題は、標準的なツールが見逃すような種類のものでした。例えば:

  • 「証明」の取り違え: 「買い」と「クレーム(請求)」のパスが証明を特定のアイテムに正しく紐付けていなかったため、所有権の証明が別のアイテムに再利用できてしまうシステムがありました。
  • 手数料の混乱: システムの一部の計算では手数料を「ベーシスポイント」(パーセンテージの単位)として計算していましたが、別の部分では同じ数値を「wei」(極めて小さな通貨単位)として扱っており、大規模な財務エラーにつながっていました。
  • 返金の罠: ユーザーが過払いをした際、「シングル」トレードのパスではユーザーに資金を返金していましたが、「バッチ」トレードのパスでは、誤って中間契約に返金を送ってしまい、ユーザーが手元に資金を残せない状態になっていました。

著者らは、この手法が単純なタイポ(打ち間違い)ではなく、システムが「お金やルールをどう考えるか」という「ビジネスロジック」のバグを捉えるのに特に優れていると述べています。彼らは、プロセスは完璧ではないことも指摘しています。多くの「ノイズ(誤検知)」が発生し、それをクリーニングする必要があり、また、関係性を特定するためにAIの賢さに依存していることも認めています。しかし、標準的なツールが見逃した13の明確で影響力の大きい問題を特定できた事実は、コードを「カイラルのペア」というレンズを通して見るというアプローチが、有望な新しい方向性であることを示唆しています。

本論文は、これがあらゆるセキュリティ問題を解決する魔法の杖ではないものの、コードの行と行の「間」に隠れているバグを見つけるための構造化された方法を提供すると結論付けています。コードパスを鏡像として扱うことで、反射が実物と一致しないときに現れる亀裂を、ようやく捉えることができるようになるのです。

自分の分野の論文に埋もれていませんか?

研究キーワードに一致する最新の論文のダイジェストを毎日受け取りましょう——技術要約付き、あなたの言語で。

Digest を試す →