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安全, 漏洞报告, 电商系统, 蓝队分析, 越权漏洞