DAI:Pickle Finance被攻击全过程_ROM

2020年11月22日,以太坊DeFi项目PickleFinance遭受攻击,损失约2000万DAI。慢雾安全团队跟进相关事件并进行分析,以下为分析简略过程:

1、项目的Controller合约中的swapExactJarForJar函数允许传入两个任意的jar合约地址进行代币的兑换,其中的_fromJar,_toJar,_fromJarAmount,_toJarMinAmount都是用户可以控制的变量,攻击者利用这个特性,将_fromJar和_toJar都填上自己的地址,_fromJarAmount是攻击者设定的要抽取合约的DAI的数量,约2000万DAI。

zkSync:将在未来几天和几周内重新启动LIBERTAS OMNIBUS NFT的发行:7月17日消息,zkSync 发推称,LIBERTAS OMNIBUS NFT空投对象的资格标准是地址至少与前100多个zkSync NFT收藏中的一个有交互。然后严格根据上述资格标准以编程方式生成所有179,365名收件人。然后按字母顺序对名单进行排序,为批量分发做好准备。由于排序的原因,第一批的地址打分都是以0x0开头。由于是自动选择,179,365份名单对是随机的。但是,zkSync承认使用“随机”一词来描述初始分发批次是不准确的。对于造成的混乱,深表歉意,并感谢指出该问题的社区成员。zkSync将在未来几天和几周内重新启动LIBERTAS OMNIBUS NFT的发行,并在巴黎EthCC上测试IRL铸造。

此前消息,zkSync称NFT空投针对主网的前1万名用户,剩余用户将有资格在EthCC之后获得。[2023/7/17 10:59:05]

2、使用swapExactJarForJar函数进行兑换过程中,合约会通过传入的_fromJar合约和_toJar合约的token()函数获取对应的token是什么,用于指定兑换的资产。而由于_fromJar合约和_toJar合约都是攻击者传入的,导致使用token()函数获取的值也是可控的,这里从_fromJar合约和_toJar合约获取到的token是DAI。

数据:过去16小时Cumberland向交易所存入1400万枚MATIC,总价值约980万美元:金色财经报道,据链上分析是Lookonchain披露数据显示,过去16小时Cumberland向交易所总计存入1400万枚MATIC,包括向币安存入900万枚MATIC,价值约合640万美元;向Coinbase存入500万枚MATIC,价值约合350万美元。不过根据最新价格数据显示,MATIC今日价格已下跌近29%。[2023/6/10 21:27:58]

3.此时发生兑换,Controller合约使用transferFrom函数从_fromJar合约转入一定量的的ptoken,但是由于fromJar合约是攻击者控制的地址,所以这里转入的ptoken是攻击者的假币。同时,因为合约从_fromJar合约中获取的token是DAI,然后合约会判断合约里的资金是否足够用于兑换,如果不够,会从策略池中赎回一定量的代币然后转到Controller合约中。在本次的攻击中,合约中的DAI不足以用于兑换,此时合约会从策略池中提出不足的份额,凑够攻击者设定的2000万DAI。

Upbring使用加密技术帮助德克萨斯州弱势儿童:金色财经报道,总部位于德克萨斯州奥斯汀的非营利组织Upbring表示,它将使用加密货币和区块链技术来帮助孤星州的11,000多名儿童。Upbring提供三项主要服务,教育、安置和寄养。该组织寻求为该地区的贫困儿童提供援助和帮助,并防止他们暴露在危险和不健康的情况下。换句话说,它想让虐待儿童成为过去。在撰写本文时,德克萨斯州有75个地点由Upbring托管。[2022/12/4 21:20:31]

4.兑换继续,Controller合约在从策略池里提出DAI凑够攻击者设定的2000万DAI后,会调用_fromJar的withdraw函数,将攻击者在第三步转入的假ptokenburn掉,然后合约判断当前合约中_toJar合约指定的token的余额是多少,由于_toJar合约指定的token是DAI,Controller合约会判断合约中剩余DAI的数量,此时由于第三步Controller合约已凑齐2000万DAI,所以DAI的余额是2000万。这时Controller合约调用_toJar合约的deposit函数将2000万DAI转入攻击者控制的_toJar合约中。到此,攻击者完成获利。

来源:金色财经

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

区块博客

[0:15ms0-2:725ms