UTC时间 2月1日, 安全公司Fairyproof监测到Polygon上BonqDAO借贷协议的价格预言机因存在漏洞被攻击。
TellorFlex是BonqDAO协议的价格预言机。但是TellorFlex的价格提供者staker 的注册机制不完善,导致攻击者仅需质押10个TRB代币,就可以将任意地址注册为价格提供者并且任意修改预言机的价格。
TellorFlex合约:https://polygonscan.com/address/0x8f55d884cad66b79e1a131f6bcb0e66f4fd84d5b
攻击交易: 0x31957ecc43774d19f54d9968e95c69c882468b46860f921668f2c55fadd51b19
预言机价格提供者的注册函数 depositStake(uint256 amount)如下图所示:
然而gonverance的地址却是: 0x7B74cc7d66f4b286A78d5F02a55E36E89c3fa9F0
即msg.sender申请成为价格提供者的地址其实是攻击者部署的合约地址: 0xbaf48429b4d30bdfad488508d3b528033331fe8a
调用0x7B74cc7d66f4b286A78d5F02a55E36E89c3fa9F0的接口 getVoteTallyByAddress()可查看得票数为0。这意味着治理合约没有为 0xbaf48429b4d30bdfad488508d3b528033331fe8a进行过投票。
漏洞出现在TellorFlex没有对治理合约返回的得票数进行验证,从而让恶意的价格提供者地址得票为0时通过了验证,让攻击者操纵价格,将借贷池掏空从而获利。
攻击者在攻击交易中获利超过 170 万美元。
Fairyproof安全建议:
• 开发者应使用chainlink等经过考验的预言机。若开发使用新的预言机方案时,请务必进行安全审计。
• 在外部调用时注意对返回值进行检查。
• 在使用治理合约时,需要对治理投票的阈值进行验证
来源:金色财经