北京时间2023年11月1日,由于redeemUnderlying()函数存在精度损失漏洞,Ethereum链上项目OnyxProtocol遭受攻击,攻击者已获利210万美元。SharkTeam对此事件第一时间进行了技术分析,并总结了安全防范手段,希望后续项目可以引以为戒,共筑区块链行业的安全
北京时间2023年11月1日,由于redeemUnderlying()函数存在精度损失漏洞,Ethereum链上项目Onyx Protocol遭受攻击,攻击者已获利210万美元。
SharkTeam对此事件第一时间进行了技术分析,并总结了安全防范手段,希望后续项目可以引以为戒,共筑区块链行业的安全防线。
#
攻击者地址:
0x43083E943cd4D35F242F7850bE2402126A57D6B5
0x30E4d4e89369cf4D91cB675448Db0B2f126c1caF
0x085bDfF2C522e8637D4154039Db8746bb8642BfF
0x4C9C8661243E9E9a15A35B8873317eb881330c98
攻击合约:
0x526e8e98356194b64eae4c2d443cc8aad367336f
攻击交易:
0xf7c21600452939a81b599017ee24ee0dfd92aaaccd0a55d02819a7658a6ef635
攻击流程:
(1) 攻击者(0x085bDfF2)在攻击之前提议了一个关于在Onyx中建立新的Market:PEPE。
(2)攻击者(0x085bDfF2)通过闪电贷,贷了4,000 枚WETH。随后,利用所贷的WETH兑换成PEPE。
(3)攻击者(0x085bDfF2)通过Create2方式创建了合约(0xf8e15371),将1 枚PEPE代币存入oPEPE池里,铸造了50,000,000,000,000,000,000枚oPEPE 代币。随后,攻击者(0x085bDfF2)redeem了大量的oPEPE,并留有2wei的oPEPE。攻击者(0x085bDfF2)又从其他的Market中借了一些ETH。
(4)攻击者(0x085bDfF2)利用redeemUnderlying()函数中的精度损失漏洞,赎回大量的PEPE,留有1枚oPEPE。然后,攻击者(0x085bDfF2)清算了自己,并且重置了Market的状态。
(5)攻击者(0x085bDfF2)重复上述3和4的方式,归还闪电贷,最终获利约1156枚ETH。
#
在攻击之前,OnyxProtrol 引入了新的 Market-oPEPE。此时的 Market 没有初始流动性。这样,攻击者(0x085bDfF2)就能够在具有可控流动性的 oPEPE 池中实施漏洞攻击。redeemUnderlying()函数在计算相关数值时候存在四舍五入,从而获得巨额利润。
本次攻击事件根本原因是:一是新Market未初始化流动性,造成流动性可控;二是数值计算问题,存在精度损失问题。
#
针对本次攻击事件,开发人员在日常开发中应当采取有以下的缓解措施:
(1)对于部分使用数学计算的函数,需要进行精度损失测试。由于可能存在多个函数相互调用和多次计算,会导致相应的数值损失;
(2)项目上线前,需要通过第三方专业的审计团队进行智能合约审计。
#
SharkTeam的愿景是保护Web3世界的安全。团队由来自世界各地的经验丰富的安全专业人士和高级研究人员组成,精通区块链和智能合约底层理论。提供包括链上大数据分析、链上风险预警、智能合约审计、加密资产追讨等服务,并打造了链上大数据分析和风险预警平台ChainAegis,平台支持无限层级的深度图分析,能有效对抗Web3世界的高级持续性盗窃(Advanced Persistent Theft,APT)风险。已与Web3生态各领域的关键参与者,如Polkadot、Moonbeam、polygon、OKX、Huobi Global、imToken、ChainIDE等建立长期合作关系。
Twitter:<https://twitter.com/sharkteamorg>
Telegram:<https://t.me/sharkteamorg>
Discord:<https://discord.gg/jGH9xXCjDZ>
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!