Back to Blog

CashioAppセキュリティインシデントの再検証

Code Auditing
May 16, 2022
4 min read

2022年3月23日16:20:08 UTC+8に開始されたCashioAppは、約5200万ドルの損失で担保トークンアカウントを枯渇させるために悪用されました。このハックは、攻撃者がデポジットなしで200億ドルの$CASHトークンをミントできる、入力アカウントのチェックが不十分だったために可能になりました。以下に技術的な詳細を示します。

要約

このインシデントは、Saber LP Arrowsを担保として$CASHトークンのミントとバーンを処理するように設計されたBrrrプログラムのバグに起因していました。具体的には、ユーザーはArrow LPトークンをデポジットすることで$CASH(つまりCASHのミント)を印刷できました。ArrowLPトークンは、基盤となるトークンとして[SaberLPトークン](https://app.saber.so/swap)を受け取ることに注意してください。CASHのミント)を印刷できました。Arrow LPトークンは、基盤となるトークンとして[Saber LPトークン](https://app.saber.so/swap)を受け取ることに注意してください。`CASHをミントできるprint_cash命令は、BankアカウントとCollateralアカウントを含むアカウントのリストを受け取ります。これらは、CASHのミントに使用できる担保(つまりArrowLPトークン)を記録および追跡するために使用されます。設計上、これらの2つのアカウントは管理者によってのみ初期化および承認されるべきです。しかし、プログラムはBankアカウントの有効性をチェックしませんでした。その結果、攻撃者は一連の偽のアカウント(Bankアカウントを含む)を作成してprintcash命令に供給し、ほとんど無料でCASH`のミントに使用できる担保(つまり`Arrow` LPトークン)を記録および追跡するために使用されます。設計上、これらの2つのアカウントは管理者によってのみ初期化および承認されるべきです。しかし、プログラムは`Bank`アカウントの有効性をチェックしませんでした。その結果、攻撃者は一連の偽のアカウント(`Bank`アカウントを含む)を作成して`print_cash`命令に供給し、ほとんど無料で`CASH`を印刷することができました(唯一のコストはトランザクション手数料でした)。

詳細

まず、以下のprint_cash命令で使用されるアカウントから分析を開始します。

BrrrCommonプログラムのcommon属性(75行目)は、BrrrCommon型の構造体です。BrrrCommonでは、bankアカウントとcollateralアカウントは管理者によって初期化および承認されます。crate_token$CASHトークンのアカウントであり、crate_mintの公開鍵(107行目)、管理者ロールの公開鍵などが含まれます。crate_collateral_tokensは、ユーザーから転送された担保トークンを保持するボルトアカウントです。担保はArrow LPトークンであるため、これはSaberのLPトークンを受け取るので、ユーザーはsaber_swapの関連アカウントを入力する必要があります。BrrrCommon構造体の最後の2つの属性は、命令で使用されるターゲットプログラムのプログラムIDです。PrintCash構造体の最後の4つの属性は、ユーザーのシステムアカウント(トランザクションの署名者でもある)、ユーザーの担保アカウント、ミントされた$CASHを受け取るユーザーの$CASHトークンアカウント、および$CASHをミントする権限を持つアカウントの公開鍵であることに注意してください。

攻撃トランザクション

上記のアカウントの機能性を理解した後、攻撃トランザクションの分析を開始します:0x4fgL…z2K5。この攻撃は攻撃者アドレス(0x6D7fにあります)から開始され、PrintCash命令の入力アカウントのリストは以下のとおりです。

Account #10x5aha)はBankアカウントに対応します。これは、CashioAppの公式ウェブサイト(0xEm1P)で提供されているアドレスとは異なることに注意しました。これは、Bankアカウントの検証が不十分であることを意味します!

検証

コード内のBrrrCommon構造体の検証を詳しく見て、バイパスがどのように機能するかを理解しましょう。

入力Bankアカウントに対する唯一のチェックは、入力されたCollateralアカウントがBankアカウントに関連付けられていることを確認することです(12行目)。しかし、偽のCollateralアカウントを提供することでも簡単にバイパスできます。さらに、実際の担保資産の支払いを避けるために、攻撃者は偽のsaber_swapアカウントも提供しました。攻撃者は価値のない担保資産をデポジットして価値のある$CASHトークンを印刷することを目的としているため、攻撃者によって提供されたcrate_tokencrate_mintは真のアドレスである必要があります。言い換えれば、Bankアカウントのチェックが不十分だったため、攻撃者は一連の偽のアカウントを作成して、価値のない担保で$CASHを印刷することができました。

修正

修正は、assert_keys_eq!(self.bank.crate_mint, self.crate_mint)ステートメントを追加することです。このステートメントは、Bankアカウントのcrate_mint$CASHの正しいcrate_mintであることを保証します。しかし、どのようにBankアカウントが有効であることを保証するのでしょうか? bankmanプログラムのNewBank構造体と、crate_tokenプログラムのNewCrate構造体を見て答えを見つけましょう。

実際、Bankアカウントは、シードにcrate_tokenのアドレスを含むPDAです。一方、crate_tokenは、シードにcrate_mintのアドレスを含むPDAでもあります。これにより、入力されたcrate_mintが有効であれば、Bankアカウントが有効であることが保証されます。正しいcrate_mintがないと、攻撃者は$CASHをミントできず、攻撃を開始できません。

BlockSecについて

BlockSecは、2021年に世界的に著名なセキュリティ専門家グループによって設立された先駆的なブロックチェーンセキュリティ企業です。同社は、Web3の普及を促進するために、新興のWeb3の世界のセキュリティとユーザビリティを強化することに専念しています。この目的のために、BlockSecはスマートコントラクトおよびEVMチェーンのセキュリティ監査サービス、セキュリティ開発および脅威のプロアクティブなブロックのためのPhalconプラットフォーム、資金追跡および調査のためのMetaSleuthプラットフォーム、そしてWeb3ビルダーが仮想通貨の世界を効率的にサーフィンするためのMetaSuites拡張機能を提供しています。

現在までに、同社はMetaMask、Uniswap Foundation、Compound、Forta、PancakeSwapなど300社以上の著名なクライアントにサービスを提供しており、Matrix Partners、Vitalbridge Capital、Fenbushi Capitalなどの著名な投資家から2回の資金調達で数千万米ドルを受け取っています。

公式ウェブサイト:https://blocksec.com/

公式Twitterアカウント:https://twitter.com/BlockSecTeam

Sign up for the latest updates
HarmonyのクロスシャードONEミント + 約4700万ドルの鍵漏洩による損失 | BlockSec
Security Insights

HarmonyのクロスシャードONEミント + 約4700万ドルの鍵漏洩による損失 | BlockSec

2026年8月10日〜16日の週、注目すべきセキュリティ事件5件を紹介、損失総額は約4700万ドル。詳細分析はHarmony Layer-1の連鎖実装欠陥に注目。Harmonyでは、クロスシャードのレシート再生により、未署名のMerkleProofのShardIDとBlockNumから支出マーカーを導出し、ONEが不正発行された。約3.01兆ONEが偽造されたが、名目価値は市場総額を大幅に超え、実現・確定損失ではないため総額から除外。約4700万ドルは秘密鍵漏洩(Unknown Whale Wallet約2500万ドル、Kite約1400万ドル、Coinsbuy約790万ドル)とFoxのロジック欠陥(約11.7万ドル)による。

約160万ドルの損失:MokeトークンとLpdFiへの攻撃 | BlockSec週次レポート
Security Insights

約160万ドルの損失:MokeトークンとLpdFiへの攻撃 | BlockSec週次レポート

2026年8月3〜9日の週、BNBチェーンで2件の重大なセキュリティインシデントが発生し、いずれも価格操作により総損失は約160万ドルに上った。LpdFi事件(約69.7万ドル)では、注文評価と利息償還の両方に同じ操作可能なPancakeSwapペアのリザーブが使用され、攻撃者がポジションの元本を水増しし過大な利息を請求した。Mokeトークン(約90.6万ドル)では、操作可能なスポット価格とLP配当の重複計上を組み合わせ、MOKEを水増し請求してBNB配当を複数回取得した。

COLDCARDの事件:ウォレットの「ランダム」シードがランダムではなかった時
Security Insights

COLDCARDの事件:ウォレットの「ランダム」シードがランダムではなかった時

COLDCARDファームウェアのビルド・統合バグにより、Bitcoin種生成がソフトウェアRNGフォールバックに誘導され、脆弱な乱数によりウォレットの秘密鍵がオフラインで復元可能となった。欠陥は種自体にあるためファームウェア更新では修正不可。2026年8月7日までに確認された被害は1,405 BTC(約91億円)、非公式推定では最大2,055 BTCに上る。

Best Security Auditor for Web3

Validate design, code, and business logic before launch. Aligned with the highest industry security standards.

BlockSec Audit
CashioAppセキュリティインシデントの再検証