前言
北京时间 2022 年 2 月 14 日晚,Titano Finance 遭到攻击,损失 3200 万 TITANO 代币。知道创宇区块链安全实验室 第一时间跟踪本次事件并分析。
分析
基础分析
攻击者地址:0xad9217e427ed9df8a89e582601a8614fd4f74563
攻击者创建合约 MultipleWinnersProxyFactory :0x940151f5bbbcda5b1b482592d816e96f80d6073a
攻击者创建合约 MultipleWinnersBuilder :0x1866207c355d4c6e0b03b4dc0bf9c658f4d13f8a
攻击者创建合约 MultipleWinners :0x49d078d25b08f2731cbf5af8e8cdf1ea3e0a2046
官方合约 StakePrizePool :0x4d7f0a96967dce1e36dd2fbb131625bbd9106442
漏洞分析
此次事件,漏洞关键在于官方 StakePrizePool 合约中的 setPrizeStrategy 方法被攻击者所利用,但该方法只有管理员才有权限进行操作。
随后攻击者将合约中的 _prizeStrategy 地址设置为攻击者创造的合约 MultipleWinners 的地址
获得权限后,攻击者使用 MultipleWinners 合约中的_awardTickets 方法铸造了 3200 万 Ticket Titano 代币到攻击者地址
攻击者获取代币后,将代币进行转换,最终通过 PancakeSwap 将其转换为 BNB ,随后分散资金到各个地址
总 结
本次攻击事件核心原因在于官方 StakePrizePool 合约中的仅管理员调用方法被恶意利用,成因或许是项目方管理地址泄露,也可能是掌握管理员私钥的人监守自盗。
近期,各类合约漏洞安全事件频发,合约审计、风控措施、应急计划等都有必要切实落实。