ブロックチェーンコードの監査とは?
Pontem Network
Pontem Networkのホワイトリスト登録はこちらから!
アンバサダーも募集中です。Aptos Japanにもご参加ください。
スマートコントラクトの監査は、dAppのローンチ前に欠かせないステップです。第三者の監査組織によって、チームが見逃している脆弱性を発見することができます。監査は、自動ツールと手動分析の両方を駆使して、ハッキングの防止に努めます。
この記事では、監査がどのように行われ、なぜ未監査のプロトコルに資金を投入すべきではないのか、について言及していきます。
概要
- 監査プロセスは、プロジェクトレビュー、自動テスト、手動分析、ピアレビューで構成されます。その後、発見された脆弱性のリストと修正方法に関する推奨事項が記載されたレポートが作成されます。
- スマートコントラクトの自動テストツールは、リエントランシー、トランザクションの並べ替え、オーバーフロー、タイムスタンプ依存などの脆弱性を発見することが可能で、人気のツールはMythril、Manticore、Slither、Oyenteなどです。
- 自動テストは時間を節約できますが、コード内のバグを見逃したり、誤検出をする可能性もあります。そのため、手作業による一行ごとのコード解析が不可欠となります。
- 多くの監査法人はSolidityとEVMチェーン、Solanaを対象としていますが、OtterSecやHalbornのように、既にMoveを使用している監査法人もあります。MoveはSolidityより遥かに安全な言語ですが、それでもdAppへの監査は必須です。Pontem Walletは3回目の監査を受けています。
- 未監査のdAppはハッカーの格好の標的となり、また内部のバグが原因で崩壊することもああります。主な例としてはNomadやBeanstalk、Yam Financeなどがあります。
- 主なスマートコントラクト監査機関としてHacken、OtterSec、CertiK、ConsenSys Diligence、Halborn、Quantstampが挙げられます。
スマートコントラクト監査が重要な理由
ブロックチェーンのコードおよびスマートコントラクトの監査は、ブロックチェーンやdAppのコードを、第三者の監査組織が分析し、エラーや脆弱性、バグの発見を目的とするものです。
ブロックチェーンのセキュリティは、有名なトリレンマ(セキュリティ、スケーラビリティ、分散化)の一部であり、ネットワークやdAppをうまく機能させるにはこれら3つの要素をバランスよく保持する必要があります。
他のソフトウェアプロジェクトと同様、dAppは信頼性と一貫性を持って動作する必要があり、そうでなければユーザーからの信頼は失われます。ブロックチェーンの場合、dAppに何億ドルもの流動性を保持することができるため、その重要性は更に大きくなります。
これを防ぐための方法として、外部ソースから提供されるコード監査があります。スマートコントラクトの監査はどのように構成されているのか、どのような脆弱性が見つかるのか、どのような監査組織があるのか、監査をしないことがどのように破滅をもたらすのかを見ていきます。
ブロックチェーン監査の5つのステップ
1.プロジェクトのレビューとコード分析
監査チームは、プロジェクトのアーキテクチャ、ビジネスロジック、実用的なアプリケーションなど、プロジェクトに関する詳細な情報を得る必要があります。多くのDeFi攻撃では、ロジックの穴や経済的な脆弱性がターゲットにされています。
そこで、クライアントは監査の目標やテストの実行方法、どのユースケースをテストするのか、などの情報を記述する必要があります。
次に、監査チームは、dAppのロジックがどのように実装されているかを理解するために、リポジトリ全体を読み取ります。
2.自動化テスト
スマートコントラクトのテストソフトウェアツールはまだ十分ではなく、ほとんどがSolidityやEVMチェーン用のものです。ビジネスロジックやトークノミクスの欠陥を見つけることはできませんが、監査の時間コストを大幅に節約することができます。
最も人気のあるツールは以下の通りです:
- Mythril by ConsenSys− 多くの重大なエラーを検出する強力なオープンソースツールで、MythXセキュリティサービスパッケージの一部です。
- Manticore− シンボリック入力を送信して特定のクラッシュの原因を見つけるなど、さまざまな攻撃シナリオを通過させるコマンドラインツールです。
- Slither− 重要な脆弱性をハイライトし、修正を提供する、迅速で使いやすいチェッカーです。
- Oyente− このツールは、2016年に作成されて数年間更新されていませんが、今でも精度の高さで良い評価を受けています。
監査ソフトは、以下のような多くの種類の脆弱性の発見が可能です:
- リエントランシー− 脆弱なスマートコントラクトから悪意のあるスマートコントラクトに資金を流出させるために、繰り返しdraw関数を呼び出す攻撃
- リオーダリング − キュー上の他のトランザクションよりも先に自分のトランザクションを実行させ、価格を操作する行為(フロントランニングとして知られている)
- オーバーフロー&アンダーフロー− 間違ったデータを送ってスマートコントラクトに計算ミスをさせる(結果が許容上限またはを下限を超える)ことで結果として膨大な量のトークンをミントさせる攻撃
- タイムスタンプ依存性− 間違ったタイムスタンプをコントラクトに送り込み、任意のトランザクションが特定のタイミングに起こったように見せかける攻撃(オークションや宝くじに勝つために)
- リプレイ− ブロックチェーン上のデータを傍受して再送信する攻撃(フォークイベント時の資金窃取に利用可能)
3.手動によるコード解析とテスト
この段階では、自動化ツールで見落とされたエラーの発見と、監査ソフトが誤って脆弱性と判定したコードの誤検出を特定します。
監査では、重要レベル(トークンの盗難やdAppの破壊など)、中レベル(限定的な被害想定)、低レベル(バグであるが被害リスクは少ない)の異なる重大度の脆弱性を発見していきます。
4.ピアレビュー
信頼性を最大限に高めるために複数の監査人を配置するのが理想的であり、監査人がチームで作業し、一緒にコードを解析することでピアレビューを同時に行うこともあります。
ピアレビューを行わない場合のリスクについては後述します。
5. 監査報告書
監査結果は、複数ページに及ぶ報告書にまとめられ、クライアントに提出されます。報告書には、発見されたバグのリストと、バグを修正し、セキュリティを向上させるための推奨事項が記載されています。
ブロックチェーン分野では、監査報告書を公開するのが標準的です。これは、dAppのセキュリティと透明性の両方をアピールするのと同時に、プロジェクトの良いマーケティングツールとしての意味合いもあります。重大な脆弱性が発見された場合、プロジェクトはそれを最初に修正します。
Move vs Solidityにおけるスマートコントラクト監査の課題
EVMとSolidityのスマートコントラクトはデバッグが難しく、セキュリティ上の問題も多く存在します。EVM及びSolidityは、先発者としての優位性と、監査が必要な多くの脆弱性の両方を備えているのです。
Ethereum/EVMエコシステムからMoveなどの代替ブロックチェーンに移行する場合、興味深い課題に直面します。一方では、Move言語とMove VMは、SolidityやEVMよりもはるかに安全で、例えばMoveコントラクトはリエントランシー攻撃に耐性があります。
一方で、Move言語を扱うブロックチェーンセキュリティの専門家はまだ多くありません。Pontem Walletの監査人であるOtterSecとHalbornはMove監査のパイオニアであり、Pontem Wallet自体がAptos上で最初に完全に監査されたdAppsであることは実に誇らしいことだと言えます。
ところで、Pontemの監査人であるOtterSecは、Moveを使ってより安全なdAppsを構築する方法について興味深いブログ記事を公開しており、PontemのLiquidswap DEXのコードの一部が例として使用されています。
2017年に設立されたHackenは、ブロックチェーンプロトコル、スマートコントラクト、dApps全体を監査しています。また、CoinGeckoのようなプラットフォームのバグバウンティプログラムのキュレーションも行っています。
Hackenは、VMチェーン、Solana、NEAR、Cosmos、Polkadotなどの多様なブロックチェーンと連携しています。そのクライアントには、FTX、Gate.io、Crypto.com、KuCoin、Huobi、Ellipsis、IoTex、1inch、Aurora、Klaytn、Cirus、Victoria VR、WAX、TrustSwap、その他数十の DeFi、 GameFi、インフラ、NFTプロジェクトが含まれています。
OtterSecは、Solanaエコシステムにおける最高のブロックチェーン監査プロバイダーです。そのポートフォリオには、Wormhole、Serum、Saber、Raydium、Solend、Socean、そしてNEARのAnchor、LayerZero、Proximityが含まれています。
さらに、Moveに対応する数少ないブロックチェーン監査会社の1つでもあります。OtterSecはスマートコントラクトのセキュリティ、特にSolanaに関するヒントを掲載した素晴らしいブログを提供しています。
CertiKは、主にブロックチェーンセキュリティリーダーボードで知られており、3000以上のプロジェクトが信頼スコアによってランク付けされています。セキュリティ監査は、侵入テスト、KYC、バグバウンティ、オンチェーン監視、ウォレットトレースとともに、CertiKのさらなる専門分野となっています。
CertiKは、Ethereum、Avalanche、BNB Chain、Solana、Algorand、NEAR、Cosmos上のプロトコルに対して1800以上の監査を行ってきました。Binance、The Sandbox、Huobi、OKexの信頼できる監査プロバイダです。
Halbornは2019年に倫理的な(ホワイトハット)ハッカーによって作られ、現在は50人以上のブロックチェーンセキュリティの専門家が所属しています。スマートコントラクトの監査とは別に、セキュリティコンサルティング、ペネトレーションテスト、セキュリティオートメーションに特化しています。
Halbornは、Polygon、Solana、Thorchain、Bancor、Pangolin、Reef、Sushi、BlockFi、Polkadex、Bored Apes Yacht Clubといった人気プロジェクトと仕事をした経歴を持っています。また、Pontem Walletの監査役の1人でもあります。
Halbornのブログは、最近のDeFiハッキングの事後報告や、ブロックチェーン攻撃の種類を深く掘り下げて紹介しておりお薦めです。
ConsenSysは、Web3開発者のための重要なツールであるMetaMask、Truffle、Infuraを開発した会社です。スマートコントラクトの監査部門であるConsenSys Diligenceは、Aave、OmiseGo、0x、Aragon、Horizonなど100以上のチームと協働してきました。
ConsenSys Diligenceは、脅威のモデル化、継続的な脆弱性の検証、攻撃対応計画など、監査以外のサービスも提供しています。
Quantstampは250以上のプロジェクトに携わり、2000億ドル以上の資産とロックされた流動性を確保しています。そのポートフォリオには、OpenSea、Curve、Maker DAO、Compound、NBA TopShot、Lido、SuperRare、Decentraland、Aave、Axie Infinityが含まれており、また、Solana、Ethereum、BNB Chain、Cardano、Flow、Near、Tezos、Hedera Hashgraphなどのブロックチェーンエコシステムと連携しています。
監査をしなかったために崩壊した3つのDeFiとdApps
数百万ドルが閉じ込められている未監査のDeFi dAppには、基本的に「Hack Me」と書かれたターゲットが描かれています。そして、たとえ第三者によって悪用されなかったとしても、内部コードの問題の犠牲になる可能性があります。ここでは、監査を省略した場合の結果を示す3つのストーリーを紹介します。
Nomadブリッジ:2億ドル消失
Nomadは、Ethereum、Evmos、Moonbeam、Avalanche、Milkomedaプロトコルを接続するブリッジです。Paradigmのセキュリティ責任者である@samczsun氏によると、8月2日の攻撃では、監査を受けていないNomadのアップグレードがターゲットにされたとの発表されています。
このニュースが広まるにつれ、より多くの人がこのフリーフォーオールに参加するようになりました。一人の人間によるハッキングではなく、41のアドレスによる混沌とした攻撃となってしまったのです。これはブリッジが保有する流動性の全ての資産に影響しました。
Nomadは、ブロックチェーンのセキュリティ企業と協力して、資金の追跡と回収に取り組んでいます。しかし、メインネットに未監査のコントラクトアップグレードを押し付ける前に、ブロックチェーンセキュリティの専門家を雇うべきだったと言えるでしょう。
Beanstalk:フラッシュローンで1億8000万ドルをハッキング
Beanstalkは、Ethereum上の分散型ステーブルコインです。BEANのペグを維持するために担保を使う代わりに信用を利用し、保有者が利子と引き換えにBeanを貸す仕組みを持っていました。
2022年4月17日に、あるハッカーがBeanstalkのガバナンスコードのバグを悪用しました。Uniswap、SushiSwap、Aaveでフラッシュローンを行い、DAI、USDC、USDT、BEANで約10億ドルを借り入れ、その流動性をCurveのBEANプールに入れ、Beanstalk DAOの過半数の議決権を獲得できる量のLPトークンを受け取りました。
その後、攻撃者は、プロトコルから自分のアドレスにすべての資金を転送するためのBeanstalk改善提案(BIP)を提出し、それに投票して通過させることに成功しました。攻撃者は合計で、BEAN、ETH、Curve LPトークンで最大1億8200万ドルを受け取りったのです。
Beanstalkのスマートコントラクトは、Omniciaによって監査されていましたが、フラッシュローンの脆弱性を含むコードは、監査されることなく後から追加されたものでした。スマートコントラクトの監査は継続的なプロセスであり、全ての新機能をレビューする必要があるということを示しています。
Yam Finance:バグにより99%ダウン
2020年8月に開始されたYam Financeは、高収量のファーミング報酬を提供しており、かわいい山芋の絵文字とミームによって人気を博していました。(YAM = YFI + Ampleforth、Yam Financeは2つのDeFIプロトコルのアイデアの融合でできています)
プロジェクト自体は、創業者たちがアイデアを出し合いながら、わずか10日間で完成させており、実験的な試みとしてチームは監査なしでYam Financeを展開し、1日で4億ドルのTVLがプロトコルに注ぎ込まれました。
しかし、ローンチからわずか2日後にYam Financeは破綻しました。原因はリベース機能のバグで、コントラクトがUniswapの特定のプールに大量のYAMをミンティングしてしまったことにあります。そのYAMの多くがトレジャリーに送られ、その結果、ユーザーが保有するYAMの量が投票の定足数に達しないため、ガバナンスモジュールが使用できなくなってしまったのです。
DAOの投票によって押し通すという解決策を実行するため、チームはコミュニティを結集し、全てのYAMを投票に委ねましたが、十分な結果は得られませんでした。共同創設者のBrock Elmoreは、「悲しみで病んでいる」とツイートしています。
Yam Financeは、20万ドルのTVLで現在も稼働し続けています。
DeFiプロトコルの発展は非常に迅速であり、バグを探して修正する時間がないくらい短期間でに広まってしまうという悪しき傾向があります。ローンチ前には必ず時間を取って、監査をすることが必要です。
監査はセキュリティ保証ではない
スマートコントラクトの監査は、そのプロジェクトが悪用されないことを100%保証するものではありません。
- 例えばGrim Financeは、Solidity Financeの監査を受けていたにもかかわらず、2021年12月にハッカーに3000万ドルを奪われました。後に監査を担当したアナリストが新人だったことが判明しています。また、通常、監査人は互いの仕事をチェックしますが、ピアレビュープロセスが思うように進まなかったということも判明しています。
- 攻撃者は、コントラクトをハッキングする他、ウォレットキーを盗んだり、フィッシュしたりすることもあります。これは、bZX(5500万ドルの損失)とEasyFi(9000万ドル)に起こったことです。後者の場合、犯人はプロトコルのCEOのMetaMaskウォレットに自らアクセスしていました。
- サードパーティのdApp(未監査)の穴を利用して、それに統合されている別のプロトコルを狙う攻撃も存在します。
- ブロックチェーンの変更によって、dAppが存在するチェーンがアップグレードされると、新たな攻撃ベクトルが発生する可能性があります。
これらの理由から、監査契約や報告書には必ず免責事項が記載されています。dAppチームの観点からすると、これらのリスクを最小化する最善の方法は、複数の独立した監査を受けること、つまり「監査の冗長性」を確保することです。
これはPontem Networkがとっている戦略でもあり、私たちはAptos向けのdAppをエコシステムの中で最も安全なものにしたいと考えています。そのため、OtterSecの監査からはPontem Walletの脆弱性が発見されなかったにもかかわらず、私たちは現在、Halbornに依頼してレビューに取り組んでおり、3回目のレビューも控えています。
もちろん、これはスケーリングプロセスを遅らせることになりますが、私たちはユーザーの安全が急成長よりも優先されるべきであるという理念を持っています。
私たちは最初の10億人のブロックチェーンユーザーを乗せることができるエコシステムのための基盤となるインフラ系dAppsを構築しており、Aptos自体が世界で最も安全なL1ブロックチェーンなのです。つまり、私たちが何よりもセキュリティを重視するのは当然なことであると言えます。
Pontem WalletとAptosのセキュリティについての詳細は、PontemのコアプロトコルコントリビューターのAlejo PintoによるAMAライブストリームをチェックしてください。また、各コンテンツをフォローして、監査プロセスに関する最新情報を入手することもお忘れなく!
Pontem Network
Pontem Networkは、最も高い生産性と安全性を持ち、スケーラブルなブロックチェーンであるAptosの基盤となるdAppsと開発ツールを構築している製品スタジオです。私たちはAptosチームと共に、私たちは世界中の最初の10億人のブロックチェーンユーザーを参加させることのできるエコシステムを構築しています。Pontem Networkの製品は、Move言語とMove VMを使用しています。これらは、元々Metaが支援するブロックチェーンであるDiemのために開発された技術です。
Pontem Networkの将来的なトークンリリースに向けたホワイトリスト登録はこちらから!また、アンバサダーも募集中です。
Webサイト| Twitter | Telegram | Discord | ドキュメント| GitHub