APIRL: Deep Reinforcement Learning for REST API Fuzzing
作者: Myles Foley, Sergio Maffeis
分类: cs.SE, cs.AI, cs.NI
发布日期: 2024-12-20
备注: Thirty-ninth Conference on Artificial Intelligence (AAAI 2025)
💡 一句话要点
提出APIRL以解决REST API模糊测试中的性能与精度问题
🎯 匹配领域: 支柱二:RL算法与架构 (RL & Architecture)
关键词: REST API 模糊测试 深度强化学习 变换器模块 自动化测试 安全漏洞 逻辑缺陷 性能优化
📋 核心要点
- 现有的REST API测试方法在性能和精度上存在不足,主要依赖无目标搜索或对上下文信息的有限利用。
- APIRL通过深度强化学习自动化测试过程,并利用预训练的变换器模块反馈来提升测试效果。
- 实验结果显示,APIRL在真实REST API中发现的漏洞数量显著高于现有最先进方法,同时减少了测试用例的数量。
📝 摘要(中文)
REST API已成为网络服务的关键组成部分,但常常存在逻辑缺陷,导致服务器错误或安全漏洞。现有的请求修改方法,包括深度学习技术,性能和精度有限,主要依赖无目标搜索或对上下文信息的利用不足。本文提出了APIRL,一种完全自动化的深度强化学习工具,用于测试REST API。我们的方法的一个关键创新是使用从预训练的变换器模块获得的反馈,该模块基于JSON结构数据,类似于API响应。这使得APIRL能够学习测试结果的细微差别,并对未见过的API端点进行泛化。实验表明,APIRL能够在真实世界的REST API中发现显著更多的漏洞,同时最小化所需的测试用例数量。我们还通过详尽的消融研究探讨了奖励函数和其他关键设计选择对学习策略的影响。
🔬 方法详解
问题定义:本文旨在解决REST API模糊测试中的逻辑缺陷检测问题。现有方法在性能和精度上存在局限,无法充分利用上下文信息,导致测试效果不佳。
核心思路:APIRL的核心思路是利用深度强化学习自动化测试过程,并通过预训练的变换器模块获取反馈,以学习测试结果的细微差别,从而提高对未见过API端点的泛化能力。
技术框架:APIRL的整体架构包括数据收集、请求生成、测试执行和反馈学习四个主要模块。首先收集API的JSON响应数据,然后生成HTTP请求并执行测试,最后通过变换器模块分析结果并优化策略。
关键创新:APIRL的主要创新在于结合了深度强化学习与预训练变换器模块的反馈机制,这一设计使其能够更好地理解和利用API的上下文信息,从而显著提高了测试的有效性和效率。
关键设计:在设计中,APIRL使用了特定的奖励函数来引导学习过程,并通过消融研究确定了最优的参数设置和网络结构,以确保模型的稳定性和性能。具体的损失函数和网络架构细节在论文中进行了详细探讨。
🖼️ 关键图片
📊 实验亮点
实验结果表明,APIRL在真实世界的REST API中发现的漏洞数量比现有最先进方法多出显著的比例,同时所需的测试用例数量减少。这一成果表明APIRL在提高测试效率和有效性方面具有显著优势,具体性能提升数据在论文中提供。
🎯 应用场景
APIRL可以广泛应用于软件开发和安全测试领域,尤其是在REST API的开发和维护过程中。通过自动化的模糊测试,开发者能够更早地发现潜在的逻辑缺陷和安全漏洞,从而提升软件的安全性和可靠性。未来,APIRL的技术可以扩展到其他类型的API测试和更广泛的自动化测试场景中。
📄 摘要(原文)
REST APIs have become key components of web services. However, they often contain logic flaws resulting in server side errors or security vulnerabilities. HTTP requests are used as test cases to find and mitigate such issues. Existing methods to modify requests, including those using deep learning, suffer from limited performance and precision, relying on undirected search or making limited usage of the contextual information. In this paper we propose APIRL, a fully automated deep reinforcement learning tool for testing REST APIs. A key novelty of our approach is the use of feedback from a transformer module pre-trained on JSON-structured data, akin to that used in API responses. This allows APIRL to learn the subtleties relating to test outcomes, and generalise to unseen API endpoints. We show APIRL can find significantly more bugs than the state-of-the-art in real world REST APIs while minimising the number of required test cases. We also study how reward functions, and other key design choices, affect learnt policies in a thorough ablation study.