Poly Network被盗事件对于主打跨链的波卡来说,有什么借鉴的地方?

Polkadot生态研究院出品,必属精品(文章很长,建议先收藏再阅读)


背景


尽管Poly Network的黑客攻击事件已经接近尾声,并且这两天有消息传出,区块链跨链平台Poly Network考虑到黑客已归还大部分被盗数字资产,决定不再追究其法律责任,甚至还邀请其担任公司首席安全顾问,以协助Poly Network在后续安全事宜上提供帮助。

至此,作为DeFi领域至今最大的一起被盗案(超过6亿美金被盗),以一种比较和谐的方式走下了“热点新闻”。放眼望去,该事件也被认为是有史以来最大的一起加密资产领域的被盗案,超过了之前有记录的日本Coincheck交易所被盗的5.348亿美元(2018年)。

回望这件事,更有趣的点在于,8月13日凌晨,Poly Network失窃案的黑客在以太坊网络上公布了自己的心路历程,他在自问自答中写道:“为什么选择攻击 Poly Network?因为近期跨链协议攻击很‘火’。”

于是故事又回到了一个在2020年备受关注的词语——跨链


跨链攻击很火?


我们不禁想问,跨链攻击真的很火吗,还是这位黑客开的一个玩笑话?

据PeckShield统计,截至8月12日,2021年第三季度(Q3)共计发生 19 起 DeFi 安全事件,平均两天发生 1 起安全事件,总损失 6.77 亿美元。而从数量上来看,在以太坊和跨链协议上发生的安全事件确实位居居榜首,分别达到了6起。

当然,PeckShield统计的仅仅是第三季度的情况,如果放大来看依然有不少参考价值,毕竟我们可以直观的发现,今年以来,随着DeFi的火热,该领域的被盗金额一直在快速增长着,据不完全统计在过去半年,平均每一个月就会发生一起DeFi领域的被盗案,损失金额早已突破数千万美金,只是Poly Network的被盗拉高了这个数据。

跨链领域之所以被众多黑客盯上了,其原因在于自从Layer2和侧链火热以来,以Polygon网络为首的二层网络开启了飞速的锁仓增长,短时间内就节节突破1亿美元,10亿美元,甚至50亿美元大关,面对这样一块大蛋糕,自然引起了众多黑客的关注。

另一个点正如BlockSec联合创始人所言,“跨链桥的整个流程比较复杂,涉及到多条链和多个合约之间的交互,而这些安全风险的监测需要通过对跨链桥做整体安全评估分析。对某一个模块的审计和分析并不能完整覆盖全链路的安全风险”。

通过上面的分析我们不难发现,对于跨链的香饽饽来说,一方面是巨大的锁仓金额,另一方面却充斥着复杂的流程,有非常多风险点,需要极高的安全意识,这也是为什么黑客会说“跨链协议攻击很‘火’”的原因,毕竟对他们来说既是一种挑战,也是部分黑客眼馋的“硕果”。

当然,在探究跨链攻击之前,我们以Poly Network被盗事件为例,为大家拆解下跨链协议被盯上的原因,以及跨链协议攻击又是如何发生的?(下文内容在所难免会涉及一些技术分析,我们尽量用通俗的语言向大家讲解,便于理解)


回顾PolyNetwork事件


作为DeFi发展史上最大的黑客攻击事件,Poly Network为项目方和普通用户都敲响了警钟,如何在快速发展的区块链领域保护好我们的资产,并且将整个生态的做的更好更安全,需要大家的不懈努力。而当下,让我们来先来对Poly Network事件进行复盘和分析,以对该事件拥有更清楚的认知,而不仅仅是一味的焦虑和恐慌。

1、事件起因经过结果

攻击最早发生于8月10日17:55,黑客在以太坊链上先后从Poly Network的智能合约中转移了价值超过2.6亿美元的资产,分别为9638万枚USDC和1032枚WBTC。然而攻击并没有结束,18:04黑客在Polygon上从智能合约中转移了8508万枚USDC,18:08黑客在BSC上从智能合约中转移了8760万枚USDC和26629枚ETH。至此,黑客已经盗取了价值6.1亿美元的数字资产。

