PANews 2月14日消息,安全機構慢霧科技發布TitanoFinance被黑簡析,2022 年2月14日,BSC鏈上的TitanoFinance 項目遭受攻擊,慢霧安全團隊分析認為:
1. 在2022-02-10 18:48:04 (UTC),攻擊者創建了相關的攻擊合約(0x1866207c355d4c6e0b03b4dc0bf9c658f4d13f8a);
2. 在2022-02-14 4:36:21 (UTC),攻擊者調用第一步中的0x186620 合約中的createMultipleWinnersFromExistingPrizeStrategy 函數創建了惡意的prizeStrategy 合約0x49D078d25b08f2731cBf5AF8e8CDF1eA3E0a2046;
3. 在2022-02-14 4:39:12 (UTC),StakePrizePool 合約(0x4d7f0a96967dce1e36dd2fbb131625bbd9106442) 中,owner (0xc8abdb16fd6040c76dfd9b5186abfdc3b96df4b8) 調用了setPrizeStrategy 函數( 該函數僅owner 可以調用),使得_prizeStrategy 被改成了0x49D078d25b08f2731cBf5AF8e8CDF1eA3E0a2046;
4. 在2022-02-14 4:41:51 (UTC),接著攻擊者調用了所創建的惡意的prizeStrategy 合約(0x49D078) 中的_awardTickets 函數,該函數調用了prizePool 合約中(0x4d7f0a) 的award函數,該函數需要滿足onlyPrizeStrategy 修飾器條件(_msgSender() == address(prizeStrategy)),該函數會給指定的to 地址mint 指定數量的ticket 代幣(Ticket Titano (TickTitano);此時prizePool 合約中的_prizeStrategy 已經在上一步被修改成0x49D078,滿足onlyPrizeStrategy 的條件,於是StakePrizePool 合約給攻擊者mint 了32,000,000 個ticket 代幣;
5. 在2022-02-14 4:43:18 (UTC),StakePrizePool 合約(0x4d7f0a) 中,owner 再次調用了setPrizeStrategy 函數,將_prizeStrategy 改回0x5739f9F8C9Fc9854a5B6f3667a6fB14144DC40A7;
6. 最後攻擊者調用StakePrizePool 合約(0x4d7f0a) 中的withdrawInstantlyFrom 函數將ticket 代幣換成Titano 代幣,然後在pancake 池子中把itano 換成BNB,攻擊者重複了這個過程8 次, 最後共獲利4,828.7 BNB,約1900w 美元。
據慢霧MistTrack 分析,攻擊者最初的獲利地址為0xad9217e427ed9df8a89e582601a8614fd4f74563,目前被黑資金已被攻擊者轉移到其他23 個錢包。此次主要由於owner 角色可以任意設置setPrizeStrategy 函數,導致了池子被設置成惡意的PrizeStrategy 合約造成後續利用。對此,慢霧安全團隊建議,對於敏感的函數操作,建議採用多簽錢包的角色來操作,或者把owner 角色權限移交給社區管理。