基于Mastercard-Visa混合的银行卡品牌混淆攻击

阅读量208842

|

发布时间 : 2021-08-24 14:30:17

x
译文声明

本文是翻译文章,文章原作者 David Basin, Ralf Sasse, and Jorge Toro-Pozo,文章来源:usenix.org

原文地址:https://www.usenix.org/system/files/sec21fall-basin.pdf

译文仅供参考,具体内容表达以及含义原文为准。

 

大多数 EMV 交易需要发卡机构的在线授权。即商家的支付终端通过支付网络向发卡机构发送授权请求,该网络通常由Visa或万事达卡等品牌的公司运营。本文表明,从终端的角度来看,有可能导致卡品牌和支付网络之间的不匹配。由此产生的银行卡品牌混淆攻击(Card Brand Mixup Attack)具有严重的安全后果。特别是,它使攻击者能够使用受害者的万事达非接触式卡购买支付昂贵的商品,而无需知道卡的 PIN 码。

具体来说,攻击者欺骗终端相信正在使用的卡是 Visa 卡,然后应用最近在 Visa 上报告的 PIN 绕过攻击。本研究已经构建了一个 Android 应用程序并成功地使用它对 Mastercard 借记卡和信用卡的交易进行了这种攻击,包括使用 Maestro 借记卡进行的超过 400 美元的交易。最后扩展了 EMV 非接触式协议的形式化模型,以对发现的问题进行机器检查修复。

 

0x01 Introduction

全球有超过 33 亿张 Visa 信用卡和借记卡在流通。在万事达卡品牌下(不包括 Maestro 和 Cirrus 产品),有超过 20 亿张银行卡。这两家公司与 Europay 一起是 EMV 的创始人,EMV 是店内智能卡支付的事实上的协议标准。美国运通、JCB、Discover 和银联等其他公司也加入了 EMV 联盟。

大额 EMV 交易需要发卡机构的在线授权。为此,支付终端向发卡机构发送授权请求,携带交易细节和卡根据这些细节计算的加密消息验证码 (MAC,Message Authentication Code)。收到后,发卡机构会执行各种检查,包括相关帐户是否有足够的资金以及 MAC 是否正确。虽然这些检查为持卡人和商户提供了加密可验证的保证,但人们必须了解整个支付系统的属性,包括终端和发卡行交换请求和响应的过程。

上图显示了在线授权过程的通信流程,涉及四方:(1)支付终端; (2) 商户收单行,即代表商户处理卡支付的银行或金融机构; (3) 连接收单机构和发卡机构的支付网络; (4) 发行者本身。有多种支付网络,例如 Visa 或 Mastercard 网络,收单行选择授权请求发送到的机制称为路由。通常,路由基于支付卡的品牌。例如,如果卡是 Visa 品牌的,则授权请求将路由到 Visa 支付网络。

支付终端可以从交易期间卡提供的不同数据对象确定卡品牌。这些对象包括主帐号 (PAN) 和应用程序标识符 (AID)。从 PAN(通常称为卡号)中,可以从前导数字推断出卡品牌。例如,如果 PAN 以 4 开头,那么它就是一张 Visa 卡,表示该卡支持的 EMV 应用程序(例如,Visa Electron 或 V Pay)的 AID 中,可以从称为注册应用程序提供商标识符的共享前缀推断出卡品牌,该标识符通常是一个 10 位数的值( 5 个字节)。

在本文中展示了可以欺骗终端,进而欺骗收单行,使其接受具有指示不同卡品牌的 PAN 和 AID 的非接触式交易。具体而言,本研究已经发现了一种中间人攻击,该攻击诱使终端使用万事达卡完成 Visa 交易。本文的攻击称之为银行卡品牌混淆,具有灾难性的后果。特别是,它允许攻击者在不输入 PIN 的情况下使用受害者的万事达卡支付昂贵的商品。该攻击有效地将卡变成了 Visa 卡,然后应用最近的 PIN 绕过攻击。换句话说,万事达卡也可以绕过 PIN 码,到目前为止,万事达卡被认为可以防止未经授权的购买需要输入卡所有者的秘密 PIN 码。

