teteco/CVE-2026-52217-VTEX-Checkout-CrossTenant-IDOR
GitHub: teteco/CVE-2026-52217-VTEX-Checkout-CrossTenant-IDOR
该项目披露了 VTEX Checkout 服务中因缺失租户级对象授权校验而导致的跨租户 IDOR 漏洞(CVE-2026-52217),涵盖漏洞详情、影响分析与复现步骤。
Stars: 0 | Forks: 0
# VTEX Commerce Platform (Checkout Service) — 跨租户 OrderForm 访问 (IDOR / 敏感信息泄露)
**发现者:** Theo Cia
**CVE:** CVE-2026-52217
**状态:** 已由 MITRE 分配 / 已报告
**发现日期:** 2026 年 5 月
**影响:** OrderForm 数据的跨租户泄露(客户 PII 及附件)
**受影响产品:** VTEX Commerce Platform — Checkout Service (`chk`)
**受影响版本:** v2.367.3
## 概述
VTEX Checkout 公共 API 存储 `OrderForm` 对象时仅以其 `orderFormId` 作为键,**没有将该对象与其所属的租户(VTEX 账户)或创建它的已验证用户绑定**。因此,以下 endpoint:
- `GET /api/checkout/pub/orderForm/{orderFormId}`
- `POST /api/checkout/pub/orderForm/{orderFormId}/attachments/*` (例如 `clientProfileData`, `shippingData`)
会向**任何**提供了有效 `orderFormId` 的请求提供数据或修改其 OrderForm,无论它属于哪个租户或用户。这导致了两种滥用场景:在截然不同的 VTEX 账户之间进行**跨租户**读/写,以及在一个账户内对其他已验证客户的购物车进行**跨用户**读/写。基于会话的 `CheckoutOrderFormOwnership` cookie 和 `userProfileId` 绑定均无法阻止这种情况。
## 影响
获取到受害者 `orderFormId` 的攻击者可以:
- **读取**受害者的结算 PII:电子邮件、名字/姓氏、政府证件(CPF/CNPJ)、电话和收货地址。
- **覆盖**受害者的 `clientProfileData` / `shippingData` —— 例如,在受害者付款的同时,将受害者订单的配送地址重定向到攻击者控制的地址(订单/电子商务欺诈;税务单据针对受害者开具,而货物则发送给攻击者)。
- **跨越租户边界**执行上述操作(在账户 B 中通过身份验证的会话 —— 或匿名客户端 —— 对在账户 A 中创建的 OrderForm 进行操作)。
### 影响变体
- **信息泄露(如 CVE 中反映):** `AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:N` = 7.7。
- **完全结算劫持(读 + 写 + 受害者付款):** `AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:N` ≈ 8.x。
## 漏洞详情
- **受影响组件:** Checkout Service (`chk`) v2.367.3
- **受影响 endpoint:**
- `GET /api/checkout/pub/orderForm/{orderFormId}`
- `GET /api/checkout/pub/orderForm/{orderFormId}/attachments/*`
- **漏洞类别:** 失效的对象级别授权 / IDOR
(CWE-639: Authorization Bypass Through User-Controlled Key) 导致了
CWE-200 (Exposure of Sensitive Information)
- **OWASP API Security Top 10:** API1:2023 — Broken Object Level Authorization
- **攻击向量:** 远程,已验证(任意租户中的任意有效会话)
- **根本原因:** 服务在授权请求时仅基于会话是否
通过验证,但从未检查该会话的租户是否拥有
所请求的 OrderForm。
## 复现步骤
1. 在攻击者控制的租户(租户 A)中验证一个会话。
2. 获取属于另一个不同租户(租户 B)的有效 `orderFormId`。VTEX
OrderForm 标识符是在结算期间生成的 token,可以通过
URL、referrer、日志或共享链接观察到。
3. 使用租户 A 的已验证会话请求租户 B 的 OrderForm:
GET /api/checkout/pub/orderForm/{orderFormId_of_Tenant_B}
Cookie:
Checkout Service 在不验证租户
所有权的情况下返回了租户 B 的 OrderForm。
4. 以相同方式检索关联的附件:
GET /api/checkout/pub/orderForm/{orderFormId_of_Tenant_B}/attachments/*
Cookie:
捕获的请求和响应位于 `Poc/` 文件夹中。
## 披露时间线
- **2026 年 5 月:** 发现并报告漏洞。
- **2026-05-11:** 向 MITRE 提交了 CVE 请求。
- **CVE-2026-52217:** 已由 MITRE 分配。
## 联系方式
Theo Cia
标签:API安全, IDOR, JSON输出, Web安全, 漏洞报告, 电商系统, 蓝队分析, 越权漏洞