0x1 事件背景
Cashio是一个去中心化的稳定币平台,完全由计息的Saber美元流动性提供者代币支持。允许用户做两件事:一是通过存入相应价值的稳定对 LP 代币作为抵押品,打印与美元挂钩的稳定币 – $CASH;二是燃烧$CASH 以赎回基础 LP 代币。
Cashio 提供了一种无需信任、去中心化的稳定币,由于通过 Sunny、Sabre 和 COW 上的 Tribeca Protocol Gauges 战略性地针对 CASH LP 农场的奖励代币激励措施,提高了 CASH LP 对的收益。
Cashio 应用程序提供了一个简单的界面来增加稳定币对的收益:
-
将稳定的货币流动性存入 Sabre 以换取 LP 代币。
-
将 LP 代币存入 Cashio 以打印 $CASH
-
将 $CASH 与其他稳定币存入 Sabre 以获得 $CASH LP 代币
-
在 Sunny 和 Quarry 中使用 $CASH LP 代币来种植有竞争力的 APY参与治理以进一步提高 $CASH 的采用率
零时科技区块链安全情报平台监控到消息,北京时间2022年3月23日,Cashio 称遭到黑客攻击,合约存在铸造故障,声明用户不要铸造任何资金,并督促用户提取池中的资产,零时科技安全团队及时对此安全事件进行分析。
0x2 攻击者信息
零时科技安全团队通过初步追踪分析,此次攻击发生在 Solana 链,主要攻击信息如下:
-
攻击者钱包地址
https://solscan.io/account/6D7fgzpPZXtDB6Zqg3xRwfbohzerbytB2U5pFchnVuzw
-
攻击者创建的合约地址
https://solscan.io/account/26rFraKwk3gurdLLzR2aU5Z2sGA4jJ4Nnr7QDECu5BAK 主合约
https://solscan.io/token/GoSK6XvdKquQwVYokYz8sKhFgkJAYwjq4i8ttjeukBmp 合约1
https://solscan.io/token/GCnK63zpqfGwpmikGBWRSMJLGLW8dsW97N4VAXKaUSSC 合约2
-
攻击交易
https://solscan.io/tx/4fgL8D6QXKH1q3Gt9GPzeRDpTgq4cE5hxf1hNDUWrJVUe4qDJ1xmUZE7KJWDANT99jD8UvwNeBb1imvujz3Pz2K5
-
漏洞合约
https://github.com/cashioapp/cashio/tree/a51c3c59d544a5763b64abb4a8d82c49b0abd6d0/programs/brrr
0x3 攻击分析
先来看一下攻击者获利的一笔交易操作:
总体来看攻击者首先进行了初步关联账号操作,随后在攻击交易4fg…2K5中进行了mint铸币操作,在获取CASH代币后,进行了兑换操作。
分解铸币和兑换两步操作
铸币流程:
通过攻击者合约1的交易可以看出,攻击者通过攻击合约1铸造2,000,000,000资金,随后将该资金转移至攻击者合约2作为质押获取相应LP Token。
攻击者合约2交易中,攻击者首先通过攻击合约2质押并铸造2,000,000,000 LP Token资金,将该资金质押在Cashio合约并获取CASH代币,这里是攻击者成功的主要因素,由于Cashio合约未对LP Token合法性进行判断,导致伪造的LP Token质押可铸币成功,如下为铸币细节:
兑换流程:
攻击者将两笔986,253,434.95 枚CASH资金分别兑换为8,646,022.04 枚UST和17,041,006.5 枚USDC,并获取了26,340,965.68 枚LP Token 。
至此,攻击者利用Cashio合约输入LP Token地址的合理性判断缺陷,利用多合约转换得到的LP Token进行质押,成功铸造2,000,000,000 枚CASH代币,获利超过5000万美元。
0x4 漏洞细节
通过分析攻击流程,发现攻击者使用了虚假的 Token 合约但铸币成功,这里对官方项目源码进行分析,主要针对铸币相关联功能模块 cashio brrr 进行分析。
这里是主要的铸币函数。红框1中主要是通过 cross-program invocation (CPI) 将Token转入至合约账户,为了铸造新的 CASH ,所以必须存入一些抵押品;红框2中主要是在红框1存入成功后铸造新的 CASH ;
进一步分析后发现主要进行的数据校验函数如下:
以上源码可以发现并没有对 arrow account 的 mint 字段进行校验,导致其他一系列的校验都做了无用功,因为没有可信的来源。攻击者多次使用创建关联帐户,直到最后构造出一个虚假的 crate_collateral_tokens 账户,从而绕过验证,直接铸币,从而导致此次风险的发生。
0x5 总结
通过此次攻击事件来看,出现安全风险的是Cashio 合约逻辑中,由于未对用户质押的LP Token做严格判断,导致攻击者传入构造的LP Token可以成功质押并获取等量的CASH代币。
0x6 安全建议
对于以上安全问题,零时科技安全团队给出以下建议:
-
建议项目上线前对所属合约风险进行严格审查;
-
建议对质押铸币等主要功能的敏感操作进行严格判断,避免出现限制缺陷导致发生安全风险。
?扫描关注零时科技服务号?
?区块链安全威胁情报实时掌握?
出品 | 零时科技安全团队
·END·
关注
往期内容回顾
区块链安全100问 | 第四篇:保护数字钱包安全,防止资产被盗
区块链安全100问 | 第五篇:黑客通过这些方法盗取数字资产,看看你是否中招?
零时科技 | 被盗6.1亿美金,Poly Network 被攻击复盘分析
原文始发于微信公众号(零时科技):Cashio 攻击事件分析|零时科技