Back to Blog

カシオアプリのセキュリティインシデント再訪

Code Auditing
May 16, 2022

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

概要

このインシデントは、Saber LP Arrowsを担保として$CASHトークンの鋳造と燃焼を処理するように設計されたBrrrプログラムのバグが原因でした。具体的には、ユーザーはArrow LPトークンを預け入れることで$CASHを印刷(つまり鋳造)できます。Arrow LPトークンが基盤となるトークンとしてSaber LPトークンを受け取ることに注意してください。$CASHを鋳造できるprint_cash命令は、BankアカウントやCollateralアカウントを含むアカウントのリストを受け取ります。これらは、$CASHの鋳造に使用されることを許可された担保(つまりArrow LPトークン)を記録および追跡するために使用されます。設計上、これら2つのアカウントは管理者によってのみ初期化および承認される必要があります。しかし、プログラムはBankアカウントの有効性をチェックしません。その結果、攻撃者は一連の偽のアカウント(Bankアカウントを含む)を作成し、print_cash命令にフィードして、ほとんど無料で$CASHを印刷することができます(唯一のコストはトランザクション手数料です)。

詳細

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

属性common(75行目)は、プログラム内のBrrrCommon型の構造体です。BrrrCommonでは、bankアカウントとcollateralアカウントは管理者によって初期化および承認されます。crate_tokenは、$CASHトークンのアカウントであり、crate_mintの公開鍵(107行目)、管理者ロールの公開鍵など、$CASHに関する情報を格納します。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は実際の(true)アドレスである必要があります。言い換えれば、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世界のためのセキュリティとユーザビリティの向上に専念しており、その大規模な採用を促進しています。この目的のため、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
Drift Protocol Incident: Multisig Governance Compromise via Durable Nonce Exploitation
Security Insights

Drift Protocol Incident: Multisig Governance Compromise via Durable Nonce Exploitation

On April 1, 2026 (UTC), Drift Protocol on Solana suffered a $285.3M loss after an attacker exploited Solana's durable nonce mechanism to delay the execution of phished multisig approvals, ultimately transferring administrative control of the protocol's 2-of-5 Squads governance with zero timelock. With full admin privileges, the attacker created a malicious collateral market (CVT), inflated its oracle price, relaxed withdrawal protections, and drained USDC, JLP, SOL, cbBTC, and other assets through 31 rapid withdrawals in approximately 12 minutes. This incident highlights how durable nonce-based delayed execution can decouple signer intent from on-chain execution, bypassing the temporal assumptions that multisig security implicitly relies on.

Weekly Web3 Security Incident Roundup | Mar 23 – Mar 29, 2026
Security Insights

Weekly Web3 Security Incident Roundup | Mar 23 – Mar 29, 2026

This BlockSec weekly security report covers eight DeFi attack incidents detected between March 23 and March 29, 2026, across Ethereum and BNB Chain, with total estimated losses of approximately $1.53M. Incidents include a $679K flawed burn mechanism exploit on the BCE token, a $512K spot-price manipulation attack on Cyrus Finance's PancakeSwap V3 liquidity withdrawal, a $133.5K flash-loan-driven referral reward manipulation on a TUR staking contract, and multiple integer overflow, reentrancy, and accounting error vulnerabilities in DeFi protocols. The report provides detailed vulnerability analysis and attack transaction breakdowns for each incident.

Newsletter -  March 2026
Security Insights

Newsletter - March 2026

In March 2026, the DeFi ecosystem experienced three major security incidents. Resolv Protocol lost ~$80M due to compromised privileged infrastructure keys, BitcoinReserveOffering suffered ~$2.7M from a double-minting logic flaw, and Venus Protocol incurred ~$2.15M following a donation attack combined with market manipulation.

Best Security Auditor for Web3

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

BlockSec Audit