一句话:提出 ThreadNeck,以线程建模客户端运行时并识别可被攻击者利用的瓶颈,在四个主流客户端中发现 13 个可操纵瓶颈。
区块链客户端是区块链网络的基础组件,各自维护账本副本,对去中心化、完整性与稳定性至关重要。作为复杂软件,客户端也存在瓶颈;部分瓶颈会形成攻击面,攻击者故意过载这些弱点使客户端执行拥塞,导致拒绝服务,即“可操纵瓶颈”。现有研究仅关注少数瓶颈,且依赖人工分析,缺乏系统识别方法。本文剖析软件瓶颈的主要成因,提出工具 ThreadNeck,在客户端运行时监控瓶颈症状,并将客户端建模为多个线程及其相互关系以刻画行为;据此识别可疑瓶颈,并判断其是否可被外部攻击者利用。作者将 ThreadNeck 应用于四种不同编程语言开发的主流客户端,共发现 13 个可操纵瓶颈,其中 6 个为未知。
Blockchain clients are the fundamental element of the blockchain network, each keeping a copy of the blockchain’s ledger. They play a crucial role in ensuring the network’s decentralization, integrity, and stability. As complex software systems, blockchain clients are not exempt from bottlenecks. Some bottlenecks create new attack surfaces, where attackers deliberately overload these weak points to congest client’s execution, thereby causing denial of service (DoS). We call them manipulatable bottlenecks. Existing research primarily focuses on a few such bottlenecks, and heavily relies on manual analysis. To the best of our knowledge, there has not been any study proposing a systematic approach to identify manipulatable bottlenecks in blockchain clients. To bridge the gap, this paper delves into the primary causes of bottlenecks in software, and develops a novel tool named ThreadNeck to monitor the symptoms that signal these issues during client runtime. ThreadNeck models the clients as a number of threads, delineating their inter-relationship to accurately characterize the client’s behavior. Building on this, we can identify the suspicious bottlenecks and determine if they could be exploited by external attackers. After applying ThreadNeck to four mainstream clients developed in different programming languages, we totally discover 13 manipulatable bottlenecks, six of which are previously unknown.
@inproceedings{paperbot8470,
title = {Following the “Thread”: Toward Finding Manipulatable Bottlenecks in Blockchain Clients},
author = {Shuohan Wu and Zihao Li and Hao Zhou and Xiapu Luo and Jianfeng Li and Haoyu Wang},
booktitle = {ISSTA},
year = {2024},
doi = {10.1145/3650212.3680372}
}