由于Vyper重入锁漏洞,多个项目已经损失超过5900万美元,您的资金是否还安全?

由于Vyper重入锁漏洞,多个项目已损失5900万美元以上,您的资金安全吗?

多个项目遭受攻击:Vyper编程语言的漏洞

2023年7月30日晚,多个项目迎来至暗时刻。

据Beosin旗下Beosin EagleEye安全风险监控、预警与阻断平台监测显示,NFT借贷协议JPEG’d项目遭遇攻击。在Beosin安全团队正在分析之时,又有几个项目接连受损。7月30日22:51左右,msETH-ETH池子被黑客突袭。紧接着,7月30日23:35左右,alETH-ETH池子被同样的攻击方式破解。之后,DeFi项目Alchemix和Metronome项目归属的流动性池子相继遭遇攻击。然而,这些项目为何多次遭受同一攻击方式?

根据7月31日凌晨以太坊编程语言Vyper发推表示,Vyper 0.2.15、0.2.16和0.3.0版本存在重入锁漏洞,再加上原生ETH在转账时可以调callback函数,导致上述与ETH组的lp池子可以被重入攻击。Curve官方推特随后表示,由于重入锁出现故障,许多使用Vyper 0.2.15的稳定币池(alETH/msETH/pETH)遭到攻击,但其他池子是安全的。

Beosin安全团队对遭受攻击项目进行了分析。以下为本次黑客攻击事件涉及的相关交易、攻击者地址和被攻击合约的列表:

攻击交易 攻击者地址 被攻击合约
0xc93eb238ff42632525e990119d3edc7775299a70b56e54d83ec4f53736400964 0xC0ffeEBABE5D496B2DDE509f9 0xc897b98272AA23714464Ea2A0Bd5180f1B8C0025
0xb676d789bb8b66a08105c844a49c2bcffb400e5c1cfabd4bc30cca4bff3c9801 0xdce5d6b41c32f578f875efffc0d422c57a75d7d8 0xC4C319E2D4d66CcA4464C0c2B32c9Bd23ebe784e
0xa84aa065ce61dbb1eb50ab6ae67fc31a9da50dd2c74eefd561661bfce2f1620c 0x6Ec21d1868743a44318c3C259a6d4953F9978538 0x9848482da3Ee3076165ce6497eDA906E66bB85C5
0x2e7dc8b2fb7e25fd00ed9565dcc0ad4546363171d5e00f196d48103983ae477c 0xb752DeF3a1fDEd45d6c4b9F4A8F18E645b41b324 0x8301AE4fc9c624d1D396cbDAa1ed877821D7C511

本次攻击主要源于Vyper 0.2.15版本的防重入锁失效。攻击者在调用相关流动性池子的remove_liquidity函数移除流动性时,通过重入add_liquidity函数添加流动性。由于余额更新在重入进add_liquidity函数之前,导致价格计算出现错误。值得注意的是,remove_liquidity函数和add_liquidity函数已经使用了防重入锁防止重入。然而,防重入锁在此次攻击中并未生效。进一步阅读Vyper代码,发现当重入锁的名称第二次出现时,storage_slot原有数量会加1。换句话说,第一次获取锁的slot为0,但再次有函数使用锁后slot变为1,此时重入锁已经失效。

关于资金统计,截至目前,本次攻击事件已损失超过5900万美元。Beosin KYT监测到c0ffeebabe.eth地址已归还2879个ETH,仍有被盗资金存放在多个攻击者地址上。

对于后续影响,币安创始人赵长鹏CZ发推称,CEX喂价拯救了DeFi,币安用户不受影响。币安团队已检查Vyper可重入漏洞,并只使用0.3.7或以上版本。他们强调代码库、应用程序和操作系统的更新至关重要。Curve也表示,由于版本0.2.15-0.3.0中的Vyper编译器存在问题,CRV/ETH、alETH/ETH、msETH/ETH、pETH/ETH遭到黑客攻击。此外,Arbitrum Tricrypto池也可能受到影响。然而,审计人员和Vyper开发人员暂时还未找到可攻击漏洞,请退出使用。

这次事件造成的影响依然没有结束,这些池子中有资金的用户需要更加警惕。针对本次事件,Beosin安全团队建议相关项目方进行自查,当前使用Vyper 0.2.15、0.2.16和0.3.0版本的重入锁都存在失效问题。此外,项目上线后,强烈建议项目方继续关注第三方组件/依赖库的漏洞披露信息,以及时规避安全风险。