SWC-126绝缘气体烧烤攻击:为什么不简单地要求一个成功的子呼叫



我正在尝试了解更多关于SWC智能合约弱点分类和测试用例的信息。我一直在理解SWC-126:https://swcregistry.io/docs/SWC-126.特别是,我不理解链接中提出的解决方案,以及它是如何修复攻击向量的?

这个攻击向量不是简单地是https://swcregistry.io/docs/SWC-104?我们可以简单地要求在relayer.sol合同的第26行之后成功呼叫,方法是:

require(success)

以便在剩余气体不足以执行子调用的情况下恢复完整的事务?

此外,我不明白relayer_fixed.sol中提出的解决方案将如何解决我们的问题,因为它只会恢复子呼叫,而relayer合同将继续,而不会评估预先释放的子呼叫?

首先,插入require(成功(;这条线肯定会起作用。

其次,该解决方案实际上是有效的,因为revert((语句只是将整个事务恢复到其初始状态。这样,如果没有足够的天然气来完成交易,而不是仅仅";跳过";它将恢复整个交易。

希望这是有用的:(

相关内容

  • 没有找到相关文章

最新更新