Shopify GraphQL自省功能开启争议报告
报告摘要
本报告发现Shopify商店前端GraphQL端点启用了GraphQL自省功能,允许未认证用户获取完整的API结构信息,包括查询类型、字段和变更操作。研究员认为这可能通过向未认证用户暴露完整API结构而导致未授权API访问。
Shopify确认GraphQL自省功能是设计预期行为,不被视为安全漏洞。Shopify鼓励安全研究人员使用模式信息来帮助识别真正的安全问题。
技术细节
漏洞发现
研究员在端点https://██████/api/unstable/graphql.json
发现GraphQL自省查询可获取完整模式信息:
|
|
复现步骤
- 访问端点
https://███/api/unstable/graphql.json
- 使用Burp代理捕获请求并发送到Repeater
- 在请求体中插入自省查询
- 响应将显示所有可用的查询操作类型和模式
安全影响
攻击者通过自省查询可获取:
- 所有可用API调用类型
- 变更操作(可用于修改数据)
- 查询字段和类型信息
时间线记录
- 2024年12月7日:ahmednasr1提交漏洞报告
- 2024年12月9日:Shopify团队确认为预期行为,关闭报告
- 2025年8月:双方同意公开披露报告内容
技术讨论
报告展示了具体的GraphQL请求示例,包括创建购物车的变更操作:
|
|
最终结论
Shopify维持其立场,认为GraphQL自省功能是故意启用的设计特性,不属于安全漏洞。公司鼓励研究人员在自建测试商店上进行安全测试,并参考官方GraphQL模式文档进行漏洞挖掘。