/EtherWatchdog_Dapp

我们有最“垃圾”的前端和最牛的技术🐶

Primary LanguageJavaScriptApache License 2.0Apache-2.0


🐶来帮助你解决最棘手的安全问题😄😏😆

目录

简介 | 背景 | 环境需求 | 前端界面 | 框架流程 | 使用文档 | About Us

简介

EtherWatchdog是一款通过交易的操作码序列实时检测智能合约漏洞的安全平台,我们全面的智能合约漏洞检测服务可以帮助从初创公司到企业的每个人维护他们的以太坊区块链应用程序。EtherWatchdog的未来绝不仅仅是一个普通的智能合约漏洞检测平台,它有能力成为像Etherscan一样优秀的区块链搜索API分析平台

Dapp源码 Server源码

🌎 背景

随着区块链技术高速发展,区块链在金融、版权保护等诸多领域都取得了突破性进展。智能合约作为区块链技术的核心应用,控制着价值数十亿美元的以太坊加密货币,由黑客造成的以太坊智能合约安全事件也层出不穷,资金损失严重。如此看来,不断探索对智能合约的漏洞检测方法是形势所需。然而现有的大部分方法都倾向于提前分析预测智能合约存在的漏洞和缺陷,无法保护部署后合约的安全,EtherWatchdog因此诞生。

📃 环境需求

  1. MetaMask
  2. Node v16.20.0
  3. Ganache v7.7.7
  4. Truffle v5.8.1 (npm install -g truffle)
  5. Solidity v0.5.16
  6. Web3.js v1.8.2

💻 前端界面

前端界面展示EtherWatchdog的三个部分————数据集、模型与检测。

  1. 数据集:展示Geth插桩获取的部分交易信息。
  2. 模型:展示用于检测合约漏洞的CNN-BiLSTM多分类模型。
  3. 检测:展示合约漏洞检测流程,用户输入待检测的交易Hash并提交,后端返回检测结果并上链。

🎉 框架流程

🎙️ 数据集获取

我们结合Geth插桩和深度学习技术实现了一个简易的智能合约漏洞检测框架。Geth插桩是指在以太坊客户端Geth源码中插入可以输出交易数据的代码段,交易操作码序列是由EVM操作码和操作数组成的序列。我们通过Geth插桩拿到每笔调用合约的交易的信息,而交易信息便包括了每笔交易的操作码序列,这些序列组成了训练数据集。

漏洞检测

我们搭建了基于CNN-BiLSTM的深度学习多分类模型,将交易操作码序列向量化并传入模型,最终检测出合约是否存在漏洞,若存在则输出哪种漏洞。目前模型能检测5种漏洞,包括错误的权限检查(Incorrect Check for Authorization)、错误处理的异常(No Check after Contract Invocation)、缺少标准事件(Missing the Transfer Event)、严格余额检查(Strict Check for Balance)和时间戳/区块号依赖(Timestamp Dependency & Block Number Dependency)。

📜 使用文档

🙈 初始化

truffle init
npm init

img

😾 启动私链

打开Ganache,启动本地私链,默认生成10个有100个ETH的账户

查看配置端口,默认7545,可以依照需求自行更改

修改truffle-config.js里面的配置端口

development: {
     host: "127.0.0.1",     // Localhost (default: none)
     port: 7545,            // Standard Ethereum port (default: none)
     network_id: "*",       // Any network (default: none)
 }

🔖 truffle部署合约

进入truffle控制台

truffle console

显示truffle(development)连接上了development环境

部署合约

migrate
migrate --reset    // 如果合约修改了需要重新部署,则需要添加reset参数

成功后控制台和Canache分别有如下输出 img

img

可以在打开的Ganache中看到执行成功的交易, 默认花费第一个帐户的ETH

🎩 检测合约漏洞

点击检测界面,输入查询交易Hash并提交,得到如下结果

img

img

🔔展望

畅想一下未来,EtherWatchdog的未来绝不仅仅是一个普通的智能合约漏洞检测平台,它有能力成为像Etherscan一样优秀的区块链搜索API分析平台。未来🐶想做到:

1、实时检测交易并像Etherscan一样展示最新区块中的含漏洞交易,并提供免费的API供开发者使用。
2、制作一个包含以太坊所有交易的漏洞数据集并提供相关API供开发者使用,有效地避免社区成员调用含有漏洞的合约。
3、🐶有能力做到像Etherscan一样获取以太坊相关信息,包括合约、交易、区块、账户等信息并提供相关API,因为🐶对EVM进行了修改。

🔔Citation

如果EtherWatchdog对您的研究有帮助,欢迎引用

@inproceedings{gu2023detecting,
  title={Detecting Unknown Vulnerabilities in Smart Contracts with Multi-Label Classification Model Using CNN-BiLSTM},
  author={Gu, Wanyi and Wang, Guojun and Li, Peiqiang and Li, Xubin and Zhai, Guangxin and Li, Xiangbin and Chen, Mingfei},
  booktitle={Ubiquitous Security: Second International Conference, UbiSec 2022, Zhangjiajie, China, December 28--31, 2022, Revised Selected Papers},
  pages={52--63},
  year={2023},
  organization={Springer}
}

👦👧About Us

Lingnan Ethereum Darkness Agent

✉️: 1257311626@qq.com

✉️: ouzhsh@126.com

✉️: 835837078@qq.com

✉️: 963544587@qq.com

✉️: cswygu@qq.com

最最感谢我们的博士师兄李培强以及老王❤️

License

EtherWatchdog遵循Apache-2.0开源协议