カルダノのDEX「スプラッシュ」で約242万ADA流出、スマートコントラクトの脆弱性が原因

SplashのADA/OADAプールで約242万ADA流出

カルダノ(Cardano)上の分散型取引所(DEX)「スプラッシュ(Splash)」におけるADA/OADAの「ステーブルスワップ(StableSwap)」プールで9月13日に発生したセキュリティインシデントについて、9月14日にスプラッシュ公式Xより報告された。

スプラッシュのレポートでは、単一の攻撃者が2件のトランザクションを実行し、243万4,648.42 ADAと198万8,222.18 OADAをプールから引き出したと報告されている。なお、攻撃者自身が入金した9,870 ADAを除くと、ADAの流出額は242万4,778.42 ADAとなる。

スプラッシュが今回被害を受けたのは、カルダノのネイティブトークン「ADA」と、オプティム・ファイナンス(Optim Finance)が提供するADAに1対1で裏付けられた合成資産「OADA」を交換するための流動性プールだ。ステーブルスワップは価格が近い資産同士の交換に適した仕組みで、同プールに預けられたADAとOADAが交換時の流動性として利用される。

スプラッシュの調査では、原因はADA/OADAプールの取引が条件を満たしているか検証するスマートコントラクト「バリデータ」にあった。ここでいうバリデータは、カルダノのネットワーク運営に参加するステークプールのバリデータとは異なる。

同プールのバリデータは、実際の資産残高から累積したプロトコル手数料を差し引き、ユーザーの取引に利用できる「取引可能な準備金(tradable reserve)」を算出していた。しかし、バリデータには、この値がプラスであることの確認など、取引を適切に制限する複数のチェックが実装されていなかった。

攻撃者はこれらの不備を悪用し、1件目の取引で、入金した9,870 ADAのほぼ全額をプロトコル手数料として記録させた。続く2件目の取引で、実際のADA残高を手数料の記録額より少なくなるまで引き出した。その結果、取引可能なADA準備金は計算上マイナスとなった。それでも取引の検証を通過できたため、攻撃者はADAとOADAをプールから引き出した。

なおスプラッシュは、実際に展開されていたプログラムをソースコードから再構築し、ブロックチェーン上のものと一致することを確認した。今回悪用されたスワップ処理は事前の監査対象だったものの、監査では手数料の累積処理や取引可能な準備金がマイナスになる問題は指摘されていなかった。

流出ADAの一部はKuCoinとGate.io関連アドレスへ

スプラッシュのオンチェーン追跡によると攻撃者は、プールから引き出したADAやOADAの売却で得たADAなど、合計255万2,176.54 ADAを6つの入金アドレスへ送ったという。

このうち78万6,851.54 ADAは暗号資産取引所クーコイン(KuCoin)、55万ADAはゲート(Gate.io)に関連するアドレス群へ送られたとスプラッシュは分析している。残る121万5,325 ADAについては、カストディサービスに関連するとみられるものの、運営者は確認できていないとのこと。

一方、攻撃者は約199万OADAをDEX「ミンスワップ(Minswap)」のOADA/FLDTプールでFLDTに交換し、受け取ったFLDTを別のプールでADAに交換した。最終的に攻撃者が得たのは約11万5,000ADAにとどまった。9月13日16時20分(UTC)時点では約176万OADAがOADA/FLDTプールに残り、OADAの価格は本来の連動水準を大きく下回っていた。

オプティム・ファイナンスはインシデントを受け、プロトコルを停止してOADAの流動性を引き揚げた。また、OADAなどの流動性を提供しているユーザーに資金を引き出すよう呼びかけるとともに、攻撃者が大量のOADAを保有していることから、新たな流動性を提供しないよう求めた。

スプラッシュは今後も攻撃者に関連するウォレットを追跡し、取引所への資金移動について調査を進める方針だ。また同チームは、攻撃者がチームへ直接資金を返還した場合、報奨金を検討したうえでホワイトハットとして扱い、さらなる追及を行わない方針を示している。

参考:ギットハブ
画像:PIXTA

関連ニュース

関連するキーワード

この記事の著者・インタビューイ

渡邉洋輔

「あたらしい経済」編集部 記者 ブロックチェーンおよびデジタル資産分野を専門とし情報発信を行っている。オンチェーンデータや流動性構造など、市場設計の観点からのリサーチにも取り組んでいる。