自从加密货币出现,安全问题就没断过,这似乎和大家认识到的区块链“安全性”有些落差。这种密码学的机制是否足够安全?主要的问题出在了哪里?
10月中旬,笔者参加了西安SSC安全峰会,这是中国互联网界的安全盛会,以安全主题为核心,并且会议的组织者、参会者都与安全相关。
在峰会的区块链安全论坛,我们与论坛的组织者零时科技团队聊了聊用户尤为关注的安全问题,区块链安全猛于虎。但这个严肃的问题也包含了很多看似有趣的趣事。
以下为受访者零时科技CEO邓永凯和记者王航对话时的自述。
图为零时科技CEO邓永凯在西安安全峰会演讲中
记者王航:我看到零时科技的官网现在有三个产品,其中还包含两个工具,这些是什么时候做的?
零时科技CEO邓永凯:我们开发的第一个产品是智能合约安全自动化检测工具,现已免费开放给C端用户,我们将一些基础并重要的安全审计逻辑做成工具后开放了出来;另外一个是基于EOS DApp的防火墙,以SDK的形式存在,当合约接入SDK之后,有异常的一些交易就可以预警并阻断的。
对于安全审计来说,智能合约安全审计也类似与传统安全的源代码安全审计,如果全靠自动化其实不是很靠谱,因为机器规则是死的,有些涉及到业务逻辑上的问题,业务上的问题缺陷,自动化规则是无法审计的。即便是形式化验证,也是需要有一定的判断依据的。自动化工具可以作为辅助,比较隐蔽的问题,需要人工去通过经验去判断出来的。
我们开放智能合约检测工具的目的是,让用户可以自己把合约代码传上去进行免费检测并且获取审计报告,如果需要更详细的审计,可以再联系我们,结合人工一起做审计,发现安全问题,避免资产损失。
记者王航:一般情况下,你们的审计流程是怎么进行的?
零时科技CEO邓永凯:首先,我们拿到用户的审计需求,先用团队内部安全审计工具过一遍,工具是一个辅助,然后是人工按照审计列表将常规漏洞点审计一遍,第二个就是涉及合约是什么业务场景、业务规模、业务逻辑。然后业务的描述,再去看代码里有没有和描述功能不一致的问题。例如说会不会被薅羊毛,币有没有被锁,权限设置错误问题,会不会增发了以及无限铸币等等。
因为智能合约的特殊性,加之当前defi项目中业务逻辑的复杂性,所以,我们所有的代码审计都是要经过交叉审计的,多个审计人员交叉审计,有哪些问题提出来,然后相互审查,看他们审计的问题是不是重合的点。不同的人审计切入点是不一样的。 所以交叉审计可能会发现更多的问题。
记者王航:目前你们的业务客户主要是哪些角色?
零时科技CEO邓永凯:大部分的公链生态客户主要是交易平台和公链项目,联盟链生态客户主要在传统金融行业及政企领域,其中交易平台的安全最为复杂。
比如说交易平台,从它本身的产品业务到移动端APP、web网站、资产钱包,还有账户体系,因为它是中心化的,大部分安全问题跟传统安全是一样的,但在钱包和资产管理比较特殊。在交易平台的安全服务过程中,除了对业务的安全测试,渗透测试,我们还会进行社会工程学攻击,钓鱼攻击等,还有特别值得一提的是,我们做最多的出现问题的都是办公安全问题上。
其中的社会工程学攻击,是通过一些非常规的手段去检测目标的弱点,最容易出问题是他的办公网,我们曾经审计的几家交易所都是通过办公网打进目标系统的。方式很多,在跟目标客户获得授权的情况下,例如可以去目标的办公地点,但很多交易所找不到他的办公点的。确定地点之后,我们可以去拜访他们,可以将一些准备好的设备,例如改装过的数据线、鼠标,贴上名字的U盘等,在不经意间这些设备被使用后,就可以控制他们的网络或者主机,如果这些主机是可以连到交易平台业务后台,或者是有权限操作钱包,基本上就可以控制目标资产和核心数据了。
这就是社会工程学攻击,利用的都是人的失误,以及人性的弱点。例如攻击者需要进入工作地点,可以因为商务需求,可以依靠工作人员,或者伪造工牌、门禁等,最终进入目标网络。
还有其他的方式例如仿冒WiFi,我们伪造一个WiFi让受害者连接,或者仿冒大量跟目标WiFi一样的热点让受害者连接,或者直接让目标WiFi无法工作,目的就是让受害者连接我们的WiFi,受害者随便连一个就是我们伪造的,受害者输入后密码就被我们拿到了,从而可以持续的进入目标网络,窃取数据。
甚至于攻击方式还有针对打印机,打印机一般都是很少有人关注的,但现在的打印机都比较智能,会把历史打印扫描的文件存储一段时间,而有些人会把助记词打印出来,有一个展示案例就是,目标客户打印机可以配置邮箱,将打印的历史内容统一发送到制定邮箱。
对于办公安全的问题,技术人员可能还好,但是行政、财务、商务人员可能基本上没有什么安全意识的,可能杀毒软件都不装,补丁也不打,简直相当于当街裸奔。我们之前的一个案例,就是一个客户的财务人员电脑中病毒了,财务人员电脑可以操作钱包,钱包的90多万美元被盗走了。
所以,安全从业者总有办法在授权的情况下进入目标网络,从而接触并控制目标数据和资产,那么此时就需要极高的道德要求,必须是“正义的hacker”,我们就是。
记者王航:那交易所这一类交易业务集中,资产集中的平台如何做安全呢?
零时科技CEO邓永凯:交易所的安全问题,它是一个面,不是单点,只有整个业务面都做到尽可能安全的情况下,整体的安全性才能提高。木桶原理非常明显。尤其混入的这种社会工程学和钓鱼攻击的特征之后,例如交易所对外的商务人员肯定很多,这些风险都是不确定的。
安全问题类别也很多,我们团队做安全攻防这么多年来,攻击者的攻击技术在提升,我们的安全防护技术也在在提升,白帽子漏洞挖掘技术在提升,恶意黑客的技术提升更快。甚至于恶意黑客可以直接在地下市场够买一个0day漏洞(没有防御方法和补丁的新漏洞)就可以直接攻破一些系统。
还有一个方面就是资产安全管理,钱包安全配置,资产及交易风控,例如有些攻击盗币,在不正常的时间内,在不正常的交易数量等,对这些异常行为需要有风控系统,第一时间对异常交易进行预警,或者直接拦截交易。
另外对于异常转账的地址,也可以做到前期筛查,对可疑地址做内容关联或者地址画像。例如暗网的地址、黑客的地址、勒索软件的地址、洗钱地址、钓鱼网站的地址等。
我们的“数字资产及交易安全系统(AML系统)”就可以提供这些风控功能的API,可以把这个接口给交易所,如果这种恶意地址产生交易的话,及时进行预警并配合交易所风控措施进行资产及交易的保护。
记者王航:对于公链安全的理解有什么不同吗?
零时科技CEO邓永凯:正常情况下,公链代码都是开源的,开源也可能出现问题,例如社区每一个人都可以贡献代码,当提交了一个代码提在分支上面,然后官方把分支打包进去了,打包进去之后,但这个代码是个隐藏非常深的后门,此时项目中就引入了一个定时炸弹,可能过了半年之后,全部资产就被转走了。
比如今年7月,RVN项目的盗币事件,三行代码价值4000万人民币,就是典型的因为开源以及安全意识缺失导致的安全事故。
安全问题是一个很多元化,且复杂的问题,特别是区块链领域的安全问题,更是复杂。加强所有人的安全意识,是一个非常重要的事情,所有的漏洞都是人为造成的。
记者王航:最后请您聊一聊区块链安全审计的原则。
零时科技CEO邓永凯:首先,第一点是责任和信任,客户信任安全团队可以找到安全问题且不影响自身业务,安全团队必须对客户的需求负责人,尽可能多的发现问题并提出安全解决方案,协助修复。
安全领域的人都是心怀正义的,如果没有正义感你就做不了合格的白帽子(正义的安全技术人员),无论在任何时候都得坚守原则,确保团队不做错的事情,一念成佛,一念成魔。