DKP 黑客分析——不正确的代币对比率计算
概述:
2023 年 2 月 8 日,针对 DKP 协议的闪电贷攻击导致该协议的用户损失了 8 万美元,因为 execute() 函数取决于 USDT-DKP 对中两种代币的余额比率。
智能合约黑客概述:
解码智能合约漏洞:
- 攻击从向漏洞利用合约传输 259,390 BSC-USD 代币的闪贷开始。
- 然后,攻击者调用他的合约的
pancakeCall()
方法,并将 BSC-USD 代币从他的合约转移到 exchange() 函数。
- 然后攻击者使用该
exchange()
方法将 100 BSC-USD 转换为 17,029 DKP 代币,随后将其传输到漏洞利用合约。
- 攻击者发起了一项新交易
swapExactTokensForTokensSupportingFeeOnTransferTokens
,将 DKP 代币兑换回他们的 USDT 对手方,并从中获利颇丰。
缓解措施和最佳实践:
- 通过诸如 Chain Links 之类的预言机和对这些提要参数的输入验证,可以在更大程度上减轻价格操纵尝试,以防止数据过时。
- 使用加权时间算法,而不是严重依赖令牌算法。
- 定期检查欺诈存款的情况并防止套利。
通过Github 获取更多区块链学习资料!