全3359文字

暗号資産(仮想通貨)サービス「Poly Network(ポリ・ネットワーク)」が2021年8月10日にサイバー攻撃に遭い、約6億ドル(約660億円)が流出した。「分散型金融」を巡る窃盗劇には仮想通貨の新たなリスクが浮かび上がる。

 Poly Network(ポリ・ネットワーク、以下Poly)は自らのサービスを、ブロックチェーン上で取引が自動処理される「DeFi(Decentralized Finance:分散型金融、ディーファイ)」であると主張する。DeFiの特徴は利用者間の取引が「無人化」されるため、取引を仲介する証券会社など既存の金融事業者が不要なことだが、裏を返すと資金が消失するなどのリスクはサービスの利用者がそのまま負うことになる。

Poly NetworkのWebサイト。分散型金融(DeFi)を称している(出所:Poly Network)
Poly NetworkのWebサイト。分散型金融(DeFi)を称している(出所:Poly Network)
[画像のクリックで拡大表示]

 DeFiは設計や運用次第では手数料を極めて安くでき、全ての利用者が平等にサービスを利用できるというメリットがある。貧困層にも開かれた「次世代の金融サービス」に近い位置にあるとの評価もある。DeFiに預け入れられた資金は2021年8月14日に840億ドル(約9兆円)を超えたとされる。

送金プログラムに脆弱性

 事件の舞台となったPolyは、DeFiで使われる複数のブロックチェーン間で仮想通貨やトークンを送金できるサービスである。DeFiは「スマートコントラクト」と呼ぶ取引プログラムの自動実行機能を備えたブロックチェーン上で運営されている。

 最も多く使われているブロックチェーンが「Ethereum(イーサリアム)」で、PolyはEthereumに加えて最近開発された「Binance Smart Chain(バイナンス・スマート・チェーン、BSC)」と「Polygon(ポリゴン)」にも対応。この3つの間で仮想通貨などを送金(価値を移動)できるようにしている。

 具体的な流れは次の通りだ。例えばEthereumからBSCに送金するには、別の利用者による逆方向の送金、すなわちBSCからEthereumへの送金が必要となる。このため送金したい人は移動させる資金をいったんブロックチェーン上に預け入れる。

 逆方向の送金取引がほぼ同時に発生したら、2つの取引をマッチングさせて自動的に取引を開始するメッセージをやりとりする。メッセージを通じて預け入れた資金の所有者情報を互いに書き換えれば、互いに資金を移動できたことになる。

 Polyでの送金取引は、安全性を高めるため「BookKeeper」による承認を踏む必要もある。BookKeeperとは、取引の正当性を確認して取引メッセージに署名するネットワーク参加者であり、Polyでは4人が必要だ。

 BookKeeperはリストで管理されており、人でなく自動的に取引を承認するプログラムにも実装できる。ただし安全性を高めるため、4つがそれぞれ別に管理されている必要がある。

 しかしこの一連のスマートコントラクトに脆弱性があった。自らもDeFi関連サービスに携わり、ブロックチェーン推進協会(BCCC)のNFT・ゲーム部会長として事件の経緯を調べたJPYCの岡部典孝社長によれば、誰がBookKeeperかは開発・運営元であるPolyのスタッフが決めてリストに登録しているもようだという。

 このリストは可変で更新する手順もプログラムに実装していたが、そのコードに脆弱性があった。攻撃者は脆弱性を利用し、リストを書き換えて自らをBookKeeperにし、本来は4人必要な署名を1人で実行できるようにもした。その後、Poly内にあったほぼ全ての資金である約6億ドルを自分の口座に送金したとみられる。岡部社長は「かなり発見が難しい脆弱性で、攻撃者は腕が立つ技術者だろう」とする。