ChatGPT Plus低价代充要凉了:有人吃饱了开始举报

内容分享1天前发布
0 0 0

[安全报告] ChatGPT Plus 订阅漏洞深度解析:一张收据激活无限账号

漏洞概述

我在 iOS ChatGPT 应用的订阅验证流程中发现了一个逻辑漏洞:OpenAI 的后端验证了 Apple Pay 收据的加密真实性,但没有验证购买收据的 Apple ID 是否与接收 Plus 升级的 OpenAI 账户匹配。

这使得一张有效的付费收据可以被重复使用,在任何 OpenAI 账户上激活 ChatGPT Plus,无论原始购买者是谁。

技术背景:预期的正常流程

让我们先看看正常流程应该是怎样的:

  1. 用户在 ChatGPT iOS 应用中发起购买 → App Store 向 Apple ID 收费
  2. Apple 生成一个签名收据(transactionReceipt)并存储在设备本地
  3. ChatGPT 应用将收据 + 当前用户的 auth token 发送到 OpenAI 后端
  4. OpenAI 进行验证:
  5. ✅ 收据签名有效(通过 Apple 的验证端点)
  6. ✅ auth token 属于活跃账户
  7. 不验证:收据中的 Apple ID 是否与此 OpenAI 账户关联

漏洞详情

由于缺少绑定检查,授权逻辑简化为:

有效收据 + 有效 auth token = 授予 Plus

这就像在服务柜台出示一张真实的商店收据——店员验证收据是真的,但不检查你的身份证。

OpenAI 不查 Apple ID 对应关系,拿张收据就能给任意账号开会员。

OpenAI 验票的时候,根本不看这张收据是你 Apple ID 买的,还是隔壁老王 Apple ID 买的。它只看两样东西:

  • 收据合法不合法
  • 你传过来的那个 ChatGPT auth token 是不是活的

收据合法 + token 有效 = 任意账号变 Plus。

什么 Apple ID 绑定、什么账号对应关系,全不查。这就好比你拿着别人的购物小票去柜台领东西,柜员只看小票真假,不看你身份证。

漏洞复现流程(高级概述)

注:为负责任披露,省略详细利用步骤。如需详细信息,可通过安全渠道请求。

第一步:搞一个土耳其区 Apple ID

土耳其区 Plus 标价 499 里拉/月,折人民币大致 85 块。国内定价多少?145 元。差价自己算。

往这个土区 Apple ID 里充好礼品卡,钱备足。

第二步:获取有效的 iOS 收据

通过低价区域的 Apple ID(例如土耳其:约 499 TRY/月)购买 ChatGPT Plus。

在应用自动提交收据之前拦截它(通过本地代理、DNS 重定向或越狱设备上的运行时 hook)。

拦截收据的实际主流玩法有三种:

方法 A:端点本地映射(无需越狱)

用 DNS 劫持或本地代理,把 ChatGPT App 发往 OpenAI 的请求重定向到你自己的本地服务器。

请求里本来就带着 Base64 编码的收据,到了你本地,直接保存下来。

工具:

  • mitmproxy
  • Charles Proxy
  • 自建 HTTPS 代理 + 自签证书

不用越狱,门槛低得令人发指。

方法 B:越狱 + Hook

越狱设备上用 Frida 或者 Flex,直接 hook StoreKit 框架:

  • 截取 SKPaymentTransaction 的 transactionReceipt
  • 或者读取 appStoreReceiptURL 拿收据文件

粗暴直接。

方法 C:Android 路径

用 Xposed Hook,逻辑类似。

App Store 那边照常扣钱,Apple 照常把收据扔到你手机本地沙盒目录里。但由于你的拦截,这张收据没自动飞向 OpenAI,而是老老实实待在本地等你来拿。

第三步:通过 API 重用收据

收据到手,直接往 OpenAI 的订阅接口发请求:

POST https://chat.openai.com/backend-api/subscription/upgrade
Authorization: Bearer <target_account_auth_token>
Content-Type: application/json

{
  "receipt": "<base64_encoded_valid_receipt>",
  "platform": "ios",
  "product_id": "com.openai.chatgpt.plus",
  "device_info": { ... }
}

结果:目标账户获得 Plus 状态,即使收据是由不同的 Apple ID 购买的。

注意,这里的 auth token 是目标用户给你的登录令牌,权限有限,有效期短。你给他充完 Plus,他立刻改密码,你拿着这张收据去充下一个。

影响放大

  • 一张付费收据(土耳其区约 2.5-3 美元)可以在无限账户上激活 Plus
  • 这使得商业化的”Plus 转售”以官方价格的一小部分成为可能,造成收入泄漏和系统滥用
  • 一张土耳其收据 85 块人民币成本,能给无数个账号开 Plus

闲鱼上那些二三十块钱一个月的 GPT Plus 代充,就是这么来的。你以为人家做慈善?人家是拿一张票反复上车。

受影响的组件

  • ChatGPT iOS 应用(所有测试版本:v1.2026.xx)
  • 后端端点:/backend-api/subscription/upgrade
  • iOS 应用内购买收据的验证逻辑

提议的缓解措施

1. 将收据绑定到购买者身份

在收据验证期间,提取 original_purchase_date、transaction_id,关键是 app_item_id / bundle_id,并验证 Apple ID 的加密签名是否与提交会话匹配。

2. 实施收据一次性使用强制

在首次成功激活后将收据标记为”已消费”。

3. 添加设备/账户指纹识别

在订阅时关联 Apple ID、设备标识符(IDFV)和 OpenAI 账户。

4. 监控收据重用

对一样的 transaction_id 或 original_transaction_id 出目前多个 OpenAI 账户中发出警报。

技术含量与信息差

这套流程,技术含量不高,但信息差极高

外面那些收费几千教人”GPT 代充技术”的,教的就是这几步。我今天直接摊开写,省得你们再去交智商税。

OpenAI 的态度

OpenAI 至今没补这个窟窿。不是补不了,是优先级不够,或者说,他们根本不在乎这点订阅收入的漏洞。毕竟大头在企业 API 那边。

三端订阅管理都是交给第三方 API 处理的,iOS 系统框架允许 App 把内购凭据往第三方服务器发,这本是正常开发逻辑。但 OpenAI 在这条链路上偷了懒——或者说,压根没想过有人会卡这个环节。

写在最后

这个漏洞的存在,揭示了几个问题:

  1. 支付验证不能只看”真假”,还要看”归属”
  2. 低价区域套利 + 技术漏洞 = 黑产温床
  3. 大公司的安全优先级往往取决于业务重大性

对于普通用户:

  • ❌ 不要使用代充服务(账号可能被封)
  • ✅ 通过官方渠道订阅
  • ⚠️ 警惕低价诱惑

对于开发者:

  • 支付验证必须包含身份绑定检查
  • 收据应该是一次性的
  • 监控异常使用模式

[Security Report] Apple Pay receipt validation does not bind to purchaser Apple ID – potential subscription bypass – Bugs – OpenAI Developer Community

© 版权声明

相关文章

暂无评论

none
暂无评论...