当前位置:首页 > 知识 >

MerkleTree实现问题的公链审计

  • 公链
  • 2023-08-24 14:32:14
  • 28
区块链公链审计过程中遇到的MerkleTree底层实现问题

前言

区块链项目发展迅猛,经历了比特币、以太坊时代之后,出现了许多具有不同特点和优势的公链项目。这些项目既具备了区块链1.0、2.0时代的特点,如数字货币交易、去中心化和智能合约支持,同时还通过更巧妙的共识机制、更复杂的技术和金融模型来解决现有问题,推动区块链技术融入我们的生活。

在这个过程中,区块链安全组一直关注着各个公链项目,为它们的发展和上线提供安全支持。在最近的一次公链审计项目中,我们发现了一个有意思的关于MerkleTree底层实现的漏洞。下面将分享我们在发现该漏洞之前的技术积累以及发现的过程。

公链项目审计

回顾2018年,对于从事区块链安全的专业人员而言,大部分人印象最深的可能是以太坊的合约漏洞、EOS公链上出现的合约问题以及少数公链的漏洞信息。搜索与区块链审计相关的文章时,大多数是关于智能合约的检查清单和审计分析,很少有针对公链审计的技术分享。在这里,我推荐大家阅读一本国内首发的《区块链安全生存指南》,介绍了当前的区块链行业环境以及近年来发生的一些著名事件。同时,我也分享了最近发布的《公链审计检查清单》,供公链项目开发者参考。

审计区块链公链项目与通常的软件代码审计有所不同。通常的代码审计会考虑语言特性以及该语言的0day或1day漏洞,结合常见业务场景分析代码实现。而区块链公链项目由于代码量较大,背后还有严谨的金融货币模型和共识模型,并且缺乏实用的审计工具,因此需要更多的人工审计,审计的定制化程度高,难度和工作量也较大。依据我的理解,我们主要从以下几个方向入手:

- 语言特性及其已知漏洞 - 底层实现(包括密码学、序列化、大数运算等) - 区块链基本元素的实现(区块、交易、链) - 区块链行为的逻辑(生成区块、交易进入交易池等) - 区块链的其他组件(p2p、rpc、钱包等) - 共识算法的合理性 - 金融模型的合理性 - 历史公链漏洞

漏洞发现过程

我们在审计过程中发现的漏洞利用方式源于该公链项目在实现MerkleTree逻辑时与常规实现方式稍有不同。通过整理比特币区块链和以太坊区块链中出现过的漏洞,我们发现了可能利用的漏洞点,并确认它们可以影响不同节点间的共识,从而导致分叉。

在发现问题后,我们立即向公链项目方报告,而公链的开发者则迅速响应,非常重视这个安全问题,并立即完成了修复。

猜你喜欢

微信二维码

微信