1、支付卡安全概述

各位同学好,我是老周。在安全圈摸爬滚打十几年,经手过的支付系统漏洞少说也有上百个。今天咱们聊聊支付卡安全这个老生常谈却又常谈常新的话题。

说实话,支付卡安全是整个金融安全体系里最基础也最关键的一环。你想想看,每天全球有几十亿笔交易在跑,任何一个小漏洞都可能造成巨额损失。我见过太多因为基础安全没做好而翻车的案例了。

1.1 支付卡产业数据安全标准(PCI DSS)简介

PCI DSS,全称是Payment Card Industry Data Security Standard。说白了,就是Visa、MasterCard这些卡组织联合制定的安全规范。不遵守?那你就别想跟卡组织玩了。

这个标准现在最新的是4.0版本,但我个人习惯还是把3.2.1版本的核心要求记牢。为什么?因为基础要求基本没变过。

PCI DSS六大目标、12项要求(核心摘要)

  • 目标一:构建并维护安全网络
    • 要求1:安装并维护防火墙配置
    • 要求2:不使用厂商默认密码
  • 目标二:保护持卡人数据
    • 要求3:保护存储的持卡人数据
    • 要求4:加密传输中的持卡人数据
  • 目标三:维护漏洞管理计划
    • 要求5:使用并更新防病毒软件
    • 要求6:开发并维护安全系统与应用
  • 目标四:实施强访问控制
    • 要求7:按业务需要限制数据访问
    • 要求8:为每个用户分配唯一ID
    • 要求9:限制物理访问持卡人数据
  • 目标五:定期监控并测试网络
    • 要求10:跟踪并监控所有网络访问
    • 要求11:定期测试安全系统与流程
  • 目标六:维护信息安全策略
    • 要求12:制定并维护信息安全策略

我在项目中遇到过一家电商公司,他们觉得PCI DSS就是走个过场。结果呢?被黑之后发现连持卡人数据的存储都没加密,直接罚了上百万美元。嗯,这里要注意,PCI DSS不是选择题,是必答题。

1.2 常见支付卡类型与交易流程

支付卡类型其实没你想的那么复杂。主流就三种:

卡类型 特点 常见品牌
信用卡 先消费后还款,有信用额度 Visa, MasterCard, American Express
借记卡 直接扣账户余额,实时到账 银联, Visa Debit, Maestro
预付卡 先充值后使用,不记名常见 礼品卡, 储值卡

交易流程呢?我画了个图,你们一看就明白。

支付卡交易核心流程 持卡人 商户 收单行 卡组织 发卡行 ① 提交支付信息 ② 交易请求 ③ 路由转发 ④ 授权请求 ⑤ 授权响应 ⑥ 转发响应 ⑦ 交易结果 ⑧ 完成通知 持卡人侧 商户侧 收单侧 卡组织 发卡侧

这个流程看着简单,但每个环节都可能出问题。我曾经在渗透测试中发现,有些商户直接把卡号明文存在日志里,收单行那边也没做任何脱敏处理。你想想看,这要是被拖库了,后果不堪设想。

1.3 支付卡攻击面分析

攻击面这个词,说白了就是你能从哪些地方下手搞破坏。支付卡的攻击面,我习惯分成三层来看:

支付卡攻击面全景

  • 第一层:物理层攻击面
    • 卡片克隆(磁条数据读取)
    • ATM/POS机侧录
    • 卡片丢失/被盗后的非授权使用
  • 第二层:网络层攻击面
    • 中间人攻击(MITM)截获交易数据
    • Wi-Fi钓鱼获取支付凭证
    • DNS劫持重定向支付页面
  • 第三层:应用层攻击面
    • SQL注入获取持卡人数据库
    • XSS攻击窃取会话令牌
    • CSRF伪造交易请求
    • API接口未授权访问

这里我重点说说应用层。为什么?因为物理层和网络层的防护相对成熟,但应用层漏洞层出不穷。我记得有一次做代码审计,发现某支付网关的退款接口居然没做签名校验。攻击者只要知道订单号,就能任意退款到自己的卡上。嗯,这种低级错误我见过不止一次。

避坑指南

我曾经在测试一个大型电商平台时,发现他们的支付回调接口只校验了HTTP Referer头。这玩意儿太容易伪造了。正确的做法是:必须使用服务端签名验证,而且签名密钥要定期轮换。

警告

千万别以为用了HTTPS就万事大吉。我见过太多案例:HTTPS加密了传输层,但应用层的数据根本没做任何保护。卡号、CVV、有效期明文传输到后端,这跟裸奔有什么区别?

最后说一句,支付卡安全不是某个单一环节的事。从持卡人输入卡号的那一刻起,到发卡行返回授权结果,每个节点都是潜在的攻击点。做渗透测试的时候,我习惯把每个环节都过一遍,不放过任何一个可能被利用的缝隙。


公众号:蓝海资料掘金营,微信deep3321