深圳市龙华区振华时代广场10整层
18165737729

八方观察|“迷途知返”的黑客与区块链安全隐忧

截止到8月11日12时59分,Poly Network发生的O3资金池被盗事件,在持续发酵后,似乎有了最终结果。

黑客使用攻击地址“自己给自己”发送交易,在交易附带信息里说到“I NEED A SECURED MULTISIG WALLET FROM YOU”

随后Poly Network回复:“We are preparing a multi-sig address controlled by known Poly addresses”并在50分钟后回复了以太坊、BSC、Polygon三条链的接受地址,分别为:

ETH: 0x71Fb9dB587F6d47Ac8192Cd76110E05B8fd2142f

BSC: 0xEEBb0c4a5017bEd8079B88F35528eF2c722b31fc

Polygon: 0xA4b291Ed1220310d3120f515B5B7AccaecD66F17

这场漫长的沟通经历差不多15小时,第一次尝试沟通,Poly Network尝试取得沟通,并留下了沟通邮箱。2小时后,继续沟通表示,如果归还资产,会因为这次发现安全漏洞给予安全奖励。

随后黑客在攻击地址表示,可能会建立一个DAO决定地址中资金的流向。

Poly Network再次回复,建立DAO也改变不了资金被盗的事实,如果归还资产,会为黑客提供安全赏金,并且这也会成为历史上最大金额的“白帽”黑客事件而被铭记。

随后便是黑客表示自己是传奇,而将退还资产的关键消息的发布。

白帽黑客指正义的黑客,区块链圈很多安全公司的中流砥柱都出自白帽。

也许这次参与的黑客真的如其所说,对钱不感兴趣。

在下午5时左右,Poly公布的Polygon地址收到了101万枚USDC。发稿前,其他地址暂时还没有将资产转入。

但作为区块链从业者、用户来说,面对攻击事件,小概率可以得到善终,大概率是会波及项目和用户资产安全。

此次安全事件发生后,在事件的评论中,有一条极为反讽的评论“讲个笑话,区块链是安全的。”

外行看热闹,内行看门道。

区块链的安全是一个相对概念,而不是一个绝对概念。

在巨额收益的引诱、加密货币无监管、合约设计不成熟的情况下,加密货币网络中的合约漏洞被当成黑客提款机也就不足为奇了。

传统金融领域,安全不仅仅在于软件,更多安全保证在于流程防护。但当全部的流程通过智能合约自动执行的时候,就会出现多个漏洞。

最大的保障变成了代码正确性和安全案例的设计实践。

此次Poly的问题就在于黑客可以控制资金池中管理账户转账的权限,当把转出地址换成黑客自己的地址后,只要向合约发送虚拟的数据转出交易,那资金池的资产就会顺利被转出。

这个漏洞主要在于,因为设计了一些合约接受某些数据而执行行为的操作,但可以执行这个动作又有多个因素管理,其中有一个因素漏洞被黑客利用了,劫取了“权限”。

这类事件还要有一个理解框架。

其中分为链的安全和合约安全。

一条公链,首先要保证链的安全,即总帐本的安全、交易打包的安全。然后是合约执行的安全。

软件的安全依赖开发者代码的成熟性,正所谓没有绝对安全的系统,只有良莠不齐的开发者。

链的安全是指链上的共识算法设计、基础协议的编写不能有漏洞,其次是基础协议执行的合约没有问题,例如在以太坊上发型代币,其合约是一个基础流程,但如果合约漏洞里有明显的增发漏洞,那极有可能被利用增发代币。

链的安全,主要是共识来保证,比特币使用中本聪共识,以太坊使用Ethash,波卡使用NPOS。其保证的是总帐本不能篡改。合约安全就只能考究其设计问题和编码成熟度了。

所以合约设计者和开发者要严格设计合约,要检查合约的设计漏洞,代码编写漏洞,设计逻辑,以及在业务场景里可能出现的问题。

在这里,我们还是再次通过合约审计的思路,来为大家提供理解合约安全的思路。

安全审计团队拿到审计需求后,会先用团队内部的安全审计工具过一遍,不过工具是一个辅助,然后进行人工审计,这个流程会按照审计列表将常规漏洞点审计一遍。

然后进行业务上的审计,其中包含什么业务场景、业务规模、业务逻辑。然后业务的描述如何,看代码里是否有和描述功能不一致,是否会被薅羊毛,代币是否有被锁,权限设置错误问题,是否会增发或无限铸币等等。

但这些流程进行完毕后,上文讲到,代码的安全要看代码编写成熟度,而不同开发者因为其经验,对合约的判断也不同,再加上智能合约的特殊性和DeFi业务逻辑复杂性,代码审计必须要进行交叉审计,相互审查的。

就像Poly的以太坊合约问题,其在该合约后续的流程上是没问题的,但在黑客看来,通过合约流程前面的一些数据伪造,就控制了其合约转出的权限。也是一种迂回击破的方式了。

或者因为Poly是一个跨链系统,出问题的部分可以称为跨链合约交互部分,这也代表着跨链案例的实践,要逻辑更为严密。

从智能合约的设计来看,绝大部分DeFi合约出问题都出在资产转移、价格计算和权限控制上,因此这些方面开发者需要入手向上延展,并找到这条路径上可能存在的薄弱环节加以防范。

Poly此次是万幸的,黑客可以归还资产,尽管目前归还了一小部分,我们还在等待更多的资产转账。笔者从Poly处获取的消息是,目前合约已经在升级,最优先级的目标是追回用户资产,其他的细节会后续公布。

从黑客公布的消息看,似乎黑客已经接受了Poly提出的安全赏金,也希望在这场博弈里,双方可以快速结束相互的拉扯。就像Poly说的,让这一次安全事件,成为历史上最大的白帽黑客事件。