paperbot · PL 论文追踪

全部论文 待读 收藏

P2 Randomized Testing of Byzantine Fault Tolerant Algorithms

拜占庭容错算法的随机化测试
OOPSLA 7(OOPSLA1)2023匹配度 2/10 · 该论文研究拜占庭容错算法的随机测试与模糊测试,属于分布式系统测试领域,与用户关注的 PL+AI、静态分析、LLM 辅助验证、浮点程序分析等核心方向无直接交集;尽管其工业落地和问题驱动特点与用户部分偏好相符,但主题匹配度低。引用 23 inbox
Levin N. Winter, Florena Buse, Daan de Graaf, Klaus von Gleissenthall, Burcu Kulahcioglu Ozkan
crossref: 2026-09-10

AI 速览

一句话:提出 ByzzFuzz,通过小范围消息变异注入网络与进程故障,随机化测试拜占庭容错算法实现并发现多个真实缺陷。

拜占庭容错(BFT)算法理论上能在部分进程任意偏离时保证一致性,但协议设计与实现缺陷仍会导致实际错误。本文提出 ByzzFuzz,一种简单而有效的随机化测试方法,通过向执行中注入随机生成的网络与进程故障来检测容错错误。为有效探索进程故障空间,ByzzFuzz 引入小范围消息变异:对协议消息内容做微小改动,如按值修改(如递增轮次编号)或按时间修改(如重复此前消息中的提案值)。结合测试与 fuzzing 文献的经验,该方法能揭示真实系统中的协议逻辑与实现缺陷。作者实现并测试了 Tendermint、Ripple 的生产实现及 PBFT 实现,发现 PBFT 中多个 bug、Tendermint 的潜在活性违规、Ripple XRP Ledger 共识算法中两个理论已知漏洞,以及一个此前未知、已被开发者确认并修复的容错 bug。

问题
拜占庭容错算法虽在理论上提供强保证,但实现中的协议逻辑错误与实现缺陷仍可能导致其失效,缺乏自动发现这类容错错误的测试手段。
方法
提出 ByzzFuzz 随机化测试方法,注入随机生成的网络与进程故障,并通过小范围消息变异(按值或按时间对消息内容做微小改动)来探索进程故障空间。
评估
在 Tendermint、Ripple 的生产实现与 PBFT 实现上运行 ByzzFuzz,发现 PBFT 多个 bug、Tendermint 潜在活性违规、Ripple 两个理论已知漏洞及一个此前未知且已被确认修复的容错 bug。
原文摘要(Abstract)

Byzantine fault-tolerant algorithms promise agreement on a correct value, even if a subset of processes can deviate from the algorithm arbitrarily. While these algorithms provide strong guarantees in theory, in practice, protocol bugs and implementation mistakes may still cause them to go wrong. This paper introduces ByzzFuzz, a simple yet effective method for automatically finding errors in implementations of Byzantine fault-tolerant algorithms through randomized testing. ByzzFuzz detects fault-tolerance bugs by injecting randomly generated network and process faults into their executions. To navigate the space of possible process faults, ByzzFuzz introduces small-scope message mutations which mutate the contents of the protocol messages by applying small changes to the original message either in value (e.g., by incrementing the round number) or in time (e.g., by repeating a proposal value from a previous message). We find that small-scope mutations, combined with insights from the testing and fuzzing literature, are effective at uncovering protocol logic and implementation bugs in real-world fault-tolerant systems.We implemented ByzzFuzz and applied it to test the production implementations of two popular blockchain systems, Tendermint and Ripple, and an implementation of the seminal PBFT protocol. ByzzFuzz detected several bugs in the implementation of PBFT, a potential liveness violation in Tendermint, and materialized two theoretically described vulnerabilities in Ripple’s XRP Ledger Consensus Algorithm. Moreover, we discovered a previously unknown fault-tolerance bug in the production implementation of Ripple, which is confirmed by the developers and fixed.

链接与引用

DOI 原文 · PDF(开放获取) ·

BibTeX
@article{paperbot2029,
  title = {Randomized Testing of Byzantine Fault Tolerant Algorithms},
  author = {Levin N. Winter and Florena Buse and Daan de Graaf and Klaus von Gleissenthall and Burcu Kulahcioglu Ozkan},
  journal = {Proceedings of the ACM on Programming Languages},
  volume = {7},
  number = {OOPSLA1},
  year = {2023},
  doi = {10.1145/3586053}
}