SuperAPI AI 工具集

sast-graphql

安全与审计

查看项目

更新于 10-16 02:50

技能介绍

用途

sast-graphql 是一个专注于发现 GraphQL 注入漏洞的安全评估技能。它通过三阶段流程,在代码库中定位并验证用户可控数据是否被不安全地嵌入到 GraphQL 操作文档(查询、变更或订阅字符串)中,从而改变文档结构或文本。

主要能力

该技能能够:

  • 侦察阶段:确认代码库是否使用 GraphQL(通过依赖、schema 文件、服务端路由等),并找出所有使用字符串拼接、插值、格式化或动态组装来构建 GraphQL 操作文档的位置。
  • 批量验证阶段:将候选站点分成每批最多 3 个,并行追踪用户输入是否到达这些动态拼接点,并对每个站点进行分类(易受攻击、可能易受攻击、不易受攻击、需人工审查)。
  • 合并阶段:将所有批次结果整合为一份最终报告,包含执行摘要和按分类分组的详细发现。

该技能明确区分了 GraphQL 注入与其他漏洞类型,例如解析器中的 SQL/NoSQL 注入、通过 GraphQL 参数的 IDOR、查询深度/复杂度 DoS、以及正常的变量绑定。它还提供了易受攻击与安全代码的对比示例(Node.js 和 Python)。

使用方式

该技能以子代理方式运行,分为三个阶段:

  1. 阶段一(侦察):启动子代理,搜索 GraphQL 相关依赖、schema 工件、服务端路由,并查找不安全的文档构建模式。结果写入 sast/graphql-recon.md。
  2. 阶段二(批量验证):在阶段一完成后,读取侦察结果,将候选站点分批(每批最多 3 个),并行启动子代理追踪污点。每个子代理将结果写入 sast/graphql-batch-N.md。
  3. 阶段三(合并):读取所有批次文件,合并为 sast/graphql-results.md,并删除中间批次文件。

使用前提:sast/architecture.md 必须存在。如果不存在,需先运行分析技能。

适用场景

适用于对使用 GraphQL 的代码库进行安全审计,特别是需要检测因动态拼接操作文档而导致的注入漏洞。适用于 Node.js、Python 等多种技术栈,技能会根据项目主要语言选择相应的示例。

限制

  • 不检测解析器中的 SQL/NoSQL 注入、IDOR、查询深度/复杂度 DoS、内省启用等问题。
  • 需要 sast/architecture.md 作为前置条件。
  • 如果代码库未使用 GraphQL,或未发现注入候选点,则跳过后续阶段并输出相应结果。
  • 部分流程可能需要人工审查。