G.O.S.S.I.P 阅读推荐 2023-05-09 Tyr

admin 2023年5月15日01:01:42评论45 views字数 2584阅读8分36秒阅读模式

今天要给大家推荐的论文是来自清华大学软件学院Wingtecher Lab投稿的最新研究Tyr: Finding Consensus Failure Bugs in Blockchain System with Behaviour Divergent Model,目前该工作已发表于IEEE S&P 2023。

G.O.S.S.I.P 阅读推荐 2023-05-09  Tyr

研究背景

区块链系统作为一个去中心化的系统,需要实现各种各样的共识协议来让不同的节点对交易执行结果进行共识。但是,作者发现,在实现这些共识协议的过程中,存在很多的CFB(Consensus Failure Bugs),这些CFB会影响区块链节点之间的共识过程,导致共识失败,造成严重的安全后果,比如数据不一致,或者恶意交易执行。

为了能够对区块链系统的共识过程中隐藏的漏洞进行测试,需要想办法触发区块链执行很多不正常的共识行为。目前已经存在的测试工具在测试区块链共识协议的时候都不是合适。比如传统的协议测试工具Peach,生成多交易输入的差分模糊测试器Fluffy,以及共识协议测试工具Twins等等。他们都缺少能够识别出CFB的oracle,即使CFB被触发了,这些检测工具也无法检测出来。此外,因为共识逻辑往往相对复杂,CFB往往隐藏在比较深层次的路径中,多个节点要执行一系列的异常行为才能导致整个共识的失败,然而目前的工具缺乏高效触发这些漏洞的手段。

CFB例子

下面作者们给出了一个CFB的例子,来介绍CFB的影响。这个例子出现在FISCO-BCOS的pbft共识实现中。它会影响区块链系统的活性(liveness)。这意味着这个漏洞被触发后,区块链系统将不会处理其他的新的交易。在代码的第3行,当前节点会先从自己的缓存中迭代读取收到的viewchange协议包。在6-15行,节点会计算有多少个节点发送了viewchange包给自己,并依次累计他们的权重,存储在变量greaterViewWeight中。在16-19行,节点会判断当前的weight是否比maxFaultyQuorum+1还要多,这里的maxFaultyQuorum指的是当前区块链中最多的拜占庭节点数量。如果weight大于拜占庭节点数量,那么就认为当前应该执行viewchange。这里的漏洞是,这个greaterViewWeight的值没有清0,这就导致每一次计算weight的时候,会在上一次的weight的基础上继续累积,攻击者可以不断地向这个节点发送viewchange请求,并持续累积weight到大于FaultyQuorum的值,然后成功一直触发viewchange。这就导致区块链节点一直在追赶视图而不会处理新的交易。

G.O.S.S.I.P 阅读推荐 2023-05-09  Tyr

技术方案

下图是Tyr的整体设计架构图,总的来说,Tyr定义了一个节点行为差异度引擎,和四种CFB的oracle自动化检测器。Tyr的工作流程可以分为如下步骤:(1) 行为差异度引擎首先构建交易和消息。(2) 然后,消息被发送到目标节点、并在区块链共识网络下执行交易。(3) Oracle自动化检测器收集和分析分布式节点的共识数据。(4) 然后计算这些共识数据之间的差异。然后Tyr将其传递给行为分歧模型,用于指导消息变异器。(5) 同时,收集各节点的运行时信息,并计算它们之间的差异。(6) Oracle自动化检测器将共识数据与预期数据进行比较,通过检查共识差异来识别节点是否违反这些oracle。(7) Tyr继续进行测试过程的下一个迭代(从步骤1到步骤6),直到终止。

G.O.S.S.I.P 阅读推荐 2023-05-09  Tyr

具体来说,Tyr定义了如下图所示的节点行为差异度模型。模型中包含节点共识数据和运行时数据。共识数据包括节点当选leader的次数,交易集合,恶意构造的交易集合,本地区块数据,区块高度,全局状态和Tyr标注的状态。运行时数据包含覆盖率信息,收到的消息集合和发送的消息集合。由此,节点间的差异度定义为:当选leader次数的差异,恶意构造的交易集合差异,Tyr标注的状态差异,覆盖率差异和区块高度的差异的和。

G.O.S.S.I.P 阅读推荐 2023-05-09  Tyr

根据这个差异度,Tyr会首先判断当前是否出现了CFB,如果新bug出现,或者差异度变大,那么Tyr认为上一轮发出的变异消息包是有价值的,在这一轮测试的时候会继续发送同类型的包。

此外,为了准确检测CFB,Tyr定义了四种oracle:

  • 活性(Liveness):对于区块链来说,所有的合法交易都要最终被正确执行。为了检测这个性质是否被破坏,Tyr会发送一些合法交易并关注这些交易要修改的全局状态是否被顺利修改。

  • 安全性(Safety):对于区块链来说,所有的不合法交易最终一定不会被执行。为了检测这个性质是否被破坏,Tyr会发送一些不合法的交易并关注这些交易要修改的全局状态是否错误地被修改了。

  • 完整性(Integrity):对于区块链来说,任何节点当前的区块高度要保持相对一致。为了检测这个性质是否被破坏,Tyr会一直获取不同节点的区块高度,并判断他们之间的差异。

  • 公平性(Fairness):对于区块链来说,任何节点当选leader(获得记账权)的机率是要符合共识模型的。为了检测这个性质是否被破坏,Tyr会一直获取不同节点的leader当选次数,并判断他们之间的差异。

效果

Tyr在6个常用的商用区块链上进行了适配和实验,包括:HyperLedger Fabric, FISCO-BCOS, Quorum, Diem, Go-Ethereum 以及EOS。共发现了20个之前未知的CFB,其中5个被分配了CVE编号。跟其他工具Peach,Fluffy和Twins相比,Tyr的覆盖率可以分别提高27.3%,228.2%和297.1%。

G.O.S.S.I.P 阅读推荐 2023-05-09  Tyr

原文下载:

http://www.wingtecher.com/themes/WingTecherResearch/assets/papers/SP23-Tyr.pdf



投稿作者介绍:

陈元亮

清华大学软件学院系统所博士研究生,主要研究方向为区块链和分布式系统安全,主导和参与的研究成果发表于S&P、USENIX Security、NDSS等。

马福辰

清华大学软件学院系统所博士研究生,主要研究方向为区块链和分布式系统安全,主导和参与的研究成果发表于NDSS、S&P、USENIX Security、TSE、TOSEM等。


原文始发于微信公众号(安全研究GoSSIP):G.O.S.S.I.P 阅读推荐 2023-05-09 Tyr

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年5月15日01:01:42
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   G.O.S.S.I.P 阅读推荐 2023-05-09 Tyrhttp://cn-sec.com/archives/1721881.html

发表评论

匿名网友 填写信息