之后黑客在8月11日13:00之前,对BSC和以太坊上的部分资金进行了移动,分别为将BSC上合计价值1.2亿美元的3210万枚BUSD和8760万枚USDC的流动性添加到了Curve分叉项目Ellipsis Finance中。以及将以太坊上超过9706万美元,包括67万枚DAI和9638万枚USDC的流动性添加到了Curve,而后又撤销了流动性,将其转换为9694万枚DAI。

而与此同时,一位hanashiro.eth的地址通过黑客的地址提醒他Thether冻结了其以太坊上的USDT,黑客为了表示感谢,向该地址转入了13.37枚代表黑客语“Leet”的ETH。黑客在炫耀自己的黑客技术的同时,引起了部分群众的参与,一些用户纷纷向黑客地址发送链上信息以期可以获得打赏。

而Poly Network在经过了短时期的商讨之后,号召同业机构将黑客地址纳入黑名单,并公开喊话黑客,其行为在任何国家都是违反法律的。最终在多方努力和黑客自身在多重因素的考虑之下,黑客于8月11日17:00左右开始逐步归还资金,包括polygon上1010100枚USDC、BSC上23.99枚PBTC、以太坊上的SHIB和FEI等

之后在22:00,退回了BSC链上价值2.53亿美金的BUSD ETH和BTC;23:30开始退回以太坊上的资产;并于8月12日9:00,退回了全部Polygon和BSC上的资产。当前除了冻结资产基本上都已退回。

那么这是否代表了黑客的妥协呢。黑客在以太坊的交易信息中高调的发布了自问自答,公开表示,在DeFi的世界中,除了代码和你自己,你不能相信任何人。而他所做的一切都是为了社区用户资金的安全。他不过是待在黑暗中拯救世界。而选择Poly Network不过是因为跨链攻击当前很火,他只是为了好玩。

无论求财还是求名,毫无疑问,这名黑客做到了,这件惊天大案会被区块链历史载入史册。然而这是否代表了跨链相关协议的不可靠,笔者认为,在任何类型的早期项目发展中,无可避免的会出现一些瑕疵。作为开拓者的他们需要摸着石头过河,而这个过程中磕磕碰碰在所难免,我们不能因为一时的挫折而完全不信任跨链相关协议,因噎废食。总的来说,作为异构跨链领域,首先解决了各区块链间算法和底层架构差异大、跨链信息交互执行速度低、信息不安全等技术难点的Poly Network依旧有其价值所在

那么究竟为何会出现这样的问题,并且及时有效的修改和避免它成为了大家最关注的话题。黑客究竟是如何做到的?目前在全网流传着一个形象的比喻,“黑客拿着房主证明找物业拿钥匙,证明是假的,却从物业那里拿到了真的钥匙”。

那么让我们来简单的进行进一步的剖析。

2、黑客手法及事件总结

要想理解黑客的手法,我们需要先看一看Poly Network的架构。Poly Network的架构分为SRC chain(源链)、Poly chain、DST chain(目标链)三个部分,简单的讲,就是源链发起的跨链交易确认后,RelayerA将区块头信息同步至Poly chain,之后Poly chain将区块链信息同步至目标链RelayerB,目标链RelayerB将验证信息转移到目标链进行验证并执行交易。

在这样的架构中,Relayer的作用非常的重要。而黑客抓住了智能合约中的漏洞,将EthCrossChainData合约的keeper通过EthCrossChainManager合约进行修改,继而通过EthCrossChainManager合约的verifyHeaderAndExecuteTx函数经由_executeCrossChainTx函数盗取资金。

简单的说就是,黑客在源链上初始化的未被充分检查的的攻击交易被RelayerA纳入了Merkle tree并进行了签名,黑客利用有效的Merkle证明,再利用RelayerB将keeper改成了黑客控制的公钥,继而盗取了资金。

究其缘由在于,RelayerB的Merkle证明并没有对验证其所收到的信息是否被破坏和修改。而任意用户都可以调用verifyHeaderAndExecuteTx函数进行交易的执行,并且在其内部进行call调用时可以调用用户名。同时EthCrossChainManager合约中对Keeper的修改权限,使得黑客能够通过数据异常调用修改keeper,并对交易进行签名。毫无疑问这是合约权限管理逻辑中的问题

而这也为Poly Network及类似的相关协议敲响了警钟,在跨链交易事件的验证及合约权限管理的设计上,项目方似乎需要更加精心的打磨。


对于波卡的启示


