BlockSec CEO周亚金教授受邀参加香港Web3学者峰会,阐述了EVM虚拟机存在的潜在安全风险以及如何通过差分测试工具解决该类问题。
参考链接:url
Detecting Blockchain (E)VM Flaws
打打广告
目前EVM兼容的链有200+
虚拟机是智能合约的foundation
virtual ROM中存储的是代码,account storge是持久化存储
evm如果对同一段代码执行结果不一样,就会导致分叉,有两个重要的事件
浅拷贝优化导致的错误
实现篡改return data
CVE2021 Geth及时修复了,但是其他fork geth的项目未能及时采用该patch
如何提前发现类似问题:提前开发系统,但是存在着一下问题
差分测试:不同种类的实现
输入相同,执行的合约相同,理论上输出应该一样
test case的prestate也应该相同
生成测试用例的方法
- 用历史真实数据
- 基于覆盖率的fuzz(提到blocksec做了很多其他的维度)
基于种子交易mutate,生成不正常的交易
现有的evm存在定制,neo作为layer1,基于neo的链可能定制化
剔除假阳性的方法
blocksec目前支持的链的EVM
https://nvd.nist.gov/vuln/detail/CVE-2020-26241
目前zkevm的问题比较多
eos的问题:新的合约账户可能和已被销毁的合约账户连接起来
aurora预编译合约计算gas错误,远远小于实际的gas消耗,导致dos