在可重入攻击中,恶意合约在被攻击合约的第一个函数执行完成前在再次调用合约,这可能导致函数调用与预期行为不一致。
在这篇文章中,我们探讨了Vyper智能合约中重入攻击的机制、案例以及防御方法。重入攻击是一种严重的安全威胁,当合约在发送资金之前未能更新其状态时,攻击者可以通过递归调用提取函数来耗尽合约资金。重入攻击不仅仅在solidity中很常见,在Vyper智能合约中同样应该注意!
本文分析了Damn Vulnerable DeFi V4第5题The Rewarder中的漏洞。该漏洞存在于claimRewards()函数中,由于合约在处理完所有claims后才标记为已领取,攻击者可以通过提交多个相同Merkle proof的claim,多次领取奖励,从而耗尽合约中的token。文章还提供了防止此漏洞的机制。
本文分析了Damn Vulnerable DeFi V4挑战中的Side Entrance漏洞。该漏洞源于合约未能区分“偿还贷款”和“存款”,允许攻击者利用闪电贷,先借出资金并存回,然后在合约账户中获得信用,最后提取所有资金。文章提供了攻击流程以及相应的解决方案,并提出了预防措施,即闪电贷合约应使用transferFrom()函数从用户合约提取资金。
本文分析了Damn Vulnerable DeFi V4挑战中的Truster漏洞。该漏洞存在于flashLoan()函数中,允许通过target.functionCall(data)执行任意函数调用,攻击者可以利用此漏洞,无需借款即可通过调用approve()函数获得授权,转移pool中的所有tokens到攻击者地址,最终成功攻击。
重入攻击代码实现
UTC时间2023年1月15日下午05:43:37,根据Numen的链上监测,Jarvis_Network项目遭到攻击,损失663101个MATIC。
本篇从闪电贷这一最具特色的应用角度出发,分析了以太坊和Move分别如何实现闪电贷,Move怎样规避了闪电贷攻击?