论文标题
森林:一种基于树的方法用于模糊静止API
foREST: A Tree-based Approach for Fuzzing RESTful APIs
论文作者
论文摘要
代表性状态转移(REST)是通过Web应用程序和云广泛使用的架构。用户可以根据其应用程序界面的规范(即Restful API)调用此类服务。现有的模糊静止API通常基于经典的API依赖性图。但是,由于API之间的依赖性爆炸,这种依赖性对REST服务的效率低下。在本文中,我们提出了一种基于树木的新方法,该方法可以更好地捕获基本的依赖性,并在很大程度上提高了静止API模糊的效率。特别是,跨多个API的端点的分层信息使我们能够构造API树,并且树节点的关系可以指示资源依赖项的优先级,\ textIt {e.g。,}更有可能取决于其父节点,而不是其父节点而不是其后源或同伴。在评估部分中,我们首先确认这种基于树的方法比传统的基于图的方法更有效。然后,我们将工具应用于两个现实世界中的Restful服务,并将性能与两个最先进的工具Evomaster和Restler进行比较。我们的结果表明,森林可以在所有实验中改善代码覆盖率,范围从11.5 \%到82.5 \%。此外,我们的工具还发现了11个以前未知的新错误。
Representational state transfer (REST) is a widely employed architecture by web applications and cloud. Users can invoke such services according to the specification of their application interfaces, namely RESTful APIs. Existing approaches for fuzzing RESTful APIs are generally based on classic API-dependency graphs. However, such dependencies are inefficient for REST services due to the explosion of dependencies among APIs. In this paper, we propose a novel tree-based approach that can better capture the essential dependencies and largely improve the efficiency of RESTful API fuzzing. In particular, the hierarchical information of the endpoints across multiple APIs enables us to construct an API tree, and the relationships of tree nodes can indicate the priority of resource dependencies, \textit{e.g.,} it's more likely that a node depends on its parent node rather than its offspring or siblings. In the evaluation part, we first confirm that such a tree-based approach is more efficient than traditional graph-based approaches. We then apply our tool to fuzz two real-world RESTful services and compare the performance with two state-of-the-art tools, EvoMaster and RESTler. Our results show that foREST can improve the code coverage in all experiments, ranging from 11.5\% to 82.5\%. Besides, our tool finds 11 new bugs previously unknown.