Back to Blog

重审CashioApp安全事件

Code Auditing
May 16, 2022
4 min read

于2022年3月23日16:20:08 UTC+8开始,CashioApp遭到利用,导致抵押品代币账户被耗尽,损失约5200万美元。此次攻击之所以能够成功,是因为对输入账户的检查不足,使得攻击者能够在没有任何存款的情况下铸造200亿枚$CASH代币。接下来,我们将展示技术细节。

摘要

此次事件是由于Brrr程序中的一个bug造成的,该程序旨在处理以Saber LP Arrows为抵押品的$CASH代币的铸造和销毁。具体来说,用户可以通过存入Arrow LP代币来打印$CASH,即铸造$CASH。请注意,Arrow LP代币接收Saber LP代币作为底层代币。print_cash指令(可用于铸造$CASH)接收一个账户列表,包括Bank账户和Collateral账户。这些账户用于记录和跟踪允许用于铸造$CASH的抵押品(即Arrow LP代币)。根据设计,这两个账户应仅由管理员初始化和授权。然而,该程序未能检查Bank账户的有效性。因此,攻击者可以构造一系列虚假账户(包括Bank账户)输入到print_cash指令中,几乎免费地打印$CASH(唯一成本是交易费用)。

详情

我们从下方print_cash指令使用的账户开始分析。

BrrrCommon结构中的common属性(第75行)是一个结构体。在BrrrCommon中,bank账户和collateral账户由管理员初始化和授权。crate_token$CASH代币的账户,存储关于$CASH的信息,例如crate_mint(第107行)的公钥、管理员角色的公钥等。crate_collateral_tokens是一个金库账户,持有用户转移的抵押品代币。由于抵押品应该是Arrow LP代币,而Arrow LP代币接收Saber的LP代币,因此用户需要输入相关的saber_swap账户。BrrrCommon结构中的最后两个属性是指令中使用的目标程序的程序ID。请注意,PrintCash结构中的最后四个属性是用户的系统账户(也是交易的签名者)、用户的抵押品账户、接收铸造的$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账户是一个PDA,其种子包含crate_token的地址。同时,crate_token也是一个PDA,其种子包含crate_mint的地址。这确保了如果输入的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等知名投资者的两轮融资,总计数千万美元。

官方网站:https://blocksec.com/

官方Twitter账号:https://twitter.com/BlockSecTeam

Sign up for the latest updates
~$15.9M Lost: Trusted Volumes & More | BlockSec Weekly
Security Insights

~$15.9M Lost: Trusted Volumes & More | BlockSec Weekly

This BlockSec bi-weekly security report covers 11 notable attack incidents identified between April 27 and May 10, 2026, across Sui, Ethereum, BNB Chain, Base, Blast, and Berachain, with total estimated losses of approximately $15.9M. Three incidents are analyzed in detail: the highlighted $1.14M Aftermath Finance exploit on Sui, where a signed/unsigned semantic mismatch in the builder-fee validation allowed an attacker to inject a negative fee that was converted into positive collateral during settlement; the $5.87M Trusted Volumes RFQ authorization mismatch on Ethereum; and the $5.7M Wasabi Protocol infrastructure-to-contract-control compromise across multiple EVM chains.

Newsletter - April 2026
Security Insights

Newsletter - April 2026

In April 2026, the DeFi ecosystem experienced three major security incidents. KelpDAO lost ~$290M due to an insecure 1-of-1 DVN bridge configuration exploited via RPC infrastructure compromise, Drift Protocol suffered ~$285M from a multisig governance takeover leveraging Solana's durable nonce mechanism, and Rhea Finance incurred ~$18.4M following a business logic flaw in its margin-trading module that allowed circular swap path manipulatio

~$7.04M Lost: GiddyDefi, Volo Vault & More | BlockSec Weekly
Security Insights

~$7.04M Lost: GiddyDefi, Volo Vault & More | BlockSec Weekly

This BlockSec weekly security report covers eight attack incidents detected between April 20 and April 26, 2026, across Ethereum, Avalanche, Sui, Base, HyperLiquid, and MegaETH, with total estimated losses of approximately $7.04M. The highlighted incident is the $1.3M GiddyDefi exploit, where the attacker did not break any cryptography or use a flash loan but simply replayed an existing on-chain EIP-712 signature with the unsigned `aggregator` and `fromToken` fields swapped out for a malicious contract, demonstrating how partial signature coverage turns any historical signature into a generic permit. Other incidents include a $3.5M Volo Vault operator key compromise on Sui, a $1.5M Purrlend privileged-role takeover, a $413K SingularityFinance oracle misconfiguration, a $142.7K Scallop cross-pool index injection, a $72.35K Kipseli Router decimal mismatch, a $50.7K REVLoans (Juicebox) accounting pollution, and a $64K Custom Rebalancer arbitrary-call exploit.

Best Security Auditor for Web3

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

BlockSec Audit