paperbot · PL 论文追踪

全部论文 待读 收藏

P2 RESTler: Stateful REST API Fuzzing

RESTler:有状态的 REST API 模糊测试
ICSE 2019 IEEE/ACM 41st International Conference on Software Engineering (ICSE)2019匹配度 3/10 · 论文提出有状态 REST API 模糊测试器,属于动态测试与缺陷发现,虽具有工业落地价值,但并非用户核心关注的静态分析、LLM/Agent 改进程序分析、浮点程序分析或贝叶斯程序分析方向;其请求依赖推断与反馈机制也未涉及 LLM 或 Agentic 程序。引用 324 inbox
Vaggelis Atlidakis, Patrice Godefroid, Marina Polishchuk
crossref: 2026-09-12dblp: 2026-09-12

AI 速览

一句话:首个有状态 REST API 模糊测试器,通过推断请求依赖并利用响应反馈生成测试序列,发现 28 个 GitLab 缺陷及多个云服务缺陷。

本文提出 RESTler,首个有状态的 REST API 模糊测试工具。它分析云服务的 API 规范,自动生成请求序列来测试服务。RESTler 通过两种机制生成测试序列:(1) 从规范中声明的请求类型之间推断生产者-消费者依赖关系,例如因请求 B 以请求 A 产生的资源 id x 为输入,推断 B 应在 A 之后执行;(2) 分析先前测试执行中观察到的响应动态反馈来生成新测试,例如学习到请求序列 A;B 之后的请求 C 会被服务拒绝,从而在未来避免该组合。实验表明,这两种技术对于充分覆盖被测服务、同时剪枝庞大的请求序列搜索空间都是必要的。作者用 RESTler 测试了开源 Git 服务 GitLab 以及多个 Microsoft Azure 和 Office365 云服务,在 GitLab 中发现 28 个缺陷,并在每个已测试的 Azure 和 Office365 云服务中发现若干缺陷,这些缺陷均已被服务所有者确认并修复。

问题
REST API 测试缺乏有状态感知:现有模糊测试器难以处理请求间的依赖关系与执行顺序,导致无法充分覆盖服务行为或搜索空间爆炸。
方法
RESTler 从 API 规范推断请求类型间的生产者-消费者依赖,并结合先前执行响应的动态反馈,生成并剪枝有状态的请求序列。
评估
在 GitLab、多个 Microsoft Azure 和 Office365 云服务上开展实验,验证两种技术的必要性,共在 GitLab 发现 28 个缺陷、各云服务亦发现若干缺陷,且均被确认修复。
原文摘要(Abstract)

This paper introduces RESTler, the first stateful REST API fuzzer. RESTler analyzes the API specification of a cloud service and generates sequences of requests that automatically test the service through its API. RESTler generates test sequences by (1) inferring producer-consumer dependencies among request types declared in the specification (e.g., inferring that "a request B should be executed after request A" because B takes as an input a resource-id x produced by A) and by (2) analyzing dynamic feedback from responses observed during prior test executions in order to generate new tests (e.g., learning that "a request C after a request sequence A;B is refused by the service" and therefore avoiding this combination in the future). We present experimental results showing that these two techniques are necessary to thoroughly exercise a service under test while pruning the large search space of possible request sequences. We used RESTler to test GitLab, an open-source Git service, as well as several Microsoft Azure and Office365 cloud services. RESTler found 28 bugs in GitLab and several bugs in each of the Azure and Office365 cloud services tested so far. These bugs have been confirmed and fixed by the service owners.

链接与引用

DOI 原文 · DBLP

BibTeX
@inproceedings{AtlidakisGP19,
  title = {RESTler: Stateful REST API Fuzzing},
  author = {Vaggelis Atlidakis and Patrice Godefroid and Marina Polishchuk},
  booktitle = {ICSE},
  year = {2019},
  doi = {10.1109/icse.2019.00083}
}