本次攻击主要原因是 Swaprum 项目方利用了代理合约可切换实现合约的功能,将正常的实现合约切换至存在后门函数的实现合约,从而后门函数盗取了用户抵押的流动性资产。
封面:Arbitrum
2023 年 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。