2022年5月19日,据Beosin-Eagle Eye态势感知平台消息,Arbitrum公链上项目Swaprum项目疑是发生Rug Pull,涉及金额约300万美元。
Beosin安全团队第一时间对事件进行了分析,发现了项目方部署的流动性抵押奖励池存在后门,项目方(Swaprum: Deployer)利用了add()后门函数盗取了用户抵押的流动性代币,以达到移除交易池子的流动性获利的目的。
事件相关信息
攻击交易(由于存在大量的攻击交易,这里仅展示部分)
攻击者地址
0xf2744e1fe488748e6a550677670265f664d96627(Swaprum: Deployer)
漏洞合约
0x2b6dec18e8e4def679b2e52e628b14751f2f66bc
(TransparentUpgradeableProxy Contract)
0xcb65D65311838C72e35499Cc4171985c8C47D0FC
(Implementation Contract)
攻击流程
为了方便展示我们以其中两笔交易为例:
https://arbiscan.io/tx/0x36fef881f7e9560db466a343e541072a31a07391bcd0b9bcdb6cfe8ae4616fc0(调用add后门函数盗取流动性代币)
https://arbiscan.io/tx/0xcb64a40d652ff8bfac2e08aa6425ace9c19f0eeb4a6e32f0c425f9f9ea747edf(移除流动性获利)
1. Swaprum项目方(Swaprum: Deployer)通过调用TransparentUpgradeableProxy 合约的add()后门函数盗取用户质押在TransparentUpgradeableProxy 合约的流动性代币。
2.通过将实现合约反编译后,add()函数确实存在后门。该后门函数会将合约中的流动性代币转账给_devadd地址【通过查询_devadd地址,该地址返回为Swaprum项目方地址(Swaprum: Deployer)】。
3.Swaprum项目方(Swaprum: Deployer)利用第一步盗取的流动性代币移除流动性代币从而获取大量的利益。
4.值得注意的是,项目方原本的流动性抵押合约并无漏洞,而是通过升级的方式将正常的流动性抵押奖励合约
(https://arbiscan.io/address/0x99801433f5d7c1360ea978ea18666f7be9b3abf7#code)
替换为了含有后门的流动性抵押奖励合约
(https://arbiscan.io/address/0xcb65d65311838c72e35499cc4171985c8c47d0fc#code)
漏洞分析
本次攻击主要原因是Swaprum项目方利用了代理合约可切换实现合约的功能,将正常的实现合约切换至存在后门函数的实现合约,从而后门函数盗取了用户抵押的流动性资产。
资金追踪
截止发文时,Beosin KYT反洗钱分析平台发现被盗的约1628个ETH(约300万美金)资金已跨链至以太坊上,并且向Tornado Cash存入了1620个ETH。