前言
北京时间2022年3月31日,知道创宇区块链安全实验室?监测到借贷平台Ola_finance遭到重入攻击,黑客窃取216964.18USDC、507216.68BUSD、200000.00fUSD、55045WETH、2625WBTC和1240,000.00FUSE,约467万美元。
分析
其中一起攻击事件如下图所示,该次攻击事件的问题点在于Ola.finance和ERC677代币的不兼容,这些代币的内置回调函数被攻击者利用进行重入攻击以耗尽借贷池。
所有攻击事件如下:
20WBTC100WETH被盗:https://explorer.fuse.io/tx/0xe800f55fe6c81baba1151245ebc43692735d4019107f1f96eeb9f05648c79938/token-transfers
100WETH被盗:https://explorer.fuse.io/tx/0xb8ef2744647027047e383b6cdd660a950b4f6c6bbbc96378ef1e359b4369ffc1/token-transfers
Solana社区成员提议创建可将Ed25519密钥对转换为Curve25519密钥对的加密标准:4月10日消息,Solana社区成员Valentin发起一项提案,建议创建一个将Ed25519密钥对转换为为Diffie Hellman密钥交换协议设计的Curve25519密钥对的标准,这将支持非对称加密,而不必生成单独的密钥来执行这种操作。
Valentin解释称,随着Solana生态系统的发展,对于保护敏感数据(如帐户状态或IPFS和Arveawe等分布式文件系统上的文件),对Solana密钥对加密标准的需求变得越来越重要。虽然Ed25519密钥对对签名消息有效,但它们不能用于非对称加密,而非对称加密对于用户隐私和数据保护至关重要。再次,提出这个建议是为了就如何派生Solana密钥对以兼容Diffie Hellman密钥交换或其他类型的加密机制兼容达成一致。一旦就此主题达成一致,钱包就可以开始实施加密功能,作为钱包标准的一部分。
Valentin还提到,作为从常规Solana密钥对派生Curve25519密钥对来执行加密的替代方案,Jordan Sexton建议可以从任何钱包(包括硬件钱包)的签名消息中派生密钥对来派生加密密钥。这种方法的一个问题可能是,一旦两个dApp请求使用相同种子的签名,密码就可能被破解。需要某种在每次加密时都必须不同的一次性随机数,这很难实现。[2023/4/10 13:54:02]
100WETH被盗:https://explorer.fuse.io/tx/0xff4fa726d0967bda03124fb71d58f0aa32d8132029804cdcf0c517761f4acd74/token-transfers
Helium:迁移至Solana后Helium钱包将立即支持原生sub DAO代币赎回:金色财经报道,去中心化无线通信网络Helium官方发文称Binance.US宣布计划在Solana迁移之前,于2023年3月21日下架HNT/USD和HNT/USDT交易对,尽管Helium基金会对Binance.US决定在迁移之前采取这一行动感到失望,但我们理解他们的立场。
Helium表示迁移后Helium钱包应用将立即支持原生subDAO代币赎回(如HIP70中所述)以及SolanaDeFi平台内的其他集成,同时为HNT解锁更多去中心化交易协议。(Medium)[2023/3/14 13:02:38]
100WETH被盗:https://explorer.fuse.io/tx/0xf06a9b830dc2577e62016df45ee6f824d9112d32d3f66f4e1e31639d15a3812d/token-transfers
100WETH被盗:https://explorer.fuse.io/tx/0xb535823c71bf753e6468e40ce009f00ab473e716900417719377a0c50892816f/token-transfers
基于零知识的隐私协议 Elusiv 已在 Solana 上线主网:3月9日消息,基于零知识且合规的隐私协议 Elusiv 已在 Solana 上线主网,允许用户发送隐私交易。此外,Elusiv 与 Solana Pay 兼容,并支持 SOL 和 SPL 代币。基本合规性功能包括所有权证明和创建查看密钥的能力,使用户可以根据需要控制他们共享的交易信息。
据悉,Elusiv 旨在为用户和商家提供隐私保护,同时通过低交易合规解决方案保持安全。此外,Elusiv 可使标准交易隐私化,同时允许用户选择要公开的交易。Elusiv 于 2022 年 11 月完成 350 万美元融资,Big Brain Holdings、Jump Crypto、Solana Ventures 等参投。[2023/3/9 12:52:17]
52.094WETH被盗:https://explorer.fuse.io/tx/0xf1ac951de9eda1be73fd99adf9cca902b0ff28515ec3061b487e52cf352f5b6a/token-transfers
Solana市值排名升至第10,SOL 24小时涨15.59%:金色财经报道,CoinMarketCap 数据显示,SOL 市值回升至 9,214,716,840 美元,SOL 现报价 24.84 美元,24 小时涨幅达 15.59%。行情波动较大,请做好风险控制。[2023/1/21 11:24:24]
6.246WBTC被盗:https://explorer.fuse.io/tx/0x719ec16e785463adf78e8ebf32286f837f7546e4301d9bce620da08af435bb3a/token-transfers
216964.176USDC被盗:https://explorer.fuse.io/tx/0x0df8dce11993a2efff59a416aa967b64b9ebe0ab66f996cfdb41a463b952dd86/token-transfers
507216.676BUSD被盗:https://explorer.fuse.io/tx/0x1b3e06b6b310886dfd90a5df8ddbaf515750eda7126cf5f69874e92761b1dc90/token-transfers
Stepn:不会在Solana以及BNBChain之间建立跨链桥:金色财经消息,对于Ronin跨链桥被攻击事件,Web3链游Stepn表示,在四月份的Solana和BNBChain整合中,将不会建立跨链桥梁,两个生态保持独立。[2022/3/30 14:25:45]
200000fUSD被盗:https://explorer.fuse.io/tx/0x17883e8a1bcfc85b80f00f8faa730f2da17b1d9fe48c1922c05e51a1a9e01a2c/token-transfers
1240000FUSE被盗:https://explorer.fuse.io/tx/0x8223170a722eba6d4583845f377ba5f353e8e589d0d16b6a4fb0a2feaad94a8c/internal-transactions
基础信息
攻击合约:
Contract1:0x632942c9BeF1a1127353E1b99e817651e2390CFF
Contract2:0x9E5b7da68e2aE8aB1835428E6E0c83a7153f6112
攻击者地址:0x371D7C9e4464576D45f11b27Cf88578983D63d75
攻击tx:0x1b3e06b6b310886dfd90a5df8ddbaf515750eda7126cf5f69874e92761b1dc90
漏洞合约:0x139Eb08579eec664d461f0B754c1F8B569044611
流程
攻击者攻击的流程如下:
1.攻击者将550.446WETH从攻击合约0x6392转到另一个攻击合约0x9E5b。
2.攻击者存入550.446WETH到cETH合约0x139Eb08579eec664d461f0B754c1F8B569044611获取铸币27284.948oWETH。
3.由于有了27284.948oWETH,攻击者可以从cBUSD合约0xBaAFD1F5e3846C67465FCbb536a52D5d8f484Abc中借出507216.676BUSD。
4.攻击者在BUSD转账到攻击合约0x9E5b期间调用回调函数,将27284.948oWETH转给攻击合约0x6329,借到507216.676BUSD后也转给攻击合约0x6329。
5.攻击合约0x6329赎回27284.948oWETH获得550.446WETH。
细节
该攻击事件主要问题发生在上面流程的第三步和第四步。
由于ERC677代币中存在transferAndCall函数,所以可以进行外部调用。
16487976226614.jpg "/>在BUSD从oBUSD借出转账到攻击合约0x9E5b期间,在攻击合约0x9E5b中调用一个回调函数,将oWETH从攻击合约0x9E5b转到攻击合约0x6329中,借出BUSD后也转给攻击合约0x6329。
通过代码我们可以看出虽然Erc20Delegator合约的?函数有防止重入修饰器?的限制,但这个修饰器只能防止外部调用重入攻击自身合约,并不能够防止外部调用重入其他合约。
最后由于攻击合约0x6329没有进行借贷,所以它可以将oWETH赎回WETH。攻击者最终得到了用作抵押来借用BUSD代币的WETH和他们借来的BUSD代币。
后续处理
Ola.finance官方发表声明称:
我们将发布一份关于所有借贷网络中列出的所有代币的详细报告,确认此攻击无法在其他借贷网络上复制。为此,我们将调查每个代币的「转移」逻辑,以确保没有使用有问题的代币标准。此外,每个借贷网络创建者都将被提供在其借贷网络上快速暂停代币铸造和借贷的能力。稍后,我们将发布一个补丁,允许Compound分叉安全地列出符合ERC677/ERC777标准的代币。在此之前,Fuse上的借贷网络的借贷将暂时禁用;借入资产的用户不会累积利息,并鼓励他们此时不要偿还贷款。一旦此补丁经过彻底测试和审核,Voltage上的全部借贷功能将恢复。在接下来的几天里,我们将发布正式的补偿计划,详细说明向受影响用户分配的资金。这将伴随更多文章,概述我们将更深入地采取的「下一步」。我们感谢我们的合作伙伴支持分析这次攻击并帮助我们迅速解决问题。
总结
Ola.finance是基于Compound合约改写的,而Compound合约和ERC677/ERC777的代币之间不兼容,使得这些代币的内置回调函数被攻击者利用,用以重入来耗尽借贷池。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。