ビットコインの4回目の半減が完了し、この分散型システムは15年間正常に稼働してきましたが、2018年に開示されたBitcoin Coreのクライアント側の脆弱性はビットコインシステムの安定性を直接脅かすものであり、ビットコイン最大の脆弱性の1つと呼べるものであり、本日は開示された2018年9月20日についてご紹介いたしますクライアントサイドの二重花の脆弱性、CVE-2018-17144.
ビットコインコアとは?
サトシ・ナカモトによって始められたビットコインコアは、「正統派」のビットコインクライアントと考えられており、ブロックチェーン上でこれまでに行われたすべてのトランザクションを検証し、資金を送金する機能を備え、現在最も利用されています。
CVE-2018-17144とは?
ビットコイン・コア・リリースのバージョン0.14~0.16.2には、プログラムのクラッシュや二重開花問題につながる極めて深刻な脆弱性があり、これは単一の比率トランザクションに複数回エクスポート可能な入力が含まれていることを意味し、無制限にインクリメンタル発行が行われ、ビットコインの合計2100万ビットコインのコンセンサスを破壊することになります。ビットコインの総数2100万枚は、後にPublic VulnerabilitiesによってCVE-2018-17144として記録された。
なぜこの脆弱性があるのか?
それは2016年にさかのぼり、そう脆弱性が発見されたのは2018年ですが、その下地は2016年にある開発者がビットコインコアにマージを提案したときに作られました
トランザクションチェックにおける重複入力チェックを削除することで、約600マイクロ秒を節約することを望んでおり、レビュアーはその後このマージを通過させ、その時点で爆弾が仕掛けられた。
バージョン0.14.xでは、この脆弱性は正式にクライアントコードでオンライン化され、その時点でこの脆弱性をフルに活用すると、ブロードキャストを受信したクライアントはクラッシュし、チェーン上のデータには影響を与えず、他のクライアントは攻撃を開始したノードのブロードキャストを破棄することができ、この攻撃をトリガーするには、攻撃者は以下を行う必要があります。この攻撃を発動するためには、攻撃者はブロックを発見する必要がありますが、これは非常にコストがかかり、一部のクライアントをクラッシュさせるだけで、攻撃者に収益をもたらしません。
開発者がUTXOデータベースの構造を最適化したのは、2017年9月にリリースされたバージョン0.15までで、付随して、重複入力があった場合でもクライアントが操作を継続できるようになり、この脆弱性の二重花の可能性が開かれました。
この脆弱性はどのようにして発見されたのでしょうか?
バージョン0.15のリリース後、2018年9月17日まで1年間、誰もこの脆弱性を発見することができませんでした。p style="text-align: left;">重複入力をチェックする - このチェックは遅いのでCheckBlockではスキップすることに注意
awemanyは何かがおかしいと感じ、重複入力をテストするためにregtestモードを使いました。Wham! assert(), Aborted.
What!strong>
彼はこれが悪用され、インフレやチェーン分裂につながる危険性を認識し、
BitcoinABCはブロックを処理する際に重複入力をチェックしない。
これは危険です。
これは危険である。なぜなら、ブロックは重複したトランザクションで生成される可能性があるからである;
/u/awemany
その後、彼はすぐにビットコインに脆弱性と修正を報告しました。パッチをBitcoin CoreとBitcoin ABC(BCH開発チーム)に送った。
彼は回顧録の中で、1000億ドル(現在は1兆2000億ドル)の価値がある通貨に大きな影響を与える可能性のある数百万ドルの脆弱性を見つけたことに、提出後に安堵したと書いています。しかし、彼はそうせず、脆弱性を報告することを選んだ。
同日21時58分、ビットコインABCは脆弱性を修正するパッチをリリースし、幅広いノードにアップグレードを促すこのメッセージを送り、ほとんどのノードがアップグレードした後に脆弱性を完全に公開した。
しかし、影響はビットコインとBCHだけでなく、この脆弱性の影響を受けたビットコインコアのトレントのさまざまなフォークにも及び、脆弱性はビットコインコアチームによってマージされたため、誰もがビットコインコアチームを非難しました。
600マイクロ秒の変化のため、誤って、チェーンの二重開花の脆弱性が1年間潜んでいるにつながった、この脆弱性が一度悪用された場合、順番にハードフォークにつながる可能性があり、ビットコインの価格はまだ今のこの価格の価格を持つことができますか?それはまた、当時のイーサのハードフォークと同じで、別のETCを誕生させることになりませんか
。