LINEで送る
Pocket

zeppelin-solutions

先月28日、スマートコントラクトのセキュリティ監査を提供するZeppelin Solutionsは、Serpentのコンパイラには重大な脆弱性が含まれていることを突き止め、これを修正したと発表した。Augurチームに情報を提供することで、未然に事故を防止した。

AugurはEthereum上で予測市場を実現するためのプロジェクト。SerpentはEthereum上でコントラクトを作成するための言語であり、AugurのスマートコントラクトはSerpentによって記述されていた。

Zeppelin Solutionsによれば、指摘された脆弱性の一つを悪用することにより、Augurに内蔵されたREPトークンの移転を不能にすることができたという。仮に攻撃されていれば時価総額約200億円のAugurネットワーク全体が停止する危険性があった。今回はセキュリティ監査によって脆弱性を未然に発見し、改善した形だが、今後もスマートコントラクトのセキュリティを巡る問題は業界の大きな課題となるだろう。

SerpentからSolidityへの移行は以下の手順で行われた。

  1. Solidityで新しいコードを記述
  2. 新しいREPトークンコントラクトを監査
  3. 取引所やウォレットの提供者に情報を公開(7月24日、一般公開の25時間前)
  4. 新しいREPトークンコントラクトをEthereumのブロックチェーン上にデプロイ
  5. 脆弱性を用いることにより古いREPトークンを凍結(7月25日)
  6. 凍結されたREPトークンのバランスを新しいREPトークンに移行

また同社は、Serpentが安全性に多くの問題を抱えており、Serpentを使用しているプロジェクトに対し上述の手順を用いたSolidityへの移行を推奨している。

Augurの開発チームによれば、この問題に関してREPホルダーが行うべきことは何もない。チーム内でもSerpentからSolidityに移行すべきか否かを一年にわたって議論してきたが、今回のSerpentに関する監査レポートが発表された後、全会一致でSolidityに移行することが決定された。約4400行で記述されているスマートコントラクトを移行する作業には約6週間かかるが、移行作業はシンプルなものであり、一連のテストを行いながら動作に問題がないか検証される。

コードの脆弱性を悪用した攻撃とそれに伴うトークン盗難の予防の難しさはThe DAO事件によって界隈に広く知らしめられた。

仮想通貨の領域においては、コードやネットワークが金銭的価値と直接的に結びついているため、ネットワークの資産を狙う攻撃を引きつけやすい。しかしその一方で完璧なコードも存在しないため、うまく脆弱性とつきあっていく必要がある。先日もParity Walletに脆弱性が見つかり、33億円相当のETHが盗まれた。Parity WalletはSolidity開発者のGavin Woodsによって作成されていたにもかかわらず、このような事件が起こったことが、セキュリティ問題の難しさを如実の物語っている。

スマートコントラクトが抱えるセキュリティ問題は、それが提供する可能性と同じくらいに大きい。国内でもNRIセキュアテクノロジーズ株式会社による「ブロックチェーン診断」が発表されるなど、国内外で未然にバグを防ぐための努力が各方面で始まっている。

  • ビットコインニュースを毎日お届け!

    BTCNの最新ニュースを毎日お昼ごろお届けします!

  • BTCN公式アカウントをフォロー

    follow us in feedly
シェアする