一句话:提出 RPCBridge,用适配器与逻辑规则建模 RPC 语义,并在调用图中构建 RPC 边以提升静态分析完整性。
远程过程调用(RPC)封装了网络通信细节,使程序能像调用本地过程一样调用其他地址空间甚至其他机器上的过程,但现有静态分析器难以穿透这种封装,导致基于 RPC 的 Java 程序分析不完整。作者观察到许多 Java RPC 框架基于显式协议,因而提出 RPCBridge:通过适配器统一 RPC 基本操作,基于语义用逻辑规则精确建模 RPC,执行指向分析并在调用图中构建客户端与服务端之间的 RPC 边。在 5 种常见 RPC 框架的真实大规模 Java 程序上评估表明,该方法能有效捕获 RPC 操作并建立关键链接,执行后 60.1% 的链接为真实调用者-被调用者对;同时为污点分析带来 24.3% 的泄漏路径提升,且内存与时间开销很小,使系统模块能被更整体地静态分析。
The Remote Procedure Call (RPC) is commonly used for inter-process communications over network, allowing a program to invoke a procedure in another address space, even in another machine as if it were a local call. Its convenience comes from encapsulating network communication. However, for the same reason, it cannot be penetrated by current static analyzers. Since the RPC based programs/frameworks play a more important role in various domains, the static analysis of RPC is significant and cannot be ignored. We have observed that many of the existing RPC frameworks/programs written in Java are based on explicit protocols, which makes them possible to be modelled for static analysis. The challenges are how to identify RPC operations in different frameworks/programs and how to automatically establish relationships between clients and servers. In this paper, we propose a novel approach, RPCBridge, which uses an adapter to unify the most basic operations during the RPC process. It models the RPC with logic rules in a straightforward and precise way based on its semantics, performs points-to analysis and constructs RPC edges in the call graph, making it more complete. The evaluation on real-world large-scale Java programs based on 5 common RPC frameworks shows that our approach can effectively capture the operations of the RPC and construct critical links between clients and servers, in which 60.1 % are the true caller-callee pairs after execution. Our approach is expected to bring significant benefits (+24.3 % leakage paths for the taint analyzer) for previously incompletely modelled code with a very little memory and time overhead, and connect the modules in a system, so that it can be statically analyzed more holistically.
DOI 原文 ·
@inproceedings{paperbot8751,
title = {Static Analysis of Remote Procedure Call in Java Programs},
author = {Baoquan Cui and Rong Qu and Zhen Tang and Jian Zhang},
booktitle = {ICSE},
year = {2025},
doi = {10.1109/icse55347.2025.00151}
}