V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
immjun
V2EX  ›  程序员

在未越狱的 iPhone 6 上盗取支付宝和微信支付的帐号密码?

  •  
  •   immjun · 2015-03-23 16:24:13 +08:00 · 6815 次点击
    这是一个创建于 3537 天前的主题,其中的信息可能已经有所发展或是发生改变。
    iOS URL Scheme 劫持-在未越狱的 iPhone 6上盗取支付宝和微信支付的帐号密码
    http://drops.wooyun.org/papers/5309
    28 条回复    2015-03-24 12:11:04 +08:00
    sophymax
        1
    sophymax  
       2015-03-23 16:49:53 +08:00   ❤️ 1
    iOS也别乱装东西了.... ,我自己的iOS设备也一直没任何支付类的app,不放心 。 不过 , 这个漏洞多年前就很多人发现了 , 只不过大家不把它当漏洞 , 当成了取巧的手段玩的正High , 对于一个这么容易的漏洞 , 微信和支付宝责任还是挺大的 , 费尽心机用各种伎俩(红包、话费等)让用户绑定支付方式 , 安全就应该保证 , 苹果留这个功能本意也不是让第三方app调用支付宝等来支付的 , 仅仅是为了方便而已 , 是这些公司自己想着各种取巧方法来让用户更快捷地花钱的
    kacong
        2
    kacong  
       2015-03-23 16:59:28 +08:00
    oh, my 安全需要在心中,需要design thinking 安全是个系统工程。
    sobigfish
        3
    sobigfish  
       2015-03-23 17:21:21 +08:00
    貌似group的Bundle ID是需要唯一的,这个可以拿来用.
    babyname
        4
    babyname  
       2015-03-23 17:21:24 +08:00
    钓鱼。。
    首先你得将这个app通过审核,并且安装到用户的手机上。
    wzxjohn
        5
    wzxjohn  
       2015-03-23 17:34:12 +08:00 via iPhone
    @babyname 作者已经给出了一大堆成功劫持的例子。。。
    typcn
        6
    typcn  
       2015-03-23 17:34:16 +08:00
    @babyname 战旗不就过了?
    hjc4869
        7
    hjc4869  
       2015-03-23 17:36:13 +08:00 via iPhone
    @babyname 商店不会审核scheme,也没有对盗用别人的scheme作出任何规范,更没有scheme保留机制,过审核不是问题。前提是你的app本身有能够过审核的足够的功能。
    xiaket
        8
    xiaket  
       2015-03-23 18:27:29 +08:00
    个人感觉iOS系统对url scheme的管理还是太差了... 这儿在设计上应该分隔开.
    dingyaguang117
        9
    dingyaguang117  
       2015-03-23 18:29:20 +08:00
    @sophymax 提升用户体验也无可厚非,当然要在保证安全的前提下
    GPU
        10
    GPU  
       2015-03-23 18:35:42 +08:00
    非工程师不是看得很懂
    vincentxue
        11
    vincentxue  
       2015-03-23 19:11:45 +08:00   ❤️ 1
    这是个很老的问题了,多年前 SO 上就有相关的讨论,也有很多的相关博文。

    说句装逼的话,从我以前了解 URL Scheme 之后我就想到这种情况的可能性,我当时验证的情况是多个同样的 URL Scheme App 同时安装的话,总是会打开最新安装的那个。刚才我又去试了试 iOS 7.1 和 8.1,也是同样的情况。

    然后我读了相关的文档才知道这种情况确实存在,但苹果已经告诉开发者要注意这个问题,当时文档上好像是说不确定会打开哪一个。

    苹果有专门的文档讲使用 URL Scheme,并且人家说了不保证 URL Scheme 唯一性。

    所以我个人认为这是一个故意的设计,压根就不是漏洞,如果是漏洞,怎么可能这么多年了还不修复,被劫持完全是开发者没有熟读开发文档造成的。


    附带几篇文章:

    http://www.dhanjani.com/blog/2010/11/insecure-handling-of-url-schemes-in-apples-ios.html

    https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Inter-AppCommunication/Inter-AppCommunication.html#//apple_ref/doc/uid/TP40007072-CH6-SW1

    https://developer.apple.com/library/ios/documentation/Security/Conceptual/SecureCodingGuide/Articles/ValidatingInput.html#//apple_ref/doc/uid/TP40007246-SW5
    sumhat
        12
    sumhat  
       2015-03-23 19:16:58 +08:00
    和乱装东西没关系,只要不使用 URL Scheme 就行了,全部扫码支付。
    shippo7
        13
    shippo7  
       2015-03-23 20:07:51 +08:00   ❤️ 1
    实际用作攻击难度还是不小,毕竟先要引导用户去安装伪应用。但是厂商之间可以互相劫持 URL Scheme 耍流氓,用自家产品阻碍对方产品的使用。
    weisoo
        14
    weisoo  
       2015-03-23 21:13:06 +08:00
    @vincentxue 仔细看完了这个漏洞的说明,以文章中说到的美团和支付宝的例子,美团和支付宝没有任何办法通过完善自己的程序来避免这种漏洞,除非不使用URL Scheme。这个不是美团和支付宝开发者能力问题。
    wzxjohn
        15
    wzxjohn  
       2015-03-23 21:49:24 +08:00   ❤️ 1
    @weisoo 你看的真仔细啊。。。别人解决方案里连代码都给出来了的两个方案都被你无视了是么?
    2. 针对第三方应用

    既然苹果不发布补丁保护第三方应用。第三方应用就没有办法了么? 不是的,这里至少有两种方法可以检测自己应用的 URL Scheme 是否被 Hijack:

    后面的就不贴了自己去原帖看吧。。。
    aqqwiyth
        16
    aqqwiyth  
       2015-03-23 22:03:53 +08:00
    我自己也鼓捣过URL Scheme尤其是在PC上就大量用了,但是视屏中有一段获取到帐号密码的我就不解了。
    如果劫持了URL Scheme那么应该从美团跳转不到支付宝才是
    wzxjohn
        17
    wzxjohn  
       2015-03-23 22:29:58 +08:00
    @aqqwiyth 视频的意思你可以理解为做一个假的支付宝客户端,可以看成钓鱼。
    xwsoul
        18
    xwsoul  
       2015-03-23 22:35:32 +08:00
    恭喜ios也多了一个坑....在我的心里和 安卓更进一步了...
    paradoxs
        19
    paradoxs  
       2015-03-23 23:08:17 +08:00
    实际上是没什么危害的。
    没越狱,哪里来的FAKEalipay呢?
    sneezry
        20
    sneezry  
       2015-03-23 23:22:31 +08:00 via iPad
    @paradoxs 少年,你发评论要仔细读文章啊,战旗他们离那个FakeAlipay就差读密码这一步了啊,想读分分钟就读了啊
    paradoxs
        21
    paradoxs  
       2015-03-23 23:29:19 +08:00
    @sneezry
    1.实际上现在最新版本的IOS alipay,在美团跳转过去的时候,只需要输入6位的支付密码就可以完成付款。
    2.demo那个hijack视频,太过诡异了,跳转过去还要输入全部的账号密码,肯定是不行的,一下就被识破了。
    3.最关键的还是要用户手机里面有一个FAKEalipay,这个才是最关键的,这个条件非常非常的难以实现!
    Automan
        22
    Automan  
       2015-03-24 03:44:29 +08:00
    按我的理解,跳转应该也是一个token啊,明文密码怎么可能传过去?
    hebeiround
        23
    hebeiround  
       2015-03-24 08:12:20 +08:00 via iPhone
    也就是我我可以通过伪造URL Scheme可以欺骗美团告诉它我支付了,但事实上并没有支付。
    eternityz
        24
    eternityz  
       2015-03-24 09:25:51 +08:00
    @hebeiround 支付结果的确认是需要服务器之间进行校验的 (至少我实现过的支付宝流程是这样)
    eternityz
        25
    eternityz  
       2015-03-24 09:28:15 +08:00
    @paradoxs 不需要越狱,可能你从 app store 安装的某个类似小草壁纸这样的 app 就注册了 alipay 的 url scheme
    vincentxue
        26
    vincentxue  
       2015-03-24 09:35:30 +08:00
    @hebeiround 我相信美团不会蠢到服务器不验证的。支付的最后一步就是回调应用服务器。

    hillw4h
        27
    hillw4h  
       2015-03-24 09:36:10 +08:00
    @paradoxs 读书的时候老师就说了一定要审题,所以,建议你还需要再看两遍文章。
    fgwww
        28
    fgwww  
       2015-03-24 12:11:04 +08:00
    @wzxjohn 两个解决方案都是不靠谱的。第一个是要进入应用自身才知道有被劫持,第二个是私有api,用私有api又上不了app store。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5492 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 08:37 · PVG 16:37 · LAX 00:37 · JFK 03:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.