Beanstalk Farms攻击事件分析 | 零时科技

区块链安全 3年前 (2022) admin
658 0 0
]Beanstalk Farms攻击事件分析 | 零时科技


0x1 事件背景

零时科技区块链安全情报平台监控到消息,北京时间2022年4月17日,Beanstalk Farms遭到黑客攻击,损失超过4.5亿人民币,零时科技安全团队及时对此安全事件进行分析。

Beanstalk 简介

Beanstalk 是一种基于以太坊的新型去中心化信用稳定币协议。Beanstalk 使用信用而不是抵押品来创建去中心化的、流动的、区块链原生资产,该资产相对于非区块链原生资产的价值是稳定的。

Beanstalk的去中心化的治理机制

Beanstalk 使用 Silo(即 Beanstalk 去中心化自治组织)来创建强大的去中心化治理机制。

任何 Bean 所有者都可以通过将其资产存放在 Silo 中以接收种子和 Stalk 来从被动参与 Beanstalk 治理中获得收益。

Stalk 持有者可以提交 Beanstalk 改进提案并对其进行投票,并收集 Bean 供应增加的一部分。

Bean:ETH Uniswap 流动性池中深度和一致的流动性提高了稳定性。USD BEAN:ETH Uniswap 流动性池的 LP 提供者也可以将他们的 LP 代币存入 Silo 以赚取种子和茎。

LP 代币存款收到的每个 Bean 存放的种子数量是 Bean 存款的两倍。


0x2 攻击者信息

零时科技安全团队通过初步追踪分析,此次攻击发生在Ethereum 链,主要攻击信息如下

  • 攻击者钱包地址

0x1c5dcdd006ea78a7e4783f9e6021c32935a10fb4

  • 攻击者创建的合约地址

0x79224bc0bf70ec34f0ef56ed8251619499a59def

0x728ad672409da288ca5b9aa85d1a55b803ba97d7

0xe5ecf73603d98a0128f05ed30506ac7a663dbb69

0x259a2795624b8a17bc7eb312a94504ad0f615d1e

  • 攻击交易

0xcd314668aaa9bbfebaf1a0bd2b6553d01dd58899c508d4729fa7311dc5d33ad7

  • GovernanceFacet合约

0xf480ee81a54e21be47aa02d0f9e29985bc7667c4


0x3 攻击分析

攻击交易之前

对攻击者合约地址所发生的交易进行分析发现在主要攻击交易 0xcd3146  发生的前一天,攻击者通过Uniswap 去中心化交易所将 73 eth 兑换成了BEAN ,随后将BEAN 资金存入Beanstalk 合约(为了获取提案权)

Beanstalk Farms攻击事件分析 | 零时科技

随后创建了 0x259a2795624b8a17bc7eb312a94504ad0f615d1e 合约,这里定义为提案合约

并且接下来攻击者连续2次调用了 0x956afd68方法,也就是提案方法

propose((address,uint8,bytes4[])[],address,bytes,uint8)

,并且使用了刚刚创建的合约( 0x259a279 )以及一个恶意提案合约( 0xe5ecf73603d98a0128f05ed30506ac7a663dbb69 )作为参数

Beanstalk Farms攻击事件分析 | 零时科技

通过对该项目分析,得知该提案如果通过,将立即执行提案合约中指定的内容

继续对交易进行分析,发现在攻击交易发生的同一时间,攻击者通过 0x677660ce4 交易创建了提案合约 ( 0xe5ecf73603d98a0128f05ed30506ac7a663dbb69 )

Beanstalk Farms攻击事件分析 | 零时科技

继续对主要的攻击交易 0xcd314668aaa9bbfebaf1a0bd2b6553d01dd58899c508d4729fa7311dc5d33ad7 进行分析

攻击交易详情

  • 攻击者闪电贷借款

攻击者通过闪电贷分别从Aave、Uniswap V2、SushiSwap 中获取了大额资金作为后续攻击的准备工作,从下图可知,攻击者共计闪电贷金额:350,000,000 枚 DAI,500,000,000 枚 USDC ,150,000,000 枚 USDT ,32,100,950 枚 BEAN  和 11,643,065 枚 LUSD 。

Beanstalk Farms攻击事件分析 | 零时科技

  • 攻击者转换闪电贷资金

攻击者将上述资金中DAI,USDC,USDT资金在 Curve.fi: DAI/USDC/USDT Pool 中兑换为 979,691,328 枚 3Crv 流动性代币,又用 15,000,000 枚 3Crv 兑换了 15,251,318 枚 LUSD

Beanstalk Farms攻击事件分析 | 零时科技

接下来攻击者将 964,691,3283Crv 代币兑换为 795,425,740BEAN3CRV-f 用于投票,将 32,100,950BEAN26,894,383LUSD 添加至流动性得到 58,924,887BEANLUSD-f 流动性代币

Beanstalk Farms攻击事件分析 | 零时科技

  • 攻击者对恶意提案投票并提款

攻击者将兑换到的 BEAN3CRV-f 和 BEANLUSD-f 来对提案进行投票,导致提案通过。从而 Beanstalk: Beanstalk Protocol 合约向攻击合约转入了大量Token代币。