这种新的攻击滥用了 EMV 非接触式协议的两个基本缺点:(1) 缺乏对终端卡品牌的身份验证,以及 (2) 攻击者可以根据从非 Visa 卡,包括发卡机构授权交易所需的密码证明。已经构建了一个概念验证 Android 应用程序,并成功地使用它来绕过万事达卡信用卡和借记卡交易的 PIN 验证,包括两张 Maestro 借记卡和两张万事达信用卡,均由不同银行发行。其中一笔交易金额超过 400 美元。

 

0x02 Background

A.Visa的中继攻击和PIN绕过

尽管刷卡支付的体验不可否认,但非接触式支付技术仍面临许多安全问题。支付终端与卡进行无线通信,攻击者也可以。特别是,近场通信 (NFC,Near Field Communication) 是非接触式支付使用的通信技术,它允许任何合适的支持 NFC 的设备与非接触式卡进行通信并进行欺诈交易。虽然 NFC 信号的范围通常只有几厘米,但它可以通过中继攻击扩展到更大的范围。中继攻击者使用两个无线连接的移动设备,使受害者的卡与远程支付终端进行交易。有关图形表示,请参见下图。

然而,中继攻击对攻击者来说似乎并不有利可图,因为它们可能仅适用于小额购买(例如,在大多数欧洲国家低于 25 欧元),因为需要卡的 PIN 以进行更高的交易金额。然而在之前的工作中,发现了一种中间人攻击,它不仅可以让攻击者进行中继攻击,还可以绕过 PIN 使用 Visa 卡进行非接触式交易(演示在 https://youtube/JyUsMLxCCt8 )。

在技术层面上,这种攻击只是将卡交易限定符 (CTQ,Card Transaction Qualififiers) 设置为值 0x0280。 CTQ 是从卡传输到终端的数据对象,并指示后者必须使用哪种持卡人验证方法 (CVM,Cardholder Verifification Method) 进行交易。 CTQ 值 0x0280 告诉终端不需要 PIN 验证,并且持卡人已在消费者的设备上进行了验证。导致这种攻击的 Visa 协议中的缺陷是缺乏对 CTQ 数据对象的身份验证。这种攻击不适用于万事达卡协议,因为与 Visa 协议相比,该卡(缺乏)对消费者设备上持卡人验证的支持受到加密保护,不会被修改。

B.EMV 非接触式协议

EMV 的非接触式交易规范包含超过 1,200 页的文档。在本节中总结了该规范。将总结分为非接触式交易的四个重叠阶段,并在适用的情况下简要指出本文攻击利用的潜在安全缺陷。

(1)应用选择

使用六个 EMV 非接触式协议之一执行交易。每笔交易都从应用程序选择过程开始,其中终端发出 SELECT 命令,卡为支持的应用程序(也称为内核或协议)提交应用程序标识符 (AID,Application Identififier)。根据收到的 AID,终端激活交易的内核,它是以下之一:

• 用于万事达卡 AID 的内核 2,

• 用于签证援助的内核 3,

• 用于美国运通 AID 的内核 4,

• 用于 JCB AID 的内核 5,

• 用于发现 AID 的内核 6,

• 银联AID 内核7。

与本文工作最相关的内核是万事达卡,在下图中对其进行了概述。

(2)离线数据认证

在内核被激活并通过第二个 SELECT 命令向卡宣布后,卡请求处理数据对象列表 (PDOL,Processing Data Object List),它指示卡为协议所需的一些特定于交易的数据对象。这些数据对象包括但不限于交易金额、终端的国家代码和终端生成的随机数。

使用 GET PROCESSING OPTIONS 命令,终端向卡提供请求的 PDOL 数据。后者使用应用程序交换配置文件 (AIP,Application Interchange Profifile) 和应用程序文件定位器 (AFL,Application File Locator) 进行响应。 AIP 将卡的功能告知终端,而 AFL 是终端用于使用 READ RECORD 命令请求卡的静态数据(也称为记录)的数据对象。这些记录包括:

• 主要数据帐号,例如卡号(称为主要帐号)、卡的有效期以及支持的CVM 列表;

• PKI 数据,例如卡的公钥(PK,Public Key)证书、发卡机构的PK 证书以及证书颁发机构(CA,Certifificate Authority)的PK 索引;

• 处理和风险数据,例如第一个和第二个卡风险管理数据对象列表(分别为 CDOL1 和 CDOL2,Card Risk Management Data Object List.),通常包括 PDOL 和其他特定于交易的数据。

此时,终端对卡进行密码验证。此过程称为离线数据身份验证 (ODA,Offlfline Data Authentication),并使用以下三种方法之一:

1.静态数据认证 (SDA,Static Data Authentication):发卡机构在卡的静态数据上传输签名,例如主帐号 (PAN,Primary Account Number)、卡的到期日期和 AIP。此签名称为签名静态身份验证数据 (SSAD,Signed Static Authentication Data),在生产过程中生成并存储在卡上。

2.动态数据认证(DDA,Dynamic Data Authentication):在这种方法中,终端发送带有动态数据对象列表(DDOL,Dynamic Data Object List)作为有效载荷的INTERNAL AUTHENTICATE命令。 DDOL 是一个数据对象,必须包含终端的新号码,称为不可预测号码 (UN,Unpredictable Number)。该卡回复签名动态认证数据 (SDAD, Signed Dynamic Authentication Data):在其自己的新号码 NC 和 DDOL 上的签名。

3.组合动态数据认证(CDA,Combined Dynamic Data Authentication):该方法也涉及SDAD,但在签名中包含额外的交易数据,例如金额。如果终端的 GENERATE AC 命令要求,则不使用内部验证命令,而是稍后由卡提供 SDAD。这种 ODA 方法按时间顺序实际上属于交易的另一个阶段,称为交易授权。

选择的 ODA 方法通常是上述列表中终端和卡都支持的最后一种(也是最强的一种)。卡支持的 ODA 方法在 AIP 中编码。

(3)持卡人验证

持卡人验证方法 (CVM) 如下:

1.在线PIN:终端将在终端键盘上输入的密码加密后发送给发卡机构进行验证。

2.消费设备CVM:持卡人验证在消费设备上进行。此方法主要用于 Google Pay 和 Apple Pay 等移动支付应用程序,通过指纹或面部识别等生物识别技术验证持卡人。

3.纸质签名:持卡人(用笔)在购买收据上签名,收银员对照银行卡背面的物理签名进行核对。

如果适用,通常当金额高于 CVM 要求的限额时,终端通过选择上述三种方法中的一种(或两种)来验证持卡人。选择取决于卡的受支持 CVM 列表(如果卡提供)。如果未提供此 CVM 列表(例如,在 Visa 交易中),则终端建议在线 PIN 验证,并且该建议在终端交易限定符 (TTQ) 或类似数据对象中进行编码,具体取决于内核。 TTQ 通常是 PDOL 的一部分。与之前的 PIN 绕过攻击特别相关,因此这次新攻击是消费者设备 CVM (CDCVM,Consumer Device CVM) 。关于如何以及是否使用 CDCVM,内核可以分为两组:

Visa 组由 Visa、Discover 和银联内核组成,其中该卡对 CDCVM 的支持通过加密未受保护的 CTQ 或类似数据对象向终端宣布,具体取决于特定内核。Mastercard 组由 Mastercard、Amer ican Express 和 JCB 内核组成,其中该卡对 CDCVM 的支持通过加密保护的 AIP 和可能的附加数据对象向终端宣布,具体取决于特定的内核。

之前的 PIN 绕过攻击针对的是 Visa 组中的卡,就其提供的保护而言,Visa 组比 Mastercard 组弱。虽然 CDCVM 不适用于实体卡,但攻击者可以通过欺骗终端接受此 CVM 来使用受害者的实体卡进行购买来滥用它。这里的关键点是,每当攻击者让终端相信 CDCVM 已成功执行时,后者错误地假设实际验证已委托给外部设备,因此不会要求输入 PIN。这就是之前的攻击所利用的缺陷的本质。

本研究的新攻击也利用了消费设备 CVM,但结合了 EMV 应用程序选择的缺陷。因此,这种攻击的目标是可能受到更好保护的万事达卡组中的卡。

(4)交易授权

交易授权是通过让卡计算和传输应用密码 (AC,Application Cryptogram) 来实现的。这是一个基于 MAC 的交易加密证明,通过交易细节、AIP 和应用交易计数器(ATC,在每次交易时递增)计算得出。除了依赖于内核的 AC 和其他数据外,卡还传输:

• 密码信息数据(CID,Cryptogram Information Data),它对请求的授权类型进行编码;

• 应用交易柜台(ATC,Application Transaction Counter);

• 签名动态身份验证数据 (SDAD),如果在命令负载中请求了 CDA;

• 发行人申请数据 (IAD,Issuer Application Data),其中包含传输给发行人的专有申请数据。

卡的计算(以及发卡方的验证)使用会话密钥 s,该密钥源自 ATC 和仅发卡方和卡知道的对称密钥 mk。因此,终端无法验证 AC。交易可以由终端离线授权,由发卡行在线发送授权,或由卡离线拒绝。选择取决于多种因素,包括终端和卡对交易细节进行的检查,例如金额、货币(交易与卡)、国家(交易与发卡机构)以及连续离线交易的限制数量。最常见的交易授权类型是由发行人在线进行的。

对于使用 Visa 组内的内核执行的交易,AC 在卡对 GET PROCESSING OPTIONS 的响应中发送。通常,不执行离线数据验证过程,也不使用 GENERATE AC 命令。对于 Mastercard 组中的那些内核,AC 是响应 GENERATE AC 命令而传输的。如果交易要由发行人在线授权,则 AC 称为授权请求密码 (ARQC,Authorization Request Cryptogram),CID 等于 0x80。实际授权来自终端和发行者之间的请求-响应交换。终端的请求携带 ARQC,发行者的响应编码在授权响应代码(ARC,Authorization Response Code)中。 EMV 未进一步指定此交换。

如果终端离线接受交易,则 AC 称为交易密码 (TC,Transaction Cryptogram),在这种情况下,CID 等于 0x40。此外,假设终端已经在离线数据认证阶段验证了交易。交易也可以离线拒绝,在这种情况下,AC 称为应用程序身份验证密码 (AAC,Application Authentication Cryptogram),CID 等于 0x00。请注意,AID 不会通过卡向终端进行验证。也就是说,终端没有密码证明卡支持它在应用程序选择阶段公布的 AID。事实证明,这是攻击所利用的新的、基本的安全缺陷。另请注意,EMV 没有指定任何机制来将卡的 PAN 与广播的 AID 相匹配。

 

0x03 PIN Bypass via Card Brand Mixup

A.威胁模型

针对这次攻击和后文描述的形式化分析所考虑的威胁模型如下:

1.攻击者可以访问受害者的卡。

2.攻击者在卡和终端之间的无线信道上具有主动(所谓的Dolev-Yao)攻击者的能力。也就是说,攻击者可以在该通道上读取、阻止和注入消息。

3.支付终端和银行基础设施之间的通道是安全的,因为它满足真实性和保密性。

该模型在实践中是现实的。攻击者可以访问丢失或被盗的受害者卡。实际上,在实践中,仅在物理上靠近受害者的卡(几厘米内)就足够了。此外,使用支持 NFC 的标准智能手机可以对无线信道进行主动中间人攻击。

B.攻击描述

对于支付终端执行万事达卡内核的交易,无法绕过 PIN 验证。根据该内核的规范,AIP(特别是字节 1 的第 2 位)是唯一指示卡支持设备上持卡人验证的数据对象。因此,修改 AIP 将导致交易被拒绝,因为它是使用卡的 PK 证书、应用程序密码 (AC) 和签名动态身份验证数据 (SDAD) 进行身份验证的。已经用几张卡验证了这一点。

与 AIP 不同,卡的应用标识符 (AID) 不受保护。事实上,AID 仅在 SELECT 命令交换期间使用。这些交换完成后,终端根据从卡上接收到的AID激活相应的内核。例如,如果首选 AID(或第一个,取决于终端的选择方法)是 AIDVisa = 0xA0000000031010,则终端激活 Visa 内核。如果 AID 改为 AIDMastercard = 0xA0000000041010,则终端激活 Mastercard 内核。

由于缺乏对 AID 的认证,攻击者可以恶意替换它们,从而在终端上激活所需的内核。这是攻击利用的基本安全缺陷。上图显示了攻击的概述,下面是分步说明:

1.激活Visa内核:终端首先激活Visa内核。为此,攻击者应用了刚才描述的技巧,即用 AIDVisa 替换卡的合法 AID。

2.请求处理选项:在协商 AID 后,攻击者从卡接收处理数据对象列表 (PDOL) 的请求(即标签和长度)。攻击者将此请求转发到终端,并添加对终端交易限定符 (TTQ,Terminal Transaction Qualififiers) 和 Visa 内核指定的所有其他处理数据对象的请求。攻击者的请求中还包括万事达内核指定的First Card Risk Management Data Object List (CDOL1)所引用的数据对象,通常是终端类型(TT,Terminal Type)和持卡人验证方法结果(CVMR,Cardholder Verifification Method Results)。

3.运行万事达卡会话:一旦攻击者从终端接收到 GET PROCESSING OPTIONS,攻击者就会运行与卡的万事达卡会话。该步骤不涉及终端。子步骤如下:

​ (a) 攻击者构建并向卡发送 GET PROCESSING OPTIONS 命令以及卡请求的 PDOL 数据,该数据从终端的命令有效载荷中填充。该卡使用应用程序交换配置文件 (AIP) 和应用程序文件定位器 (AFL) 响应攻击者的命令。

​ (b) 攻击者使用收到的 AFL 继续读取卡的记录。收集的相关记录是 PAN、卡的到期日期、发卡行国家代码、应用程序使用控制以及 CDOL1 标签和长度。

​ (c) 攻击者构建并向卡发送GENERATE AC 命令,其载荷是CDOL1 数据,其中填充了从终端的GET PROCESSING OPTIONS 命令的载荷中解析出的PDOL 数据。 CDOL1 通常是 PDOL 的超集。如果卡支持 CDA(即 AIP 字节 1 的第 1 位已设置),则该命令应请求 CDA。此外,必须分别清除和设置命令参考控制参数(即字节 3)的第 7 位和第 8 位。这告诉银行卡正在请求 ARQC。

​ (d) 根据卡对 GENERATE AC 命令的响应,攻击者收集 CID、ATC、IAD 以及 AC 或 SDAD,具体取决于是否请求了 CDA。如果发送 SDAD,则攻击者必须使用卡的公钥 (PK) 提取 AC。使用收到的银行卡记录,攻击者使用以下步骤检索银行卡的 PK:

​ i.从 CA 的索引中检索 CA 的 PK,

​ ii.使用 CA 的 PK 从颁发者的 PK 证书中检索颁发者的 PK,

​ iii.使用发行人的 PK 从卡的 PK 证书中检索卡的 PK。

4.PIN绕过:此时对Visa 进行PIN 绕过攻击。也就是说,攻击者注入一个值为 0x0280 的 CTQ 数据对象,它指示终端不需要在线 PIN 验证并且执行了消费设备 CVM。攻击者与 CTQ 一起提供 AIP、值为 0x18010100 的人工 AFL、AC、IAD 以及 Visa 内核指定的所有其他数据对象。

5.传输记录:响应终端的 READ RECORD 命令,由于人工 AFL 为 0x00B2011C00,攻击者回复 PAN、到期日期、应用程序使用控制 (AUC,Application Usage Control) 和发行国。

C.实施攻击

为了演示PIN 绕过攻击,本研究开发了一个概念验证 Android 应用程序,包含大约 3,700 行 Java 代码。在商家方面,使用了 SumUp 商业化的支付工具包:一家获得英国金融行为监管局许可的 EMV 和 PCI DSS(支付卡行业数据安全标准)认证公司。该套件售价约 50 美元,包括一个读卡器,可用于接触式和非接触式卡,以及可用于 iOS 和 Android 设备的后端移动应用程序。 SumUp 读卡器通过 PCI PTS(支付卡行业 PIN 交易安全)认证。下图显示了测试环境的组件。

本文的攻击是使用两部 Android 手机实现的,通过使用 TCP/IP 服务器客户端通过 WiFi 通信构建的中继通道连接。一部手机以 POS 模拟器模式运行应用程序(上图中的设备 4),另一部手机以卡模拟器模式运行应用程序(上图中的设备 3)。两台设备都必须支持 NFC 并运行 Android 4.4 KitKat(API level 19)或更高版本。此外,Card Emulator 设备必须支持 Android 的基于主机的卡模拟,以便手机可以启动由应用程序实现的 NFC 支付服务。实际的中间人功能在 POS 仿真器设备上运行(尽管此选择无关紧要),卡仿真器充当中继通道的代理。

使用应用程序成功地绕过了使用四张不同卡进行交易的 PIN 输入:两张万事达信用卡和两张 Maestro 借记卡。可以在 https://emvrace.github.io/ 中找到攻击的视频演示和其他信息。本文实验结果总结在上表中。其中一些交易是使用非 Visa 卡通过 Google Pay 和 Apple Pay 应用程序执行的。此类交易不需要 PIN 验证,因此不需要绕过,但它们展示了对 Visa 内核的不真实使用。

这里的关键是上表中的交易都是由发行人在线授权的。此外,除了终端卡交互之外,这没有任何对抗性干预,尽管终端和发卡行之间对为交易选择的 AID 有不同的看法。 EMV 协议没有明确规定将哪些交易数据发送给发行人进行授权。显然,由于攻击是可能的,AID 和任何其他内核识别数据要么不发送,要么不由发行者检查。无法确认终端中的所有 EMV 实施都是这种情况。

卡品牌组合表明,接受 Visa 卡的商家(尤其是他们的终端)也可能被愚弄接受其他 EMV 卡品牌,例如万事达卡,即使他们通常不会接受它们。请注意,攻击甚至可能与商家勾结以逃避税收或费用。攻击者可能利用卡品牌混淆攻击的另一种情况如下。他们可能会将自己的万事达品牌卡转换为 Visa 进行高价值交易,然后要求报销,声称终端故障或欺诈,理由是他们没有 Visa 卡。为了支持他们的索赔,在购买收据上将打印“Visa”标签和 Visa AID,这在仔细审查下看起来很可疑。

可用性和范围:攻击需要最少的硬件来执行,即两部支持 NFC 的 Android 手机,售价不到 300 美元。这对攻击者来说是一次性投资,当他们可以使用自己的手机时,甚至可能是不必要的。此外,这种硬件的使用并不显眼,因为在支付过程中只需看到一部手机,而且很容易被店员发现,因为应用程序的外观与 Google Pay 和 Apple Pay 等合法支付应用程序非常相似。为了让攻击起作用,很明显授权请求必须到达发卡机构。为此,商家的收单行必须将请求路由到:

• 与真实卡品牌相匹配的支付网络,无论终端认为该品牌是什么,

• 处理不同品牌卡交易的支付网络,包括万事达卡和Visa卡。

SumUp 收购方很可能采用第一种方法。第二种方法在一些国家是通过法律手段强制执行的,这使得银行卡品牌混淆攻击的范围非常广泛。例如在美国,2010 年被称为德宾修正案的联邦法律规定,如果商家、持卡人或卡(通过 AID)选择,则所有国内借记交易都必须有选择权,被路由到一个共同的支付网络,称为美国共同借记网络。无论卡品牌如何,该网络都会将授权请求转发给发卡机构。因此,如果受害者的卡是在美国发行的万事达品牌借记卡,并且商家也在美国,那么攻击应该是有效的,在应用程序选择期间使用 Visa US Common Debit AID 0xA0000000980840 而不是 AIDVisa = 0xA0000000031010阶段。这种替换还会欺骗终端运行有缺陷的 Visa 内核。澳大利亚和新西兰等其他国家也在推动类似的方法将借记交易路由到本地支付网络而不是全球支付网络。销售点电子资金转账 (EFTPOS) 系统就是这些国家此类举措的一个例子。

不成功的尝试:尝试在 Discover 和银联交易中使用万事达卡进行支付,因为这两个内核与 Visa 内核相似,在这两种情况下都没有成功。在这些测试中,观察到终端没有通过选择阶段,并要求插入卡或尝试使用另一张卡。这表明在进行实验的瑞士可能会限制在非接触式界面上使用这些品牌的卡。

已经对其他支付终端进行了额外的测试,包括两个由 SIX 提供(https://www.six-group.com/ )。从与万事达卡的披露过程中,了解到这些交易都没有被路由到万事达卡网络,并且因此,SIX acquirer大概将授权请求路由到 Visa 支付网络,该网络将卡标记为非 Visa 并拒绝交易。很明显,EMV 标准应该指定一种明确的加密机制,以检测和避免 AID 和 PAN 之间的不匹配,就它们所宣传的卡品牌而言。在下一节中将分析实现这一目标的对策。

 

0x04 Countermeasures

A.之前的 EMV 模型

为了设计和验证针对攻击的内核级对策,扩展了之前的 EMV 非接触式协议模型。本研究开发了这个模型,重点关注以下三个安全属性:

1.发卡行接受终端接受的所有交易。

2.所有接受的交易都由卡和发卡行(如果在线授权)向终端进行验证。

3.所有接受的交易都通过卡和终端向发卡机构进行认证。

第一个属性表达了接受和拒绝事件的因果关系:每当终端接受交易时,发行人也将接受(或等效地,发行人不会拒绝它)。对于身份验证属性,使用单射一致性。简而言之,协议属性验证,每当必须对交易进行身份验证的代理达到交易被接受的状态时,该代理就会观察到与身份验证代理相同的交易细节。为属性达成一致的交易细节是:PAN、AIP、CVM、ATC、AC 数据输入(即X)、AC 本身和 IAD。

指定了 EMV 非接触式协议的通用模型,该模型允许分析使用 Visa 和 Mastercard 内核执行的交易。其余四个内核可以通过其中之一建模。在以前的工作和当前的工作中使用的分析方法是由目标配置构成的。目标配置是从下表中选择最多四个参数(取决于内核)。目标模型源自 EMV 非接触式协议模型,并允许后者的任何执行,同时仅评估共享相同的已接受交易的安全性目标配置。

多个配置的使用使人们能够将安全分析集中在那些由目标配置的相应选择定义的感兴趣的事务上。例如,人们可能对使用万事达卡内核和支持 DDA 作为离线数据身份验证方法和在线 PIN 作为持卡人验证方法的卡执行的高价值交易是否适用于终端身份验证感兴趣。

B.基于 PAN 路由的扩展模型

之前的 EMV 非接触式协议模型指定了终端发行方通道,这使得这两方始终就用于在线授权交易的内核达成一致。换句话说,假设交易授权请求被路由到一个支付网络,该网络只处理由所使用的内核(或等效地在应用程序选择阶段选择的 AID)确定的品牌卡。例如,如果交易是用 Visa 内核处理的,那么授权请求将路由到只处理 Visa 卡的网络。

这种建模假设意味着万事达卡只能用于使用万事达内核执行的交易。显然,品牌混淆攻击展示了其他明智的做法。即,在某些情况下,授权请求到达发卡机构,即使该卡不是由终端使用的内核确定的品牌。使用更通用的路由模型扩展了之前的模型,其中终端将授权路由到由卡的 PAN 确定的支付网络。所采用的建模技术是标准的。

在上表中,总结了使用扩展模型进行的分析结果。所有目标模型平均有 56 条 Tamarin 规则和大约 800 行代码。表中的备注 1 和 2 表示身份验证问题,这些问题首先由原始模型识别。备注 3 和 4 表示新发现的 EMV 非接触式交易中使用的 AID 和 CVM 缺乏身份验证。这是导致银行卡品牌混淆攻击的潜在缺陷。对于每个受影响的目标模型,Tamarin 分析揭示了一个可接受的交易,其中包含以下陈述:

• 使用的卡是万事达卡,

• 终端使用 Visa 内核运行交易,

• 未执行持卡人验证,

• 如果交易价值很高,那么从终端的角度来看,CDCVM 已成功执行。

C.验证防御对策

对 Visa 的 PIN 绕过攻击提出了两个修复程序。这些修复是:

1.终端必须始终设置终端交易限定符 (TTQ) 字节 1 的第 1 位。

2.终端必须始终验证签名动态认证数据 (SDAD)。

上述修复确保使用 Visa 内核处理的高价值交易使用 Visa 的安全配置(在线授权中的 DDA),其中要求卡提供 SDAD,终端对其进行验证。从结果(上表,第 4 行)中可以看出,已经验证了这种配置以及上面列出的两个修复程序,可以防止将万事达卡变成 Visa 卡。由于卡签名以生成 SDAD 的数据的特定于内核格式,因此修复工作有效。即,Visa 协议指定 SDAD 的输入具有用于在线授权的标头 0x95,而万事达卡内核指定使用 0x05 标头。换句话说,对于需要在线授权的交易,万事达卡生成的 SDAD 不会通过运行 Visa 内核的终端的验证。此外,提出了以下新颖的 EMV 范围对策,内核可以在内部实施这些对策,以保证安全的在线授权交易,而不必依赖 Visa 特定的对策:

1.所有交易必须让卡生成SDAD并由终端验证。

1.选定的 AID 必须是 SDAD 输入的一部分。

第一个对策概括了在本节前面列出的两个修复方法。第二个对策正是针对在本文中描述的银行卡品牌混淆攻击。使用扩展模型为这些对策制作了机器检查的安全证明。这意味着它们可以有效地防止卡品牌混淆攻击以及 PIN 绕过攻击。请注意,第二个对策将是昂贵的,因为它需要重新发行卡。

D.万事达卡的防御对策

作为披露过程的一部分,与万事达卡分享了本研究的对策,并从他们那里了解到以下信息:

1.要求万事达卡收单行在授权数据中包含 AID,允许发卡行根据 PAN 检查 AID。

2.万事达卡在授权请求中还有其他数据点可以用来识别攻击。

作为披露过程的结果,一旦万事达卡了解到并非所有发行人都会检查 AID 或这些其他数据点,他们就会在他们的网络上实施这些检查。与万事达卡的互动还提供了关于某些终端(例如来自 SIX 的终端)如何检测不匹配的 AID 和 PAN 从而从一开始就拒绝交易的更多见解。

完成上述检查后再次尝试攻击。这次失败了:终端请求将卡插入终端并输入 PIN。因此,实验证明,万事达卡现在部署的这些检查可以防止Mastercard-Visa 混合攻击。

 

0x05 Conclusions

在 EMV 非接触式协议中发现了一个严重的、容易被利用的漏洞,即应用程序标识符 (AID) 未通过支付终端的身份验证。 AID 定义了必须为事务激活协议的哪个实例(也称为内核)。结果,攻击者可以恶意替换合法的 AID 以欺骗终端激活有缺陷的内核。本文已经展示了如何使用中间人攻击来利用此漏洞,该攻击诱使终端使用万事达卡进行交易,同时相信它是Visa卡。这种卡品牌混合,结合最近开发的针对 Visa 的 PIN 绕过攻击,导致了一种新颖的、关键的攻击,攻击者可以绕过万事达卡的 PIN。该品牌的卡以前假定受 PIN 保护。令人震惊的是,对于终端和发卡机构不同意支付卡品牌的在线授权交易,这甚至是可能的。

为了实现漏洞利用,开发了一个概念验证的 Android 应用程序,并成功地测试了对现实世界支付终端的攻击。例如,在使用 Maestro 借记卡进行 400 瑞士法郎的交易中绕过了 PIN。还扩展了 EMV 的形式化模型,通过对终端发卡行渠道进行建模,即使这些代理在卡品牌上存在分歧,也允许进行通信。使用扩展模型来形式化验证提出的适用于 Visa 内核的准备部署修复程序是对Mastercard-Visa 混合攻击的有效对策。此外还指定并验证了两种新的内核内部对策,它们可以在万事达卡内核上实施,而无需依赖 Visa 的防御。万事达卡已在网络级别实施了一种替代防御机制,已通过实验证实该机制可有效抵御本文攻击。

本文翻译自usenix.org 原文链接。如若转载请注明出处。
分享到:微信
+127赞
收藏
CDra90n
分享到:微信

发表评论

内容需知
合作单位
  • 安全客
  • 安全客
Copyright © 北京奇虎科技有限公司 三六零数字安全科技集团有限公司 安全客 All Rights Reserved 京ICP备08010314号-66