常见漏洞验证121 条

回调接口验签检查

外部回调(支付、消息、事件推送)需验签与来源校验:检查实现是否校验签名、时间戳与重放。

回调接口验签检查

支付结果通知、消息推送与事件订阅这类回调接口本质上是外部输入边界:接收方必须校验请求来源与完整性,否则任何能访问该地址的人都能伪造一条回调,把订单状态改成已支付或把业务状态改成任意值。检查要点有四:签名校验的实现方式与密钥管理、时间戳窗口与随机数重放防护、来源地址校验(仅作辅助手段)、以及验签失败后的处理路径。最后一条最容易被忽视:验签失败必须拒绝并告警,不能静默放行。

基本信息

检查项签名校验、时间戳窗口、重放防护、失败处理
校验方法实现核查与联调环境测试结合
密钥管理密钥与证书的存放、轮换与访问范围
正确行为验签失败拒绝请求并记录审计与告警

典型使用场景

  • 支付通知:回调决定订单最终状态,伪造即造成资损
  • 退款与对账:外部系统投递的结果直接影响资金账目
  • 第三方登录:授权码与票据的回传校验不严可导致账号冒用
  • 消息与事件订阅:业务状态变更依赖推送,伪造可扰乱流程
  • 内部系统互联:看似内网的回调地址可能被其他系统可达

核查清单

核查清单
1. 回调是否验签:签名算法、密钥来源与证书管理方式
2. 时间戳与随机数窗口:超窗口请求是否被拒绝
3. 重放防护:同一签名重复提交是否被识别并拦截
4. 来源地址或网段校验:是否作为辅助手段而非唯一手段
5. 验签失败的处理与告警:是否拒绝、是否记录、是否通知责任人

检查项与对错做法

检查项正确做法错误做法
身份校验强制验签并校验时间戳仅依赖来源地址白名单
重放防护随机数与时间窗口双校验只校验签名不管重复提交
失败处理拒绝请求并告警记录异常分支放行,先记录后处理
密钥管理独立密钥并定期轮换与业务密钥共用,长期不换
验签逻辑存在但失败路径放行(先通过再记录)是最危险的实现:表面上有校验,实际任何伪造请求都能通过。

易错点

  • 仅依赖来源地址白名单做认证:地址可伪造或经代理转发,不足以作为唯一依据
  • 验签失败放行:异常分支跳出校验后仍继续处理业务是最常见的严重问题
  • 不校验时间戳与随机数:抓到的合法请求可被无限次重放
  • 签名密钥与业务密钥共用:一处泄露即影响多个系统,且无法单独轮换
  • 回调处理未纳入审计:伪造请求与正常请求混在一起,事后无法追溯

数据来源与参考

  • 开放平台回调安全指引(微信/支付宝等)
  • OWASP ASVS V5
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