PayPal IPN Replay Attack Enables Wallet Balance Inflation 漏洞概述 PayPal IPN v1 处理器 ( ) 缺乏交易去重(deduplication)机制。攻击者可以重放单个合法的 IPN 通知,重复增加钱包余额并无限续订订阅。 核心问题: 当 recurring payment 到达 时,虽然验证了真实性(通过 ),但验证是 (无状态)的。PayPal 会对同一真实数据返回 。 漏洞点: 代码直接查找订阅并增加余额,没有检查 是否已处理过,也没有创建 条目进行去重。相比之下,较新的 和 已正确实现去重。 影响范围 Package: (Composer) Affected versions: Severity: Moderate (5.5 / 10) Impact: 无限钱包余额膨胀: 攻击者可以重放单个合法 IPN 到任意倍数,从而免费访问所有付费内容。 无限订阅续订: 每次重放都会调用 ,无限延长订阅访问权限。 财务损失: 平台运营商失去收入,因为攻击者获得了付费服务但未支付。 修复方案 在 中添加去重逻辑,参考 和 中已有的方法。在处理每个交易之前,记录并检查 。 修复代码示例: 建议将 引用从 迁移到 或 ,并最终弃用 v1 IPN 处理器。 POC (Proof of Concept) 单条重放 (Single replay): 批量重放 (Bulk replay):**