事件背景

Force DAO 是 DeFi 投资策略的去中心化自治组织,致力于在 DeFi 世界识别 alpha,Force 以 DAO 的方式,致力于通过遵循社区提出的策略,并通过强有力的激励措施,以产生卓越的回报。

零时科技区块链安全情报平台监控到消息,北京时间2021年4月4日,Force DAO社区用户发推文称Force DAO遭到黑客攻击,任意用户可铸币FORCE,攻击者利用此漏洞共铸币数千万枚FORCE代币,零时科技安全团队及时对该安全事件进行复盘分析。

事件分析

通过初步分析,Force DAO遭受攻击的原因如下:

该漏洞主要问题在xFORCE合约代码ForceProfitSharing.sol上,该错误使任何人都可以调用“ deposit ”功能,而无论他们是否持有FORCE令牌,这意味着可以在不锁定任何令牌的情况下从xFORCE合约中铸造xFORCE令牌。

然后,任何人都可以通过调用xFORCE合约中的“ withdraw ”功能将这些xFORCE令牌交换为FORCE代币。

具体代码分析如下:

首先看看xFORCE合约代码ForceProfitSharing.sol中的deposit方法:

在用户进行 deposit 操作时,xFORCE 为用户铸造 xFORCE 代币,并通过 FORCE 代币合约的 transferFrom 函数将用户的 FORCE 代币转入 ForceProfitSharing 合约中,注意这里并没有进行判断是否成功调用force.transferFrom 函数。

接下来跟进,来看看FORCE 代币合约的 transferFrom 方法:

FORCE 代币合约的 transferFrom 函数调用了doTransfer函数,在doTransfer函数中,使用 if-else 逻辑来检查用户的授权额度,当用户的授权额度不足时 transferFrom 函数返回 false,而 ForceProfitSharing 合约的 deposit 方法中并未对其返回值进行检查。

结果导致了xFORCE合约中 deposit 的逻辑正常执行,xFORCE 代币被顺利铸造给用户,接下来用户可以通过xFORCE的 withdraw 函数将这些xFORCE令牌交换为FORCE代币。

xFORCE的 withdraw 函数代币如下:

但由于 force.transferFrom 函数执行失败,用户的 FORCE 代币并未被真正转账给 ForceProfitSharing 合约中,最终造成 FORCE 代币被大量铸造。

通过初步分析,Force DAO遭受攻击的过程如下:

其中一个黑客攻击者的钱包地址:

https://etherscan.io/address/0x9d9c3695c54601929cd72d34a52935268eb9b00b

首先,用户调用xForce合约的 deposit 方法,传入较大amout值,此时用户成功获得大量xFORCE令牌,但是amout值较大,导致force.transferFrom返回false。

合约地址:

https://etherscan.io/address/0xe7f445b93eb9cdabfe76541cc43ff8de930a58e6

交易hash:

https://etherscan.io/tx/0xdf05020d5d3c3a975627ce29f24b4eb8ccb8807f9f9c9aa05e644c61fe5f0141

然后,用户再调用xForce合约的 withdraw 方法,由于上面已经获得大量xFORCE令牌,这里传入等值的xFORCE令牌数量,然后获得对应的FORCE代币。

交易hash:

https://etherscan.io/tx/0x3b60252b36d2de2930a64f360926bfcba44d12ff44719de3c6dd486b9dafe118

最后,此攻击者将FORCE代币转移至1inch V3,然后获得ETH。

交易hash:

https://etherscan.io/tx/0x03c84e3f7d9c117260a49bab6bd9cb1b2d7e1cbc6d9362e74c10ef6d48a987e6

此漏洞共被5位攻击者利用,其中一位白帽攻击者,地址如下:

https://etherscan.io/address/0xf88a427c5bf29acf58497c0088cbf7ca9836b7b2

已归还获取的FORCE,但是其他几位攻击者已经从中套利,并在其钱包地址中仍然拥有FORCE代币未出售。

其他几位恶意攻击者钱包地址如下:

https://etherscan.io/address/0x9d9c3695c54601929cd72d34a52935268eb9b00b

https://etherscan.io/address/0xe29a07002c7be4299b51a2892799cc4a372994dd

https://etherscan.io/address/0x0608576ea47b265f1f16b8b8383d0508f703a0cb

https://etherscan.io/address/0x00000b20f0f6a3a212aa6b85106709cd5941457c

总结

该攻击事件中,主要原因在于 FORCE 代币合约的 transferFrom 函数使用了 if-else 方式判断,但外部合约 xForce 在对其进行调用时并未严格的判断其返回值,导致任意用户恶意铸币漏洞发生。

此漏洞为典型的“假充值”漏洞,已经被强调很长时间,但是目前仍然存在,所以合约代码安全极为重要,安全审计不可忽视,在零时科技安全团队在审计过程中也曾多次发现过此类问题,并及时和项目方人员对接,规避了此类问题的发生。

安全建议

DeFi今年确实备受关注,黑客攻击也不断发生。针对频频发生的黑客攻击事件,我们给出以下的安全建议:

合约代币尽量使用标准的Open Zeppelin ERC-20 来防止本次漏洞的发生;

在项目上线之前,找专业的第三方安全企业进行全面的安全审计,而且可以找多家进行交叉审计;

可以发布漏洞赏金计划,发送社区白帽子帮助找问题,先于黑客找到漏洞;

