← 最新论文
💻 computer science

GraphQLer: Enhancing GraphQL Security with Context-Aware API Testing

GraphQLer 是一个开源的自动化安全测试框架,它通过从实时架构中构建类型依赖图来合成多步漏洞链,从而增强 GraphQL API 的安全性,在检测如 IDOR、UAF 和注入漏洞等复杂的、依赖状态的缺陷方面,其表现优于 ZAP 和 EvoMaster 等现有工具。

原作者: Omar Tsai, Jianing Li, Tsz Tung Cheung, Lejing Huang, Hao Zhu, Jianrui Xiao, Iman Sharafaldin, Mohammad A. Tayebi

发布于 2026-08-05
📖 1 分钟阅读☕ 轻松阅读

原作者: Omar Tsai, Jianing Li, Tsz Tung Cheung, Lejing Huang, Hao Zhu, Jianrui Xiao, Iman Sharafaldin, Mohammad A. Tayebi

原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明

想象一下,互联网是一个巨大且繁忙的城市,不同的计算机程序(应用)在这里不断地相互交流以分享信息。多年来,这些对话一直遵循着严格且可预测的地图:如果你想要一张图片,你就去请求“图片”文件夹;如果你想要一条消息,你就去请求“消息”文件夹。这就像是在一个菜单固定、每道菜都有固定名称和位置的餐厅里点餐。但最近,一种被称为 GraphQL 的新对话方式变得流行起来。GraphQL 不再是固定的菜单,而更像是一台神奇的、可以变形的自动售货机。你可以要求任何你想要的东西,它会尝试即时为你构建出来。问题在于,正因为这台机器如此灵活,它有时会忘记检查站在它面前的人是谁。一台普通的售货机可能只会在有人投币时才给苏打水,但这台神奇的售货机可能会因为你用正确的方式提问,而不小心递出一本私人日记或一个银行账户。这就是安全研究人员介入的地方,他们试图研究如何通过某种方式诱导这台机器泄露秘密,而又不会真正破坏这座城市。

你即将阅读的论文介绍了一位新的数字侦探——GraphQLer。请记住,大多数安全扫描器就像是笨拙的游客,他们走到售货机前,随机按下一个按钮,然后看看会发生什么。如果他们按下“苏打水”并得到了苏打水,他们就离开了;如果他们按下“水”却得到了一个错误提示,他们就放弃了。他们永远意识不到,为了获得“秘密藏品”,你必须先按“买苏打水”,然后按“获取收据”,最后再按“秘密藏品”。旧的工具太笨了,无法将这些点连接起来;它们孤立地测试每一个按钮,从而错过了破解系统所需的复杂序列。

GraphQLer 则不同。它就像一位先研究机器蓝图(“模式/schema”)以了解按钮是如何连接的侦探。它建立了一张心理地图,显示“按钮 A”会创建一个新项目,“按钮 B”会删除它,而“按钮 C”即使在它被删除后可能仍然能够看到它。有了这张地图,GraphQLer 不再只是随机按按钮;它会创建特定的动作链。它模拟了一个场景:用户购买一件物品,然后试图偷走它;或者删除它,然后再次尝试读取它。

研究人员在 21 个不同的真实世界和模拟真实的 API(即被测试的计算机系统)上测试了这个新侦达。他们发现 GraphQLer 相比旧工具有了巨大的进步。虽然现有的最佳工具只能成功触及大约 29% 的机器按钮,但 GraphQLer 成功触及了 85.52% 的按钮。更重要的是,在寻找棘手的安全漏洞方面,旧工具发现的复杂多步问题数量为。然而,GraphQLer 找到了所有五个确认的“IDOR”漏洞(即仅仅通过更改一个数字就能看到别人的东西),甚至捕捉到了一个“释放后使用/Use-After-Free”漏洞(即在文件被删除后仍能看到它)。

在对一个金融系统(作者为了匿名将其称为“FinServ”)进行的现实测试中,GraphQLer 在不需要任何密码或秘密文档的情况下发现了八个潜在的安全缺陷。它甚至发现了能让系统崩溃并泄露其内部代码的方法,这在安全领域是大忌。论文还展示了 GraphQLer 可以重现一个流行的开源平台(名为 Saleor)中的已知漏洞,证明了它在已知存在缺陷的系统上同样有效。

作者非常谨慎地指出,虽然他们的工具在发现这类特定连锁反应漏洞方面表现出色,但它并不是解决一切问题的万能灵药。在一些非常特定且复杂的场景中(即机器需要同时具备多个信息才能运作时),它仍然会感到吃力。但对于绝大多数使用这种灵活 GraphQL 技术的现代应用来说,GraphQLer 证明了你不能再仅仅逐一测试按钮。你必须理解机器正在讲述的故事,只有这样,你才能发现情节中的漏洞。

您所在领域的论文太多了?

获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。

试用 Digest →