项目方遇见“打桩机”?被攻击约40次损失170万美元!Paraluni安全事件分析_PARA:PARAGON

2022年3月13日,成都链安链必应-区块链安全态势感知平台舆情监测显示,Paraluni合约遭受攻击,损失约170万美元,成都链安技术团队对此事件进行了相关分析。

#1总述

我们以第一笔攻击交易0xd0b4a1d4964cec578516bd3a2fcb6d46cadefe1fea5a2f18eec4c0a496e696f9为例:

地址列表

攻击地址:

0x94bC1d555E63eEA23fE7FDbf937ef3f9aC5fcF8F

攻击合约:

0x4770b5cb9d51EcB7AD5B14f0d4F2cEe8e5563645

安全团队:MTDAO项目方的未开源合约遭受闪电贷攻击,损失近50万美元:金色财经报道,据Beosin EagleEye Web3安全预警与监控平台检测显示,MTDAO项目方的未开源合约0xFaC064847aB0Bb7ac9F30a1397BebcEdD4879841遭受闪电贷攻击,受影响的代币为MT和ULM。攻击交易为0xb1db9743efbc306d9ba7b5b892e5b5d7cc2319d85ba6569fed01892bb49ea499,共获利487,042.615 BUSD。攻击者通过未开源合约中的0xd672c6ce和0x70d68294函数,调用了MT与ULM代币合约中的sendtransfer函数获利(因为同为项目方部署,未开源合约0xFaC06484具有minter权限)。

Beosin安全团队分析发现攻击者共获利1930BNB,其中1030BNB发送到0xb2e83f01D52612CF78e94F396623dFcc608B0f86地址后全部转移到龙卷风地址,其余的swap为其他代币转移到其它地址。用户和项目方请尽快移除流动性,防止攻击合约有提币和兑换接口。[2022/10/17 17:29:32]

ParaProxy:

律师:虚拟币项目方、交易平台和矿场等或将出现新一轮的“出海潮”:5月24日消息,对于金融委会议要求打击比特币挖矿和交易行为,北京尚光律师事务所刑事部主任丁飞鹏表示,这必将对虚拟币行业生态产生深刻影响。其一,以挖矿为名的代币发行融资,可能被全面叫停,涉嫌非法集资、非法发行证券或非法发售代币票券等犯罪的线索可能会被移送司法机关;其二,虚拟币交易平台的合约交易,恐怕无法继续运行,甚至不排除有被进一步追责的可能;其三,国内挖矿被全面禁止后,矿机商等将面临转型或内销转出口的压力,部分模式币的矿机商,可能面临倒闭或用户维权的风险。另外,虚拟币项目方、交易平台和矿场等或将出现新一轮的“出海潮”。(证券日报)[2021/5/24 22:36:12]

0x633Fa755a83B015cCcDc451F82C57EA0Bd32b4B4

慢雾余弦:SushiSwap仿盘项目KIMCHI项目方权限过大可任意铸币:9月2日消息,慢雾创始人余弦发微博分析,SushiSwap仿盘项目KIMCHI(泡菜)项目方确实拥有任意铸币的权限,只是如果项目方要任意铸币,至少需要等待2天时间。对接泡菜的平台可以观测泡菜厨师的devaddr地址是否变更为泡菜厨师的当前owner地址。[2020/9/2]

ParaImpl:

0xA386F30853A7EB7E6A25eC8389337a5C6973421D(MasterChef)

UGT:

0xbc5db89CE5AB8035A71c6Cd1cd0F0721aD28B508

UBT

动态 | paydex项目方对燃料机制再升级:据官方消息,为有效促进商业对接再融合,paydex项目方对燃料机制再升级,用户和投资者通过持有Paydex获得燃料,实现交易所手续费的冲抵和折扣。使得Paydex可以在明确的交易场景中释放价值。基于此的商业支付,成本更低,商家可节省很多中间费用,这也是paydex商业生态的重要一步。[2020/2/19]

0xcA2ca459Ec6E4F58AD88AEb7285D2e41747b9134

1.向CakeSwap(0x7EFaEf62)中通过闪电贷借贷224BSC-USD,224BUSD

2.把第1步借到的代币向Para-LP(0x3fD4FbD7)中添加流动性,并将获得的222枚流动性代币的接收地址指定为UBT(0xcA2ca459)地址,这一步是为了后续的重入做准备。

3%以太坊被各类项目方掌握:人们普遍认为持有很多加密货币的人有能力通过单一的销售订单来影响市场。然而,市场影响力最大的并非他们,而是拥有价值数十亿美元以太坊的区块链项目方。据估计,超过3%的以太坊被掌握在这些项目方手中,当这些项目以太坊流出时,对市场的影响效果将是惊人的。[2018/3/20]

图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合约来进行重入攻击的防范。

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

水星链

[0:31ms0-1:714ms