2024年11月17日,据Beosin Alert监控预警发现FTM链上借贷协议Polter Finance遭受攻击,攻击者通过闪电贷操纵项目合约中代币价格进行获利。Beosin对本次事件第一时间进行了漏洞分析和资金追踪。
详细攻击步骤:
(1) 攻击者部署攻击合约 (0xa21451ac32372c123191b3a4fc01deb69f91533a)
,并使用该合约在UniswapV2 Pair (0xEc7178F4C41f346b2721907F5cF7628E388A7a58) 上执行闪电贷。攻击者借用了几乎所有可用的BOO代币,只留下了1,000,000个BOO代币。
(2) 本次事件被攻击的LendingPool合约(0xd47ae558623638f676c1e38dad71b53054f54273)使用0x6808b5ce79d44e89883c5393b487c4296abb69fe作为预言机,该预言机使用的是近期部署的喂价合约(0x80663edff11e99e8e0b34cb9c3e1ff32e82a80fe)。这种喂价机制是有缺陷的,并且依赖于易被操纵的UniswapV2 Pair的代币储备来进行价格计算。
(3) 这个喂价合约使用可被攻击者用于闪电贷的uniswapV2_pair(0xEc71)合约中的代币储备来计算价格,因此这里存在价格操纵攻击漏洞。
(4) 在闪电贷之后,token1_in_pair的储备下降到只有100万BOO代币,导致其计算后的价格比原来增加了1.373 × 10¹⁸倍。这使得攻击者可以借出远远超过其抵押品价值的资产。
原来的代币价格
闪电贷后错误的价格
(5) 攻击者使用存款功能向LendingPool中存入1个BOO代币。由于价格被操纵,该单个BOO代币的价值被放大了1.373 × 10¹⁸倍。
(6) 攻击者利用操纵后的代币价格来借出大量其它资产。在调用borrow函数,攻击者通过了合约中的价格验证,因为该函数错误地验证了被操纵的BOO代币价格。
被盗资金追踪:
Beosin Trace对被盗资金进行追踪发现:被盗资金被攻击者转换成FTM代币,然后跨链到ETH链,将所有资金都存放在ETH链上。以下是ARB链和ETH链上的资金流动过程示意图。
在经历了一系列跨链代币兑换的损耗后,存放在ETH链总额约为776万USDT。以下是存放被盗资金的地址:
Beosin作为全球最早一批从事形式化验证的区块链安全公司,主打”安全+合规“全生态业务,在全球10多个国家和地区设立了分部,业务涵盖项目上线前的代码安全审计、项目运行时的安全风险监控与阻断、被盗追回、虚拟资产反洗钱(AML)以及符合各地监管要求的合规评估等“一站式”区块链合规产品+安全服务。欢迎点击公众号留言框,与我们联系。