看到Nautilus你会想到什么?如果你立刻想到了儒勒·凡尔纳和他的经典作品《海底两万里》,那么祝贺你,你是一名合格的科幻迷!在《海底两万里》中(当然在《神秘岛》里面也出现过),尼莫船长和他的鹦鹉螺号潜艇可以说是代表了那个时代的科幻符号,今天我们要阅读的这篇USENIX Security 2023论文 NAUTILUS: Automated RESTful API Vulnerability Detection 会为大家介绍新一代的“鹦鹉螺”RESTful API测试工具
RESTful API的安全问题和传统的web服务接口一样,涉及到方方面面,下图展示了CVE列表中记录的609个和RESTful API相关的安全漏洞的分类:
在现实中,作者发现,针对RESTful API的漏洞利用,往往是需要联合多个API调用才能触发的。例如下面这个例子,就是WordPress BuddyPress越权漏洞(CVE-2021-21389)的触发流程,可以看到,攻击者需要三步(涉及6个RESTful API调用)才能完成整个攻击。
作者注意到,传统的针对RESTful API的描述文档——OpenAPI specification(OAS,下图是一个示例)中,缺乏对于API之间的依赖关系的描述,因此没法给安全测试工具提供相关的信息。
为了增强安全测试工具的能力,作者提出了一种标记(annotation)流程,为原有的OAS中添加更多的信息,下图是作者设计的annotation流程,其中深绿色部分就是需要加入的内容。具体地,这种annotation为API加入了依赖操作(dep-operation)信息,这样安全测试工具就知道在调用某个API之前,需要提前进行哪些操作了。当然,从论文中看,这种annotation似乎需要一些(专家)人工辅助。
有了这些annotation信息,作者设计了用于RESTful API安全测试的Nautilus
工具,其工作流程如下所示。基于annotation,Nautilus
知道如何合理调用API;同时,它装备了一系列的payload,通过执行payload mutation,生成不同的请求,可以测试XSS、目录遍历、SQL注入等多种典型的web安全漏洞(具体细节可以参考论文的Section 4.4)。
在实验中,作者首先测试了一组共6个web应用(下表),其中前三个是专门为安全测试设计的原型,后三个则是真实世界中的web应用程序。
Nautilus
和4个已知的RESTful API安全测试工具进行了对比,效果如下图所示,可以看出Nautilus
的漏洞检测效果明显高出一筹~
作者还对比了Nautilus
和其他4个工具在检测真实世界CVE上的效果差异。在multi-API这种场景下,明显只有Nautilus
能发现问题(当然这也依赖于manual annotation)
附录还有一个更全面的对比:
最后,我们把原作者的官方宣传文案 【奇安信代码安全实验室又一研究成果入选国际顶会USENIX Security 2023】 里面的总结抄一遍,大家可以比较一下编辑部(AI)和原作者的总结水平孰强孰弱:
-
API组合检测:
Nautilus
旨在发现多个API之间的漏洞,这些漏洞是通过执行多个API操作来利用的。这是一个重要的创新,因为现有工具通常只关注单个API端点。 -
使用OpenAPI规范:
Nautilus
解析OpenAPI规范以了解API端点之间的关系。这使其能够识别可能由不同端点之间的交互引起的潜在漏洞。 -
注释原语:
Nautilus
使用新颖的注释原语来标记操作和参数,以生成逻辑操作序列。这有助于解决现有工具中缺乏正确顺序意识的问题。 -
动态反馈:在测试阶段,
Nautilus
探索可能存在漏洞的API端点,并从动态反馈中自动更新注释。这使其能够适应系统中的变化,并随着时间推移提高其准确性。
论文:https://www.usenix.org/conference/usenixsecurity23/presentation/denggelei
辅助材料:https://sites.google.com/view/nautilus-testing
原文始发于微信公众号(安全研究GoSSIP):G.O.S.S.I.P 阅读推荐 2023-04-14 新“鹦鹉螺”号