1、波卡面对跨链攻击会有怎样的情况呢?

其实从黑客对于这次跨链攻击的手法来看,此次PolyNetwork主要的问题还是在于跨链功能中扮演中继作用的组件对链上跨链过来的消息的验证上存在缺陷,以及合约权限的管理逻辑存在问题,这使得黑客能让恶意的跨链消息被接收并在对应的链上进行了跨链消息所指定的操作。

而出现这样的问题,其实也是因为跨链会涉及到不同链之间的不同合约的交互,复杂程度骤然上升。基于区块链本身的特点,大部分公有链的安全性还是比较有保障的,但是一旦涉及到从一条链跨链发送信息到另一条链,信息如何在不同链之间传输,这个过程就没有区块链本身的特性作为安全保障了。因此,为了防止这个过程出现风险,往往设计的机制和流程都比较复杂,也就有比较多的风险点了。这好比是银行金库本身安全系数很高,但是两个银行之间转移资产时,由于这个过程中无法获得金库一样的安保,往往会采用复杂的流程和配备运钞车和安保人员。但这就给了犯罪分子许多可以趁机打劫的环节,跨链也是面临类似的问题。

那么,被称为跨链之王的波卡是否会有类似的问题呢?

其实,从这次的事件我们可以注意到,跨链出问题往往是在异构跨链方面,也就是在不同架构的区块链之间。波卡其基本结构是中继链+平行链的架构,而平行链的架构都有一个共同的来源,那就是Substrate框架。因此,平行链是波卡的一部分,波卡的平行链之间的信息传递是属于同构跨链,也就相当于是波卡自己的功能,直接用XCMP(跨链信息传递)就实现了,所以也就不会遇到同样的问题

不过,对于波卡利用转接桥的方式将不同架构的区块链链接到波卡上,也就是对于异构跨链的情况,仍然会有问题,这就在于转接桥的安全性了。而转接桥并不是一个唯一性的问题,比如不仅波卡官方正在与Snowfork团队在做以太坊到波卡的转接桥,也有其他波卡的平行链在做以太坊的转接桥。也并没有任何规定,来约定以太坊的转接桥只能有多少个,或者哪一个是唯一的被认可的,因为本质上,转接桥也好,Layer2也好,都是在一条链锁住资产,再在另一条链增发影子资产。既然是智能合约的问题,那就可以做很多个转接桥了,所以转接桥的数量是可以没有限制的。

综上所述,对于跨链攻击的问题,尽管波卡每一步都会进行严格的代码审计,但是有代码审计并不能完全保证没有一些特殊的情况发生,比如Poly Network本就是已经接受过代码审计的,依然被黑客攻击了。只不过,经过代码审计后的项目至少不会出现一些常见的问题,也算加了一道保险。另外,对于波卡来说,由于其技术架构的原因,其平行链与平行链之间的信息传递是属于同构跨链,是波卡的一项功能,相对来说安全性会更高一些,风险点少了许多,不过依然要等待实际的检验。对波卡来说,最核心的问题在于转接桥的安全性,因为转接桥是异构跨链的环节,所以这也是波卡生态上最有可能受到跨链攻击的地方。因此,我们并不能说波卡能完全避免跨链攻击这种情况的发生。

2、如何正确看待波卡面临的跨链攻击问题

那么应该如何正确看待波卡面临的跨链攻击问题呢?

抛开区块链,我们放大到整个计算机领域来说,是没有绝对安全这个概念的,有的只是把作恶的难度设计为非常难以实现,只是有相对的安全。回到区块链,像比特币这样的PoW共识机制的区块链也不是完全安全的,因为有51%算力攻击的概念,事实上,这几年来也确实有许多项目比如ETC、BitcoinGold被51%算力攻击过。而在智能合约方面,以太坊这个智能合约的代表,也因为合约漏洞问题而在The DAO上吃过大亏。

但是,以太坊也并没有因此而倒下,反而是越做越强,成为当下最热门的区块链项目之一。一些经历过黑客攻击事件的项目也并没有一蹶不振,通过各种手段把黑客攻击带来的影响全部抹平,把漏洞修复,重振旗鼓继续推进项目就是了。

所以,我们不能完美地期望说波卡不会遇到这种事情,而是应该清醒地明白,这样的事情防不胜防,真要遇到了,想办法积极解决就好,总有办法可以解决的,而解决之后便可以进一步完善项目,只要项目本身发展得好,就会达到更高的高度,以太坊正是如此