加强对项目的安全监测和预警,尽量做到在黑客发动攻击之前发布预警从而保护项目安全。

私钥存储安全建议

私钥尽量手抄,确保私钥的准确性,多次校验;

多个安全地方存储

不要截屏和拍照,会同步到云端

不要拷贝粘贴,会同步到云端

不要使用邮件传输或存储私钥

不要将私钥发到群里

不要将私钥导入未知的第三方网站

Force DAO 任意铸币攻击事件复盘分析 | 零时科技相关推荐

  1. PAID Network攻击事件分析 | 零时科技

    事件背景 PAID Network 是去中心化生态,部署在以太坊的 DApp 项目,旨在重新定义民事法律体系,从而通过专有的 SMART 协议.社区管理的仲裁系统.声誉评分.DeFi 工具,为开展业务 ...

  2. 是后门,还是大意?Furucombo遭黑客攻击事件分析 |零时科技

    是后门,还是大意?Furucombo遭黑客攻击事件分析 |零时科技 事件背景 Furucombo推出于2020年3月份,支持Uniswap交易,Compound供应功能,还提供闪电贷的用户界面,使得普 ...

  3. Yearn攻击事件复盘:黑客完成5次DAI与USDT从3crv中存取操作后偿还闪电贷

    Certik发布文章,复盘Yearn闪电贷攻击.北京时间2月5日凌晨,CertiK安全技术团队发现DeFi项目Yearn.Finance发生攻击事件,攻击总损失高达约7100万人民币,黑客从中获利约1 ...

  4. 区块链安全 - DAO攻击事件解析

    作者:隐形人真忙 作者博客:http://blog.csdn.net/u011721501/article/details/79450122 0x00 前言 最近关注了一下区块链方面的安全,因此翻出来 ...

  5. 零时科技:DeFi 项目 Lendf.Me 遭黑客攻击复盘分析

    事件摘要 北京时间 4月18日 08:58,黑客利用Uniswap和ERC777的兼容性问题,在进行 ETH-imBTC 交易时,利用ERC777中的多次迭代调用tokensToSend来实现重入攻击 ...

  6. 创宇区块链 | 黑客利用重入漏洞盗币,Ola_finance 攻击事件分析

    1. 前言 北京时间 2022 年 3 月 31 日,知道创宇区块链安全实验室 监测到借贷平台 Ola_finance 遭到重入攻击,黑客窃取 216964.18 USDC.507216.68 BUS ...

  7. 零时科技 || BEGO Token 攻击事件分析

    事件背景 零时科技区块链安全情报平台监控到消息,北京时间2022年10月20日,BSC链上EGO 合约受到黑客攻击,攻击者一次性mint 10,000,000,000,000,000 BEGO 代币, ...

  8. Definer 预言机攻击事件分析

    前言 北京时间 12 月 13 日,知道创宇区块链安全实验室 关注到针对 Definer 预言机的攻击事件. 作为第三方区块链安全机构,受 Definer.Cherryswap 和 OEC 组成的调查 ...

  9. 零时科技 || DPC攻击事件分析

    事件背景 零时科技区块链安全情报平台监控到消息,北京时间2022年9月10日,DPC代币合约遭到黑客攻击,损失超73,614 BUSD, 零时科技安全团队及时对此安全事件进行分析. 攻击信息 攻击者钱 ...

最新文章

  1. 24Visitor(访问器)模式
  2. vlmcsd 编译与测试
  3. 新手入门深度学习 | 2-2:结构化数据建模流程示例
  4. stm32之iap实现应用(基于串口,上位机,详细源码)
  5. 2018年一线互联网公司Java高级面试题总结
  6. javafx属性_JavaFX技巧11:更新只读属性
  7. Linux | 高级I/O函数
  8. HDU ACM 3986 Harry Potter and the Final Battle(邻接表实现最短路dijkstra堆优化记录路径 + 枚举最短路上每条边)...
  9. oracle redo log file文件详解
  10. Hbase 权威指南
  11. 相册批量下载 前版本为v3.5 支持:雅虎相册、谷歌相册、网易相册、yupoo相册、百度相册、QQ相册
  12. 020_linux驱动之_输入子系统按键应用
  13. html提取excel指定单元格数据,怎样从很多的表格中提取指定单元格数据
  14. 环路分析仪Bode100
  15. 个人网络信息安全管理方法分享
  16. matlab的sinxx,用MATLAB程序编程:分析方程f(x)=sinx-x/2=0正根的分布情况,并用二分法求正根近似值,使误差不超过0.01....
  17. 无法启动此程序,因为计算机丢失api-ms-win-crt-process-l1-1-0.dll
  18. 【数据库】数据库编程
  19. TLM通信(transaction level modle)
  20. SpringBoot+JPA 启动建表错误:CommandAcceptanceException: Error executing DDLalter table X drop foreign key

热门文章

  1. 获取在线地址图片保存到本地
  2. 手机android id修改密码,手机锁屏密码忘了?一个方法搞定
  3. JSCapture – 基于 HTML5 实现的屏幕捕捉库
  4. Web前端之过渡与动画
  5. 成功没有偶然·李嘉诚 之读书笔记
  6. 如何下载4399游戏到本地并修改数值
  7. jquery实现选项卡效果
  8. 可视化的对象存储服务
  9. 计算机有哪些配件名称大全,台式机主机有哪些配件组成
  10. 在线模拟c语言编程,c语言模拟编程学习软件v2019