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

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

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

背景

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

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

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

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

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

跨链攻击很火?

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

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

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

当然,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 将验证信息转移到目标链进行验证并执行交易。

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

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

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

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

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

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

对于波卡的启示

1

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

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

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

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

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

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

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

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

2

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

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

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

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

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

3

解决方案

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

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

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

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

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

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

4

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

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

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

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

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

后记

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

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

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

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

往期推荐

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

赢得 Kusama 前 5 个插槽的波卡生态项目

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

如何把握波卡发展情况及新的机遇?

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

从 BSC 的成功,探索波卡崛起的一种思路


鉴于波卡生态项目层出不穷,但其中劣质项目,骗局项目充斥其中,值得警惕,而另一方面只在波卡项目方的群又很难了解到波卡整个生态发展的全貌,错失许多机会。所以,我们决定 建立一个波卡生态群,可以开放式地讨论所有波卡生态项目,大家可以客观的分享对各个项目的观点,了解波卡各个项目的发展情况,又可以互通信息共同把握机会