前言
北京时间8月4日上午,知道创宇区块链安全实验室监测到以太坊上的DeFi协议PopsicleFinance遭遇闪电贷袭击,目前只有SorbettoFragola受到影响。实验室第一时间跟踪本次事件并分析。
分析
攻击者信息
攻击tx:
LollipopSwap新流动性池SUSHI-ETH首日年化达到17670%:据官方消息,Defi项目LollipopSwap于9日开放新流动性池,包括DAI-ETH、UMA-ETH、COMP-ETH、LEND-ETH、YFI-ETH、SUSHI-ETH、LINK-ETH和BAND-ETH。流动性挖矿池UMA-ETH年化收益最高一度达到19425%,SUSHI-ETH年化收益最高达到17670%。创始人称,该项目“将证明Defi社群的热情是让社会实验可以继续的根本原因”。[2020/9/10]
0xcd7dae143a4c0223349c16237ce4cd7696b1638d116a72755231ede872ab70fc
Bithumb暂停Popchain上线 二者被质疑存在关联:今日下午,Bithumb发布公告延迟Pop Chain的上线时间,给出理由为“有很多未经证实的虚假事实传播到市场”。据外媒CCN报道,Popchain与Bithumb可能存在一定关联。Popchain源代码的前三名贡献者是Kwuaint Li,Lialvin和Su Mingrui,同时也是Bithumb Cash的三个主要开发人员。今年4月,Bithumb表示可能会重新考虑其ICO计划,而现在,整个项目都停止。投资者称Bithumb暂停其ICO计划,来推进Popchain。在Popchain刚推出时,Bithumb团队称将利用The E&M’s Popcorn TV 和Celeb TV,将Popchain发展成一个成功的基于区块链的内容服务平台。投资者因这两个平台拥有庞大受众群体而投资Popchain。同时,Popchain的91%供应储存在两个钱包中,投资者对可能存在的庞氏局表示担忧。[2018/5/16]
攻击合约:
PopChain将在明天上市Bithumb:PopChain的代币持有者只有20人,其中持有率第一的人持有76%,持有率第二的人持有15%,这二者加起来拥有超过90%的代币。而PopChain截止目前没上线其他交易所,导致现在行业内存在一种敏感气氛,Bithumb也因此失去了一些人的信任。PopChain是以区块链技术为底层驱动的开源公有链。[2018/5/16]
0xdFb6faB7f4bc9512d5620e679E90D1C91C4EAdE6
辅助攻击合约1:
0x576Cf5f8BA98E1643A2c93103881D8356C3550cF
辅助攻击合约2:
PopChain基金会:将于近期公布主要代码并发布POPBOX落地设备:据官方消息,PopChain基金会将于近期在Github上公布主要代码,并发布POPBOX落地设备。据悉,POPBOX是联合韩国当地战略合作伙伴推出的首批落地设备。 PopChain是一个基于区块链技术的数字内容传播平台,拥有PoW和PoSe混合共识机制,利用专属POP域名系统和AI智能算法,结合专门针对韩国市场的CDN设备“POPBOX”以实现数字内容分发。[2018/4/30]
0xd282f740Bb0FF5d9e0A861dF024fcBd3c0bD0dc8
被攻击池信息:
PLP(USDT/WETH):0xc4ff55a4329f84f9Bf0F5619998aB570481EBB48
PLP(USDC/WETH):0xd63b340F6e9CCcF0c997c83C8d036fa53B113546
PLP(WBTC/WETH):0x0A8143EF65b0CE4C2fAD195165ef13772ff6Cca0
PLP(USDT/WETH):0x98d149e227C75D38F623A9aa9F030fB222B3FAa3
PLP(WBTC/USDC):0xB53Dc33Bb39efE6E9dB36d7eF290d6679fAcbEC7
PLP(USDC/WETH):0x6f3F35a268B3af45331471EABF3F9881b601F5aA
PLP(DAI/WETH):0xDD90112eAF865E4E0030000803ebBb4d84F14617
PLP(UNI/WETH):0xE22EACaC57A1ADFa38dCA1100EF17654E91EFd35
攻击流程:
PLP池合约方面调用流程
攻击合约0xdFb6调用PLP池合约的deposit()函数进行质押
将质押获得的shares转移给辅助攻击合约0x576C
通过辅助攻击合约0x576C调用PLP池合约的collectFees()函数
辅助攻击合约0x576C将步骤2获得的所有shares再次转移给下一个辅助攻击合约0xd282
同步骤3,辅助攻击合约0xd282调用PLP池合约的collectFees()函数
辅助攻击合约0xd282将步骤4获得的所有shares转移回攻击合约0xdFb6
攻击合约0xdFb6调用PLP池合约的withdraw()函数进行赎回,完成攻击
辅助攻击合约0x576C和0xd282调用PLP池合约的collectFees()函数提取手续费奖励
细节
攻击者通过AAVE闪电贷借来USDT、ETH、WBTC、USDC、DAI、UNI六种资产依次对PopsicleFinance的SorbettoFragola系列的8个PLP池进行了闪电贷攻击。
漏洞原因在于PLP池合约对手续费奖励的计算上,一方面在计算中直接采用了用户的LP余额值,而LP可被随意转账至另一账户;另一方面,用户的奖励债务并不会随着LP的转账而转移。
于是攻击者在质押后将LP依次转移给两个辅助攻击合约,并在辅助攻击合约调用collectFees()函数时传参0,为了触发updateVault以更新奖励数据,最后再通过collectFees()提取奖励。
总结
此次PopsicleFinance遭遇的闪电贷攻击的本质原因在于对手续费奖励计算的错误设计,未做全面考虑,从而使得攻击者通过多个地址循环利用资金流进行攻击套利。
近期,各类合约漏洞安全事件频发,合约审计、风控措施、应急计划等都有必要切实落实。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。