XRP Ledgerの決済エンジンにあったバグにより、1回の決済で何もないところから新たなXRPを生み出せてしまいました。このバグは約10年間コードに潜んでおり、修正が公開される前に本番環境へ反映されました。

このエンジンは、買い手が複数のオファーに対して支払う額を、単純な64ビットカウンターで合計していました。大量のXRPを要求する細工されたオファーを数百件用意すると、合計が上限を超えてほぼゼロに戻ります。売り手には全額が支払われ、買い手の支払いはほぼゼロ。それなのに「XRPは生成されていない」という確認にも同じカウンターが使われていたため、何も検知できませんでした。

私たちの計算では、このカウンターの上限は約9.2兆XRPで、1000億XRPの供給量のおよそ92倍です。どのアカウントも総供給量を超えて保有することはできないため、この攻撃には受け取り用アカウントが少なくとも93個必要でした。

Cayden LiaoとVeria AIは9月22日、XRPLのバグ報奨金プログラムを通じて報告しました。xrpld 3.4.1は9月25日にリリースされましたが、ソースコードは公開されていませんでした。その日、デフォルトのUNLバリデーターの80%以上が同バージョンを稼働させていました。トランザクション処理の修正としては初めて、修正条項の投票を経ずに適用されました。RippleXは、公開ネットワークでこのバグが悪用された形跡はないとしています。

コードに潜んだ期間は約10年。修正にかかったのは3日。

$XRP
#XRP #CryptoSecurity
NFA。DYOR。