DEVCON2: Raine Revere 论关于安全性可视化
记者:Lydia
之前参加专家小组讨论的专家Raine Revere做了关于安全性可视化的演讲主题。他是Dapp开发者,对工具有浓厚的兴趣,因为可以用来推进生态系统的演变。
我们有非常好的形式化验证例子,这是非常有必要的,可以提高安全性,我会谈论不同类型的开发者,从人文的角度看待安全问题。
如何发现智能合约的安全缺陷?
可以通过创建工具实现缺陷安全的可视化,我们可以看到之前没有发现的缺陷,可以提升安全性。
重放攻击和外部调用会毁掉公共函数,因此不能依赖状态。
你会获得很大的数量,可改变余额。
这些攻击都有一些代码味道,这是一个指标,可能会有一些问题,即使不是专业术语,但是可以检测代码味道,防止错误出现。
静态分析法是根据既定的外生变量值求得内生变量的分析方法,是对已发生的经济活动成果,进行综合性的对比的一种分析方法。
可以根据静态分析得出观察结果,这是非常重要的。
pass源代码,获取抽象语法树,可以写代码、分析代码,这就是静态分析。
分开代码就可以获得抽象语法树。
今天我想分享我创建的代码库,我们是否能查出调用来源。
我们可以用非常简单的合约实现可视化。
我们有一些函数可以取款,但是这样的函数是不安全的,外部的调用会产生问题,除非开发者仔细的分析,才能查到这些问题。
关注最重要的函数应该用Solgraph实现函数可视化,获得余额的函数是蓝色的,状态不会改变,取款的函数是红色的,和不可信的调用相连。用solgraph可以查看任何的潜在风险,如果DAO有这样的代码就可以知道DAO再重放攻击可能发生在哪,以非常低的成本就可以查看风险。
我们需要更加标准的单元模式,每个Solidity合约都有自己的合约测试,如访问控制,只能做一些不同的控制。这是技术部分
还有一些非技术,可以进行一些更有效的安全逃离
网络开发者,用Java等语言,网络开发者看重简单实用型,其劣势是用的是高级语言,对系统和硬件虚拟相关的应用没有直观的感觉。很多基金会的人都在做系统相关的工作,系统工程师可以了解细节带来的影响,可能会低估C++的影响。
形式化验证用Y3这样文件的解决方案,证明应用的有效性,虽然对安全来说学术人士是最重要的贡献者,但是人数非常有限,但是我们不知道如何整合他们的意见。
还有就是非开发者,如果要创建成功产品必须让他们参与,如推销者,他们需要依赖其他人的专业知识,他们需要信任工程师和学术人士,这些人会进行猜想,如DAO,如果网站如雅虎被攻击,因特网就完了,但是在区块链中一个合约不是整个以太坊网络,我们要有不同的角度,不同的人对安全有不同的看法,发现合约中的风险,动态攻击也非常重要,让不同的人参与进来进行多角度的安讨论。
作者:Lydia | 来源:Chainb
Scan QR code with WeChat