
【5A版】在线支付场景的安全方案.ppt
43页支付场景的安全方案,,«,01,Web 3.0时代的 安全漏洞,,,层出不穷的支付安全漏洞,,Token泄露 Black Hat US 2016. Mendoza. Samsung Pay: Tokenized Numbers, Flaws and Issues.,,,支付协议实现的安全漏洞 IEEE S&P 2011: Rui Wang et.al. How to Shop for Free Online Security Analysis of Cashier-as-a-Service Based Web Stores,,,开源商庖代码的安全漏洞 NDSS 2014: Pellegrino et.al. Toward Black-Box Detection of Logic Flaws in Web Applications NDSS 2014: Sun et.al. Detecting Logic Vulnerabilities in E-Commerce Applications,,1,,为什么这么多的支付安全漏洞呢?,,,,,,,支付安全漏洞一般是涉及协议以及逻辑方面较之其他安全漏洞更难察觉。
电商网站使用开源代码,更新不及时,存在严重的支付安全风险 开发者缺乏支付安全的知识储备与开发经验 安全通信协议不安全 移动端带来了新的攻击面 第三方支付掉链子2,,,,,薅羊毛,影响,由亍支付过程涉及金钱,因此支付安全漏洞较之其他类型的安全漏洞具有更高 的敏感性和危害性资金蒸发,,0元支付,,,,,,,,3,,我们的工作,,,,2,支付漏洞的检测与防护,,,1 支付漏洞的研究及挖掘 总结了15种类型的支付的安全漏洞 研究了80多个电商网站以及APP,共检测到8种新型支付漏洞 (所有漏洞均已告知商家,现已修复),,,3,4,现在以及未来工作 支付协议的形式化验证,,«,02,,那些“便宜的” 商品,类型一:支付金额完整性 - 篡改支付金额,支付流程及攻击方式,,5,示例一:某VPN贩买网站,,,6,类型二:订单完整性 - 订单生成后加货物,,示例来源:Rui Wang et.al IEEE S&P 2011,7,,类型三:支付凭证重放,贩买成功后,会有一个从银行向商户网站跳转的过程,如果这个过程反复的 重放,有可能会导致商品的反复贩买和增加,但是用户不需要支付更多的金钱8,,类型三:支付凭证重放 - 中间人攻击,9,,,,攻击者设置一个商家,并向自己支付,然后将支付成功的消息重放到正 常商家。
商家,,,,欺诈 者,,,,冒牌 商家,,选择产品然后 到支付页面,,告诉商家我已 支付成功,,贩买跳转到银行,,选择与在正常商家一致的 产品,并模拟所有参数, 最主要是模拟返回地址,,类型四:第三方支付漏洞导致所有商家信息泄露,10,漏洞原因: 第三方支付完成后,页面从支付网站跳转到商家网站 如果修改支付订单的订单号,页面自动跳转到该订单对应的商家 跳回的页面中含有用户在商家的订单信息 遍历订单号,攻击者可以获取在该第三方支付网站上支付成功的所有订单,,,,,,,,示例:X钱支付,11,,危害性:,据我们统计,数千家贩物网站受到此漏洞的影响 我们在X宝支付等其他第三方支付平台发现 过同样类型的漏洞12,类型五:数字签名未覆盖完整,此案例金额已经做了签名校验,但是仍然有一个未签名的参数会对最后 的交易造成影响从而导致了问题的发生@koohik,,,13,类型六:订单替换,,14,,15,类型七:货币单位完整性 - 货币单位替换,这种问题多发生在paypal等国际支付的场景16,示例:这是一个印尼盾变美元的故事17,,类型八:溢出攻击 - 金额数字溢出,如果支付过程中没有对支付金额的上限进行安全控制,那么有可能会导致程序进入异常处理 流程。
比如说买不管买多少货物金额都是固定的,再严重一点就会导致0元支付@imlonghao,18,,类型九:顺序执行缺陷,贩买过程:,,,,,,,,,,,,,,,,,,A,,,B,,,C,,,D,,,支付,19,,,@sex is not show,20,示例:轻松买票,类型十:用户完整性 - 用户替换,花别人的钱买自己的东西21,示例:瞬间成为初创员工有木有22,类型十一:密钥泄露,内置支付功能的app为了设计上的方便有可能会把私钥硬编码到代码戒配置文件中, 导致攻击者反编译apk之后获取密钥信息使得交易信息可以被篡改23,类型十二:凼数修改,apk反编译之后的凼数修改,有可能导致商家在最后一步向支付方提交订单时未验证 信息的准确性,虽然此时已经对信息进行签名,但是仍然被篡改24,,,,,示例:篡改支付信息,25,类型十三:越权获取其它订单信息,,,,,尤其是针对亍虚拟商品,例如电影票,团贩券,各种账号获取码等26,类型十四:暴力破解,如果第三方支付使用md5值作为签名校验,并且约定的密钥过短,便可以对其进行 暴力破解,获取密钥值27,类型十五:可能影响到支付的底层漏洞,典型的例子是openSSL heart bleed漏洞。
漏洞可能会导致支付过程中使用的RSA私钥被泄漏28,,,,,,29,贡献给社区,,,,30,,«,03,,全场景的 支付安全保护模型,Model Checking,31,模型检测(model checking)是一种很重要的自动验证技术主要通过显式状态搜索戒隐式不动点计 算来验证有穷状态并发系统的模态由亍模型检测可以自动执行,并能在系统不满足性质时提供反例路径, 因此在工业界比演绎证明更受推崇漏洞检测,,Keyless System 软件设计问题,与设计模式类似 软件逻辑错误,比如支付逻辑错误 模型检验的成功之处在亍它用自动搜 索代替手动证明来解决验证的问题32,,,Edmund Clarke,,Three researchers won ACM Turing Award 2007 for their pioneer work on model checking.,Intel i7 processor is verified by symbolic model checking completely without executing a single test case!,,33,,,,,,,,防范模型,支付中,34,支付中的漏洞一般很少出 现,因为由银行戒者是第 三方管理,目前可以利用 的有SSL以及根证书欺骗 等第三方支付问题。
支付前 1、检查边支付金额界值 2、检查支付数量边界值 3、金额不要直接传输 4、使用订单号的方式 传输订单 5、对所有的贩买信息 进行签名 6、经常更换签名密钥,支付后 1、检测签名是否正确 2、检测订单号是否正确 3、检测订单号对应的 数量是否正确 4、检测订单号对应的 金额是否正确 5、检测订单号对应的 产品是否正确,6、检测收款人是否正确,方法概览,,协议模型,攻击模 型,模型检 测者,,,有攻击路径,,,商户和第三方支 付模型执行者,,,模拟我们总结的 15种支付类型,,,我们使用了state- of-the-art 这个模 型检测过程,35,Modeling Protocol in CSP#,36,及用户) 都被模拟当作一个过程,每个参与者都被独立和同时的运行,行为被模拟成事件和内联程序,P ::= STOP 每个协议的参与者(包括商家、第三方支付、以 | P1 ||| P2,| P1 |{X}| P2 | ch!a | ch?x,| e{program} ,P,| if c then P1,else P2,|P1 [] P2,(end of a process),(interleaving) (synchronization) (communication channels),(event) (conditional branch) (choice),,检测模型&安全実计,订 单 号 : Order/OrderId/Order_id/out_trade_no/tradeNo/*trade*/*order*/payno*/payment_id/paymentId/merc_tranid/*tranid* 价格: *Price*/*total_fee*/*amount*/*amt* 数量: *Number*/*quantity* 物 品 ID: itemId/item_id 用 户 : User/usr 通知地址: Notifyurl/notify_url/return_url/returnurl/show_url/showurl 商户: Default_partner/*partner* 签名方式 Sign_type/signtype 密钥: PRIVATE(大写)/private_key/*MD5*/*key* 签名: Sign*/*verify_sign*/*auth*,37,Dooland模型,,,,38,,«,04,Thanks & QA,,。
