参考https://github.com/OpenZeppelin/exploit-uniswap
很明显,一年前,ERC777功能导致了对uniswap的重入攻击:“从技术上讲,这两种事件背后的主要逻辑是ERC777与那些DeFi智能合同之间的不兼容性,攻击者可能会滥用这种漏洞来完全劫持正常交易并执行额外的非法操作。”
还有一些关于ERC777在Uniswap引起重大攻击的其他记录,我无法确认是否是这样的情况,如果它一般是合法的,下面是openzeppelin论坛的一些评论:https://blog.openzeppelin.com/exploiting-uniswap-from-reentrancy-to-actual-profit/可能是迄今为止最受信任的来源。
问题是,自从V3合同出来后,这是固定的吗?他们是否使ERC777与新合同兼容?
P.S .我也会在Uniswap的支持下四处询问,如果我得到了答案,我肯定这是一个非常敏感的话题,必须尽快回答
发布于 2021-11-16 11:51:14
我不能保证这个攻击矢量是不可能的,但是我可以保证Uniswap在他们的联合瓦普v2白纸中声明如下
Uniswap v1还假定对transfer()和transferFrom()的调用不能触发对Uniswap对的重入调用。这个假设被某些ERC-20令牌所违背,包括那些支持ERC-777‘S“”钩子“5的令牌。为了完全支持这些令牌,Uniswap v2包含了一个“锁”,它可以直接防止重入到所有公共状态转换函数。这也可以防止闪存交换中用户指定的回调(如2.3节所述)的重入性。
但我强烈建议您为Uniswap编写自己的测试,并在testnet上编写ERC-777令牌,以确保安全。
https://ethereum.stackexchange.com/questions/111480
复制相似问题