ニュース

富士通研究所、ブロックチェーンのリスクを検証する技術を開発、網羅的にリスクを自動検出し、スマートコントラクトの安全性を向上

 株式会社富士通研究所と中国富士通研究開発中心は7日、ブロックチェーン上の取引の自動処理プログラムであるスマートコントラクトのリスクを事前に検証し、ソースコード上での該当箇所を特定する技術を実現したと発表した。

 ブロックチェーンには、スマートコントラクトと呼ばれるシステム上で契約を自動化する機能があり、これを利用することで、契約の条件確認や履行までを自動的に実行できる。スマートコントラクトは多数の場所にコピーされて分散実行されるため、一度実行すると簡単には停止できず、スマートコントラクト内にリスクがあっても修正ができない。このため、実際に、ブロックチェーン上で自動投資信託アプリケーションを実現するスマートコントラクトにリスクがあったため、多額の資金が不正に移動されるという事件も発生しているという。

 ブロックチェーンアプリケーションの実行基盤の一つであるEthereumでは、スマートコントラクトのリスクは大きく6種類に分類されるが、スマートコントラクトのリスクを事前に検証する従来技術では、検出できるリスクの種類に漏れがあった。たとえば、複数のスマートコントラクトを経由して間接的呼び出し元認証を行う場合、トランザクションの呼び出し元情報が変わるというEthereumの仕様を悪用して認証手続きを不正に回避される可能性があるが、従来技術ではトランザクションの内部情報まで検証できないため、検出することができなかった。

検出可能なスマートコントラクトのリスクの種類

 富士通研究所では、Ethereumにおいて、これまで検出できなかったスマートコントラクトのリスクを自動的に検出し、さらにソースコード上でその該当箇所を特定する技術を開発した。

 Ethereumの言語仕様を悪用してトランザクションの呼び出し元が詐称されるリスクに対して、シンボリック実行を利用して、ソースコードについてさまざまな条件での取引を仮想的に実行。あらかじめルール化した認証に至るまでの不正な処理の流れや、不正につながるEthereum特有のコードパターンとの照合結果やブロックチェーン特有の取引記録へのアクセスの有無に基づき、ソースコードの欠陥を総合的に判定するアルゴリズムを開発した。これにより、漏れがなく、かつ高精度なリスクの検出を実現した。

 また、発見したリスクが、元のソースコードのどの部分に該当するかを高精度に特定する技術を開発。Ethereumの実行ファイルに対応するソースコード情報の付加されたデバック用の実行ファイルから、未使用のコマンドを除去することでシンボリック実行を可能とし、仮想的に実行される処理コマンドの種類と順序などから、実行ファイルとデバック用の実行ファイルの対応関係を推定することで、実行ファイルから発見されたリスクに対応するソースコード箇所の特定を可能にした。

スマートコントラクトのリスクの検出と、該当箇所の高精度な特定

 今回開発した技術を用いることで、従来の検証ツールでは67%の検出率だったところ、一部の項目を除き100%検出が可能となり、さらに精度として最大で88%の正解率を実現し、正解率の高いリスクの検出およびソースコード上のリスク箇所特定が可能になったと説明。リスクの過剰指摘が少ないため、より効率的にスマートコントラクトの開発を行えるようになり、リスク箇所の特定技術と合わせて、仕様理解、コード調査・修正など開発に関わる作業を削減する効果も期待されるとしている。

 富士通研究所では今後、EthereumだけではなくThe Linux Foundationが主催するHyperledgerにおけるブロックチェーンフレームワークの一つであるHyperledger Fabric向けの検証技術の開発も進め、2018年度中の実用化を目指す。また、スマートコントラクトの検証技術だけではなく、ブロックチェーンを活用したセキュアなシステム構築に関する技術開発も幅広く進めていくとしている。