3、解决方案

其实我们也不用太担心黑客攻击的问题,随着黑客攻击事件频发,我们对于如何处理这些问题也已经驾轻就熟了。主要有两大类方法。

第一,是纯链上的方式来解决,以治理的方式或者中心化的方式来处理。比如项目方通过投票等治理的方式冻结被盗资产,或者与中心化的稳定币提供商协作,让其冻结资产;比如快照到某一个未受攻击前的区块后,在原有的基础之上分叉一条新的链和新的资产,并根据快照得到的数据,将老的资产转移到新的链上等等。这些处理方式已经是比较通常的解决方案了,有实际操作成功的案例,值得借鉴。

第二种,则是链上与链下的力量相互配合达到追回资产的方式。这次的Poly Network就是动用了链上和链下等资源对黑客进行施压,随后将所损失的金额全部讨回。而另一起在今年6月份发生的项目方跑路事件StableMagnet Finance,最终是通过链上与链下相结合的方式,最终由英国警方侦破,如数追回所有被盗资产,现在已开始着手将其与合法的所有者重新联系起来。此次案件的受害者可以通过联系警方处理,需要提供相关信息,包括钱包地址和持有证明等,最终在链上的方式退还资产。

所以,随着各国对加密货币的监管逐渐加强,加密货币交易所对于KYC的要求会越来越高,链上的蛛丝马迹结合链下的执法,会让许多黑客成员望而却步,或者伏法被抓。

总之,通过现有的解决方案,已经可以比较圆满的解决黑客事件带来的影响,大家不必太介意。

4、给所有波卡生态相关者的建议

那么,对于波卡生态的参与者来说,需要注意些什么呢?

对于波卡官方来说,官方已经做得比较好了,专门做了一条先行网Kusama来测试所有功能,并且每次更新迭代都谨小慎微地进行审计和更新,一步步地研发做了好几年。唯一比较被大家诟病的地方就是它的进度太慢了。但是看到那么多跨链攻击的情况出现,波卡的慢工出细活或许也是为了我们今后能更安全地使用跨链功能,做了充分的保障,这样看来,进度问题是可以理解的。

对于波卡生态中的应用或者项目方来说,由于涉及到智能合约这个事故多发地,所以一定要吸取过往安全事件的经验,避免犯同样的错误,同时安全审计一定不可少。但另一方面,也要去探索一些新的解决方案,比如像波卡生态中的Layer2扩容平台Celer Network就推出了像cBridge这样的非合约型流动性锁定方式。又或者让项目不那么去中心化,运用中心化的一些机制让产品更适用于一些专业场景,比如Aave面向机构用户推出了Aave Pro产品,通过添加白名单系统仅允许KYC参与者访问Aave Pro池,以此做到屏蔽作恶者,保护资金安全。

对于投入资金去参与这些跨链项目的参与者来说,参与任何项目要做好足够的调查,尤其是要大量投入之前,要尽量选择审计状况完善、运行时间比较久的项目,并且对于一些授权行为一定要多加注意,不要随意的就同意一些很高权限的授权。对于生态中有异构跨链的应用一定要慎之又慎,没做好充分的调查和准备不要轻易尝试。另外,尽可能找有知名机构背书的,万一真有问题追责起来也会更容易一些。


后记


在区块链行业从业多年,我们早已见惯了各类黑客事件,虽然现在依旧层出不穷,但是我们也可以很直观的感受到,区块链从业者们,各类相关机构已经越来越团结,同时,随着传统资金进入区块链行业,链下的力量也逐渐重视区块链上的犯罪,黑客要想得逞也越来越难了

另外,在解决方案层面,也有一些去中心化应用与中心化机构相结合的新的解决方案诞生,留给黑客的法外之地越来越少了。

区块链的发展一定是坎坷的,黑客事件虽然是绊脚石,但也是区块链必经的考验,不会真正阻拦到它,只会让它锻炼出脚力,往前走得更远。

*Polkadot生态研究院所提供的信息不代表任何投资暗示,所发布文章仅代表个人观点,仅供参考学习,鉴于国内尚未出台数字资产相关政策及法规,请中国大陆用户谨慎关注Crypto的发展。

写评论,请先登录