ビットコインキャッシュの脆弱性、コア開発者が発見し修正を促していた
Bitcoin Coreの開発者であるCory Fields氏は、ビットコインキャッシュのソフトウェア「Bitcoin-ABC」に重大な脆弱性「SIGHASH_BUG」を発見し、Bitcoin -ABCの開発者に通知していたことを明かした。
SIGHASH_BUGが悪用されればネットワーク内でノード同士が同期できなくなるなどの通信障害が起きる危険性もあったが、すでにその脆弱性は修正されている。
Fields氏が発見した脆弱性は、取引の署名を検証するためのコードに存在していた。SIGHASH_BUGは、Bitcoin-ABC 0.17.0バージョンとそれ以前のバージョンのソフトウェアとの互換性をなくし、意図しないブロックチェーンの分岐を起こす危険性があった。
ハッカーがこの脆弱性を利用し取引を行った場合、Bitcoin-ABC 0.17.0では取引が承認されるのに対し、他のBitcoin-ABCバージョンでは取引が承認されない事象が起こっていた可能性があった。Bitcoin-ABC 0.17.0は他のバージョンとは異なる取引台帳を保有し、2つの異なるブロックチェーンが存在することもあり得た。
仮想通貨のソフトウェアのアップデートは、入念なコード・レビューやコード・テストなどを経て実装される。しかしBitcoin-ABC 0.17.0は、コードレビューの期間が1週間しか設けられておらず、レビューを行った開発者も2人のみと少数だった。ソフトウェアのアップデート・プロセスに不備があったことが、脆弱性が発見されなかった主な要因の一つだ。
SIGHASH_BUGのような脆弱性は、Bitcoin-ABCの機能に大きな影響を与え、ビットコインキャッシュの価格にも強い関連性をもっていることから、公共の場で情報を明かすことはできない。脆弱性を利用しネットワークへの攻撃を試みるハッカーがいるかもしれないからだ。
脆弱性を発見したFields氏は、開発者に重要な情報を通知する際に利用されるResponsible Disclosureと呼ばれる制度を利用しようとしたが、Bitcoin-ABCにはResponsible Disclosure制度が用意されていなかった。
そこでFields氏は、Githubの捨てアカウントを作り匿名で直接連絡を取ることを決め、Bitcoin-ABCの開発に携わるdeadalnix氏、schancel氏、jasonbcox氏へ脆弱性の存在を知らせた。Fields氏が脆弱性の報告を行った4月26日の約2週間後、Bitcoin-ABCは脆弱性を修正したBitcoin-ABC 0.17.1をリリースしている。
Bitcoin-ABCの脆弱性を発見してから報告するまでの経緯をFields氏は、以下のように語っている。
「ハッカーがBitcoin-ABCを攻撃した場合、脆弱性の存在を知っていた私が犯人であると疑われる危険性があった。そのため脆弱性の存在は匿名で知らせる必要があった。自身を危険に晒してまでBitcoin-ABCの脆弱性を報告する義務は私にはなかったが、Bitocin Coreに同様の脆弱性を発見した開発者がいた時のことを考え、どのような行動をとって欲しいかを想像した。そのためビットコインキャッシュのセキュリティを守るため、できる限り秘密裏に報告する形をとった」
ビットコインキャッシュのSIGHASH_BUGの脆弱性は、 Fields氏によって安全に取り除かれることになった。ビットコインやビットコインキャッシュのようなオープンソースのプロジェクトは、一度ソフトウェアが実装されてしまうと修正することが難しい。ユーザーにアップデートを強要することができないからだ。
アップデートを行うにはコード・レビューやコード・テストを慎重に行わなければならない。オープンソースの仮想通貨は、開発者達による自発的な注力によってセキュリティが守られている。
Responsible disclosure in the era of cryptocurrencies
引用元: ビットコインニュース
「ビットコイン」カテゴリーの関連記事