一张已经过期的信用卡,在收银台前还能不能完成支付?美国马萨诸塞大学阿默斯特分校的研究人员给出的答案是:在某些情况下,可以。
这项被命名为“Zombie Card”(僵尸卡)的研究,在2026年8月召开的第35届USENIX安全研讨会上正式发布。研究团队展示了一种基于NFC(近场通信)的中继攻击方式,能够让已过期的Visa非接触式信用卡“复活”,并在多家美国银行的POS终端上完成真实交易。
![]()
过期检查的“软肋”
研究团队发现,EMV非接触支付中关于卡片过期的校验,本质上是一个由终端执行的交易策略检查,而非卡片本身内置的加密事实。芯片上存储的私钥永远不会过期,用于离线数据认证的证书也往往在卡片印刷日期之后仍然有效,这是为了平滑换卡期间的过渡。真正决定卡片是否过期的,是一个名为“Application Expiration Date”(应用过期日期)的数据字段,终端以明文读取并在本地进行校验。
这意味着,只要能够篡改这个字段,终端就会认为卡片仍在有效期内。
两台手机搭建的中继攻击
研究人员Raja Hasnain Anwar、Gerard DeCunha和Muhammad Taqi Raza使用两台支持NFC的Android手机搭建了一个中间人攻击链路。一台手机在POS终端附近模拟卡片,另一台在实体卡片附近模拟终端,两者通过Wi-Fi通信。这套设备能够在交易数据检索阶段实时拦截并重写APDU(应用协议数据单元)数据,而所用工具仅仅是普通的商用智能手机。
测试覆盖了四种EMV内核:Kernel 2(Mastercard)、Kernel 4(American Express)、Kernel 6(Discover)和Kernel 3(Visa)。其中,Kernel 2、4和6均能检测到数据篡改,因为这些内核中与过期相关的数据被加密绑定到签名记录或哈希交易数据中,任何在途修改都会破坏签名验证并终止交易。
Visa内核的独特漏洞
Kernel 3(Visa)成为唯一的例外。其过期字段被排除在签名动态应用数据之外,因此将过去的日期翻转为未来日期,可以绕过终端的本地检查而不破坏任何签名。更严重的是,Kernel 3会向发卡行转发一个全零的“Terminal Verification Results”(终端验证结果)字段,银行完全无法得知终端的本地验证曾被操纵。
再加上卡片侧的一些标志位可以强制交易在过期检查失败时仍走“在线”通道,一条完整的攻击路径就此形成:一张已过期但主账号(PAN)仍然有效的卡片,可以畅通无阻地到达发卡行的授权系统。
真实商户验证:五家银行结果分化
研究团队在实验室中使用SumUp终端验证了攻击的有效性,随后在零售店和杂货店等真实商户环境中进行了野外测试,涉及五家美国主要银行。测试使用的是研究人员自己已过期和已更换的卡片,以避免对第三方造成损害。
测试结果因发卡行而异:一家银行批准了金额最高达500美元的“僵尸卡”交易,因为它只验证账户和加密报文,而不验证具体的卡片实例;另一家银行则持续拒绝交易,并提示使用替换卡。值得注意的是,即使是一张未过期的卡片,在某些情况下也存在类似的风险敞口。
这项研究揭示了一个长期被忽视的安全假设:支付行业默认“过期卡片不能刷”是理所当然的,但底层实现却将这个关键决策交给了终端的一个明文字段。当攻击者能够在中途修改这个字段时,过期卡片与有效卡片之间的边界,远比想象中模糊。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.