paperbot · PL 论文追踪

全部论文 待读 收藏

P2 Seneca: Taint-Based Call Graph Construction for Java Object Deserialization

Seneca:面向 Java 对象反序列化的基于污点的调用图构建
OOPSLA 8(OOPSLA1)2024匹配度 3/10 · 该论文属于传统程序分析/静态分析,关注 Java 反序列化的调用图构建与污点分析,与用户画像中的静态分析有邻接关系;但它不涉及 LLM/Agent、浮点程序分析、贝叶斯程序分析或 ML 系统中的静态分析,因此不落在当前核心研究方向上。引用 9 inbox
Joanna C. S. Santos, Mehdi Mirakhorli, Ali Shokri
crossref: 2026-09-10

AI 速览

一句话:提出 Seneca,用污点分析与 API 建模为 Java 序列化构建健全调用图,以发现反序列化漏洞路径。

Java 对象序列化与反序列化广泛用于对象存储与跨机传输,但其依赖反射,给静态分析带来挑战。现有调用图构建算法无法完整处理序列化/反序列化,无法揭示回调方法,导致调用图遗漏隐藏的(脆弱)路径。Seneca 结合污点分析与 API 建模,为包含序列化特性的程序构建更健全的调用图。作者从健全性、精度、性能和检测不可信对象反序列化漏洞的实用性进行评估。结果表明,Seneca 能针对序列化特性生成健全调用图,运行开销不显著,并能有效识别不可信反序列化导致的脆弱路径。

问题
现有调用图构建算法不能完整处理 Java 序列化/反序列化中的反射回调,遗漏经回调方法可达的隐藏漏洞路径。
方法
Seneca 使用污点分析和序列化 API 建模来捕获序列化/反序列化触发的回调,从而构建更健全的调用图。
评估
作者从健全性、精度和运行时性能评估 Seneca,并用其检测不可信对象反序列化漏洞;结果显示调用图健全、开销小且有助于识别漏洞路径。
原文摘要(Abstract)

Object serialization and deserialization are widely used for storing and preserving objects in files, memory, or database as well as for transporting them across machines, enabling remote interaction among processes and many more. This mechanism relies on reflection, a dynamic language that introduces serious challenges for static analyses. Current state-of-the-art call graph construction algorithms do not fully support object serialization/deserialization, i.e., they are unable to uncover the callback methods that are invoked when objects are serialized and deserialized. Since call graphs are a core data structure for multiple types of analysis (e.g., vulnerability detection), an appropriate analysis cannot be performed since the call graph does not capture hidden (vulnerable) paths that occur via callback methods. In this paper, we present Seneca, an approach for handling serialization with improved soundness in the context of call graph construction. Our approach relies on taint analysis and API modeling to construct sound call graphs. We evaluated our approach with respect to soundness, precision, performance, and usefulness in detecting untrusted object deserialization vulnerabilities. Our results show that Seneca can create sound call graphs with respect to serialization features. The resulting call graphs do not incur significant runtime overhead and were shown to be useful for performing identification of vulnerable paths caused by untrusted object deserialization.

链接与引用

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

BibTeX
@article{paperbot2561,
  title = {Seneca: Taint-Based Call Graph Construction for Java Object Deserialization},
  author = {Joanna C. S. Santos and Mehdi Mirakhorli and Ali Shokri},
  journal = {Proceedings of the ACM on Programming Languages},
  volume = {8},
  number = {OOPSLA1},
  year = {2024},
  doi = {10.1145/3649851}
}