Beanstalk Farms攻击事件分析 | 零时科技

  • 攻击者转换资金并归还闪电贷

攻击者将获取的所有的 BEAN3CRV-f 兑换为 1,007,734,729 枚 3Crv,将所有的 BEANLUSD-f 兑换为 28,149,504 枚 LUSD。

Beanstalk Farms攻击事件分析 | 零时科技

攻击者归还 SushiSwap 和 Uniswap V2 中的闪电贷

Beanstalk Farms攻击事件分析 | 零时科技

攻击者将 16,471,404 枚 LUSD 兑换为 16,184,690 枚 3Crv。随后又将 511,959,710 枚 3Crv 兑换为 522,487,380 枚 USDC,358,371,797 枚 3Crv 兑换为 365,758,059 枚 DAI,153,587,913 枚 3Crv 兑换为 156,732,232 枚 USDT

Beanstalk Farms攻击事件分析 | 零时科技

攻击者归还 Aave 闪电贷借款

Beanstalk Farms攻击事件分析 | 零时科技

  • 攻击者转移获利资金

攻击者销毁 UNI-V2 LP 后得到了 10,883 枚 WETH 以及 32,511,085 枚 BEAN

Beanstalk Farms攻击事件分析 | 零时科技

攻击者给乌克兰加密货币捐赠 250,000 枚 USDC,价值约 25万 美元。

Beanstalk Farms攻击事件分析 | 零时科技

攻击者将获利的加密货币兑换为 13,947 枚 WETH 并且转移至攻击者合约,最终攻击者共获取了 24820 枚 WETH ,价值约 7208万 美元。

Beanstalk Farms攻击事件分析 | 零时科技


0x4 漏洞细节

通过分析攻击流程,发现攻击者明显进行了投票治理的关键操作后获利成功,这里直接分析治理合约GovernanceFacet。

Beanstalk Farms攻击事件分析 | 零时科技

攻击获利交易前夕,攻击者通过GovernanceFacet合约propose方法发起提案,生成该提案id,并且这里判断了攻击者是否有发起提案的资格和提案数量判断条件,由于攻击者通过之前操作质押了资金,所以这里条件满足,可正常发起提案。

继续来看攻击者如何满足提案通过的投票条件:

Beanstalk Farms攻击事件分析 | 零时科技

合约中正常是通过vote方法来投票提案,这里调用了recordVote方法来记录选票,选票由balanceOfRoots(account)方法计算,也就是用户的资金地址,而攻击者通过闪电贷资金兑换得到了可投票的Token,所以这里攻击者可利用大量投票权优势使自己的提案通过。

但是为什么攻击者投完票就可以直接转走资金,难道合约没有提案时间限制?

继续来看GovernanceFacet 合约的另一个方法,emergencyCommit紧急提交提案。

Beanstalk Farms攻击事件分析 | 零时科技

通过合约代码可以明确,getGovernanceEmergencyPeriod()方法返回时间为1天期限,也就是说emergencyCommit方法判断中,只要提案时间大于一天,则该方法可成功调用,由于攻击者已通过闪电贷资金投票恶意提案,所以这里emergencyCommit可成功执行并铸币。


0x5 总结

通过此次攻击事件来看,出现安全风险的是在链上治理相关功能的合约逻辑中,由于用户投票数是根据用户所持有余额来判断,并且未对可投票资金添加时间锁,导致攻击者利用发起恶意提案,并且利用闪电贷获取大量资金进行投票,导致最终恶意提案生效,官方项目合约的资金被转移。


0x6 安全建议

  • 项目方和社区应高度关注所有提案,如果出现恶意提案,建议在提案投票期间应及时禁止其接受投票以及执行;

  • 建议对链上治理相关重要功能,提案发布,提案执行都添加时间锁,如出现恶意提案也可以进行缓冲;避免使用账户的当前资金余额来统计投票数量,避免重复投票以及通过闪电贷借款投票;

  • 建议项目上线前对所属合约风险进行严格审查。


?扫描关注零时科技服务号?

?区块链安全威胁情报实时掌握?

Beanstalk Farms攻击事件分析 | 零时科技


出品 零时科技安全团队

·END·

关注

往期内容回顾

区块链安全100问 | 第一篇:区块链安全是什么

区块链安全100问 | 第二篇:初识加密数字资产及安全

区块链安全100问 | 第三篇:数字钱包面临的安全风险

区块链安全100问 | 第四篇:保护数字钱包安全,防止资产被盗

区块链安全100问 | 第五篇:黑客通过这些方法盗取数字资产,看看你是否中招?

零时科技 | Agave Finance攻击事件分析

Hundred Finance攻击事件分析 | 零时科技

零时科技 | 被盗6.1亿美金,Poly Network 被攻击复盘分析

喜讯|零时科技完成天使轮800万元融资,持续深化区块链生态安全布局

Popsicle攻击事件复盘分析 | 零时科技

黑客大揭秘!扫码转账即可控制你的数字钱包

原文始发于微信公众号(零时科技):Beanstalk Farms攻击事件分析 | 零时科技

版权声明:admin 发表于 2022年4月18日 下午11:37。
转载请注明:Beanstalk Farms攻击事件分析 | 零时科技 | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...