2022年3月13日,成都链安链必应-区块链安全态势感知平台舆情监测显示,Paraluni合约遭受攻击,损失约170万美元,成都链安技术团队对此事件进行了相关分析。
#1总述
我们以第一笔攻击交易0xd0b4a1d4964cec578516bd3a2fcb6d46cadefe1fea5a2f18eec4c0a496e696f9为例:
地址列表
攻击地址:
0x94bC1d555E63eEA23fE7FDbf937ef3f9aC5fcF8F
攻击合约:
0x4770b5cb9d51EcB7AD5B14f0d4F2cEe8e5563645
ParaProxy:
Aku项目方价值3,400万美元ETH被永久锁定,系合约实现逻辑问题:4月23日消息,NFT项目方Akutar的11,539.5 ETH(约合3,400万美元)被永久锁定在拍卖合约。
Aku采用的是类似荷兰降价拍卖的形式,拍卖结束后会按照结束价格给用户退还超过最低价格的部分,因此这涉及refund以及total bids统计两个方面,而项目方在这两个方面均存在实现逻辑问题。
第一个漏洞,processRefunds() 会被恶意合约阻断,实现DoS攻击,也确有用户使用恶意合约阻断了processRefunds()执行,但该名用户表示只是让项目方确认问题存在,随即设置恶意合约变量,使得processRefunds()顺利执行完,因此该漏洞虽被利用,但已成功解决。
第二个漏洞,也就是真正导致项目方无法提款的关键所在,processRefunds()是按照msg.sender的数量记录在了refundProgress变量,拍卖结束项目方调用claimProjectFunds()取出合约内的ETH时,要求满足refundProgress >= totalBids,而totalBids记录的是NFT的数量,合约最终状态refundProgress数值为3669,totalBids数值为5495,从而导致项目方无法提取合约内的11539.5 ETH。
需要指出的是,在执行processRefunds()之前,参与拍卖的用户可以在三天后通过emergencyWithdraw()将个人投入的ETH取回,但由于processRefunds()的执行,导致用户的拍卖状态由未处理变为refund,从而不能再进行emergencyWithdraw()。[2022/4/23 14:43:41]
0x633Fa755a83B015cCcDc451F82C57EA0Bd32b4B4
分布式加密服务平台Vector DAO正式推出,并对加密项目方开放Season 01申请:由Coinbase前高级产品设计师Jonathan Yan等参与的分布式加密服务平台Vector DAO正式推出,并对加密项目方开放Season 01申请。作为由设计师、品牌专家和创意人员等贡献者组成的分布式协作平台,Vector DAO构建了全新的组织结构,使每一名贡献者都可以通过为加密项目方提供服务而无缝地赚取股权或代币收益。Vector DAO具备三项特色:1. 只接受股权或代币作为对所提供服务的补偿;2. 通过其季节模型(Seasons Model,类似于投资基金)为平台会员提供多元化的项目组合;3. 具备灵活性,全职和兼职的贡献者可以一起工作。[2021/8/12 1:50:20]
ParaImpl:
云虎算力CMO Lorreta:项目方给矿工参与奖励,目前挖矿收益分为三部分:2020年6月22日,由金色财经主办,节点咨询、IPFS100.com承办,星际特工、麦客存储联合主办的“星际漫游指南——IPFS技术与应用研讨论坛”在深圳拉开帷幕。论坛上云虎算力CMO Lorreta,在题为《如何把握IPFS挖矿周期中的新机会》的主题演讲中指出,挖矿的收益分为三个部分:数据存储收益,提供检索服务的收益,区块打包的奖励。早期协议需要更加稳健运行,就需要有更多矿工的参与,这就类似于早期滴滴公司给司机的补贴,是项目方给矿工的一个参与奖。[2020/6/22]
0xA386F30853A7EB7E6A25eC8389337a5C6973421D(MasterChef)
UGT:
0xbc5db89CE5AB8035A71c6Cd1cd0F0721aD28B508
动态 | ICO项目方在过去24小时抛售了1.35万ETH:据trustnodes消息,Santiment数据显示,ICO项目方在过去24小时抛售了1.35万ETH,大约是平时的三倍。在过去的30天里,ICO项目方抛售了19.3万ETH。过去24小时中,最大的一笔交易来自一个名为PolicyPal的项目,已经抛售了6400个ETH(约150万美元),紧随其后的是一个没有人听说过的项目Electrify Asia,抛售数量为1500个ETH(约35万美元)。在过去的七天里,大约有5万个ETH已经进入市场,但没有包括Digix Global项目的7万ETH,Digix项目方曾宣布卖出7万枚ETH换成法币,已将5.4万枚转入交易所钱包。而ICO项目方这种ETH的转移动作约70%是为了进行抛售。[2018/9/7]
UBT
0xcA2ca459Ec6E4F58AD88AEb7285D2e41747b9134
1.向CakeSwap(0x7EFaEf62)中通过闪电贷借贷224BSC-USD,224BUSD
2.把第1步借到的代币向Para-LP(0x3fD4FbD7)中添加流动性,并将获得的222枚流动性代币的接收地址指定为UBT(0xcA2ca459)地址,这一步是为了后续的重入做准备。
图1初始准备
3.攻击合约(0x4770b5cb)调用ParaProxy合约的depositByAddLiquidity函数,添加流动性代币抵押挖矿,此处传入的pid为18,对应的Para-LP(BSC-USD/BUSD)0x3fD4FbD7a83062942b6589A2E9e2436dd8e134D4,但是token0,token1传入的地址为UGT、UBT的地址,数量为1e18。
图2重入攻击
4.此处原本正常的逻辑为:添加流动性,并将流动性代币存入pid为18的流动性抵押池,但是本函数在代码中并未检查添加的流动性token0、token1得到的流动性代币是否与pid对应的流动性代币地址一致,导致了攻击的发生。注意,并不是所有的流动性池抵押都有该风险,由于第2524行代码,pool的ticket需要为零地址才能够通过该检查。
但是攻击者通过控制执行逻辑,实际执行的逻辑为:第2505,2506行将攻击者指定的1枚UGT、1枚UBT代币转入ParaProxy合约。然后在第2535行代码用于添加流动性,并在第2537行检查添加的流动性代币数量。
此时,vars.oldBalance为初始流动性代币数量。攻击者为了通过第2537行的检查,在添加流动性的过程中,进行了重入攻击。由于在添加流动性时调用了攻击者构造的恶意代币的transferFrom函数,攻击者在transferFrom函数中才将流动性通过deposit函数存入ParaProxy合约。这也是第2步时攻击合约将流动性代币接收地址指定为UBT合约的原因所在。
在重入过程中,UBT合约存入了真正的LP代币222枚,并计入ParaProxy的账本中。在重入完成后,ParaProxy合约地址新增了222枚LP代币,ParaProxy合约将其视为攻击合约添加的LP,并计入账本中。至此,UBT合约和攻击合约都新增了222枚LP的存取记录。
图3ParaImpl合约相关代码
重入相关过程如下图所示:
图4攻击流程示意图
5.UBT合约和攻击合约分别调用withdraw函数,从ParaProxy合约提取221枚LP,并归集到攻击合约,由攻击合约将LP移除流动性并获取对应的BSC-USD以及BUSD。
6.归还闪电贷225枚BSC-USD,225枚BUSD,并将获利的221枚BSC-USD、225枚BUSD发送到攻击者地址。整个攻击交易执行完成。
#2总结建议
攻击者一共执行了约40次攻击,共获利约170万美元。截止发稿时,攻击者通过跨链协议将其转到以太坊网络中,并将其中的660枚ETH转入Tornado.Cash,另外5枚ETH转入了0xDd52CE617cAF1b7C8cEaCC111DE2f1c54E20C1b0地址。
本次攻击主要由合约代码中存在逻辑缺陷以及存在资金操作的关键函数未进行防重入导致。建议合约开发者在开发过程中进行完整的测试以及第三方审计,并养成使用Openzeppelin库的ReentrancyGuard合约来进行重入攻击的防范。
前言 新春二月,知道创宇区块链安全实验室拓宽了对区块链安全信息收集总结的信息广度,将专注于典型安全事件的视角,拔升到了对整个区块链安全资讯的审视.
去中心化交易所(DEX)和自动做市商(AMM)最近推出了漩涡池,使协议用户能够访问集中流动性池。不久之后,流行的web3生活方式应用STEPN集成了Orca的池来为它的交易提供动力.
据区块链浏览器TRONSCAN数据,过去二十三周,TRX连续处于通缩状态,通缩量达3.09亿枚TRX.
1.前言 北京时间3月15日晚,知道创宇区块链安全实验室监测到Gnosis链上的借贷类协议HundredFinance与Agave均遭遇了闪电贷袭击.
据官方消息,Multichain已成为波场联合储备的第六位成员和白名单机构,获得铸造波场去中心化算法稳定币USDD的权利.
前言 在我上一篇文章之后,我收到了很多关于DAO的问题。在Twitter上,加入一个DAO,参加会议,等待任务,获得奖励。这个流程看起来很容易。但这真的那么容易吗?让我们来探讨一下.