该漏洞涉及到app所使用的intent和intent filter。

intent是一个可用于从一个app组件请求动作或处理事件的“消息对象”。Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用。

intent主要包括隐式意图和显式意图。调用Intent.setComponent()或Intent.setClass()方法明确指定了组件名的Intent为显式意图,显式意图明确指定了Intent应该传递给哪个组件。没有明确指定组件名的Intent为隐式意图。Android系统会根据隐式意图中intent-filter设置的动作(action)、类别(category)、数据(URI和数据类型)找到最合适的组件来处理这个意图。

移动应用app和支付客户端app之间的通信存在一个漏洞:移动应用app使用隐式意图,可以被恶意应用通过一个高优先级的intent-filter拦截。Google IAP 2和3版本以及支付宝SDK 1.0版都存在该漏洞。

Google Wallet SDK的漏洞

使用Google Wallet SDK进行交易,app必须与设备上的Google Play app进行通信,以便Google Play把交易情况反馈给用户同时要求用户进行确认。

确认信息

然而, IAP SDK使用了隐式意图ACTION=”com.android.vending.billing.MarketBillingService.BIND”,可以被意图过滤器(intent-filter)action android:name=”com.android.vending.billing.MarketBillingService.BIND.”拦截,这样,一个恶意app就可以使用同样的intent-filter拦截该意图然后启动钓鱼界面,如下图所示:

钓鱼页面示例

支付宝sdk钓鱼

支付宝sdk与Google Wallet的支付过程相似。当用户点击“支付”按钮后,app就会与支付宝sdk进行通信以便支付宝sdk通知用户确认支付。同样,恶意app可以使用action android:name=”com.alipay.android.app.IAlixPay.”的intent-filter来拦截通信,然后向用户发送伪造消息。

伪造支付宝消息

第三方app为了完成支付,需要借助Google Wallet SDK或支付宝SDK,这些SDK的目的是发送支付intent到Google Wallet或支付宝。在这个过程中,恶意APP可以取代真正的Google Wallet或支付宝接收支付intent。用户通过第三方应用程序进行支付的时候,他们希望看到真正的Google Wallet或支付宝登录界面。然而在这个时候网络钓鱼APP就像真正的Google Wallet或支付宝一样出现在用户眼前,用户很可能不会产生怀疑从而输入他的密码和银行账号信息。

前面的例子表明了网络钓鱼攻击的可能性。然而,钓鱼攻击可能只是一个开始。一旦网络罪犯能够访问用户帐户,他们就可以继续窃取用户帐户上存储的其它信息,包括信用卡和其他支付信息。然后,他们可以自己使用或者在地下黑市贩卖这些信息。

此外,用户可能不会对这些恶意信息产生怀疑。由于APP需要处理支付,他们可能会认为这些消息只是在实际支付前简单的对账号进行确认。

修复建议

开发人员应该使用显示意图来处理敏感信息,这样,只有指定的app组件才能够接收和处理这些信息。但这是不够的,在与其它app通信之前,开发者应该检测其它app的签名以证明其调用来源的合法性。

参考链接:

http://blog.trendmicro.com/trendlabs-security-intelligence/vulnerability-in-in-app-payment-sdks-may-lead-to-phishing/

支付SDK的安全问题——隐式意图可导致钓鱼攻击的更多相关文章

  1. 隐式意图启动一个Activity

    隐式意图是通过指定一组动作或者属性实现,主要用于跨应用使用. 1.创建一个意图对象 Intent intent = new Intent(); 2.设置意图过滤器 intent.setAction(& ...

  2. Android 隐式意图和显示意图的使用场景

    本文实现一个隐式意图的应用,激活短信应用 public void click4(View view) { Intent intent = new Intent(); intent.setAction( ...

  3. Android 隐式意图的配置

    本文地址:http://www.cnblogs.com/wuyudong/p/5677473.html,转载请注明源地址. <Android 显示意图激活另外一个Actitity>一文介绍 ...

  4. Android 隐式意图激活另外一个Actitity

    上篇文章<Android 显示意图激活另外一个Actitity>最后谈到显示意图激活另外一个Actitity会有一些局限性和弊端 本文介绍另一种方法:隐式意图激活另外一个Actitity ...

  5. 无废话Android之smartimageview使用、android多线程下载、显式意图激活另外一个activity,检查网络是否可用定位到网络的位置、隐式意图激活另外一个activity、隐式意图的配置,自定义隐式意图、在不同activity之间数据传递(5)

    1.smartimageview使用 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android&q ...

  6. 隐式意图Intent

    在我们想往下一个页面传递数据时,要想到显式意图和隐式意图,显示意图用于内部活动跳转时比较方便,而隐式意图用于应用程序中外部活动的跳转时较为方便,在使用隐式意图时我们要想到清单文件 代码如下: < ...

  7. 基础学习总结(八)--Intent中显示意图和隐式意图的用法

    Intent(意图)主要是解决Android应用的各项组件之间的通讯.Intent负责对应用中一次操作的动作.动作涉及数据.附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组 ...

  8. android intent 隐式意图和显示意图(activity跳转)

    android中的意图有显示意图和隐式意图两种, 显示意图要求必须知道被激活组件的包和class 隐式意图只需要知道跳转activity的动作和数据,就可以激活对应的组件 A 主activity  B ...

  9. android 21 隐式意图启动系统预定义activity

    Intent intent=new Intent(LoginActivity.this, MainActivity.class);//显示意图启动,显示从一个activity到另一个activity, ...

随机推荐

  1. atitit.提升软件开发效率大的总结O5

    atitit.提升软件开发效率大的总结O5 #---平台化.组件化 1 #--cbb公用模块的建设 1 #---内部最佳流程方法跟实践的总结 2 #---内部知识体系的建设 2 #---问题Qa库的建 ...

  2. Help Viewer 2.2 独立运行

    "C:\Program Files (x86)\Microsoft Help Viewer\v2.2\HlpViewer.exe" /catalogName VisualStudi ...

  3. aehyok.com的成长之路二——技术选型

    前言   首先奉上个人网站地址传送门:aehyok.com 在上一篇博客中http://www.cnblogs.com/aehyok/p/3934197.html主要简单的介绍了自己做个人网站的初衷, ...

  4. NR_OPEN 与 NR_FILE 的区别

    NR_OPEN 与 NR_FILE 的区别 阅读0.11版的内核源码时,在linux-0.11/fs/pipe.c中,函数sys_pipe()里面出现了2个宏定义,NR_OPEN 与 NR_FILE. ...

  5. csdn 泄露用户密码害人不浅啊。

    先是京东被盗,接着博客园也登陆不了了.

  6. wmi详解,RPC和防火墙

    135端口:Microsoft在这个端口运行DCE RPC end-point mapper为它的DCOM服务.这与UNIX 111端口的功能很相似.使用DCOM和RPC的服务利用计算机上的end-p ...

  7. 用Pomelo 搭建一个简易的推送平台

    前言 实际上,个人感觉,pomelo 目前提供的两个默认sioconnector和hybridconnector 使用的协议并不适合用于做手机推送平台,在pomelo的一份公开ppt里面,有提到过, ...

  8. .NET通过async/await实现并行

    如果可以并行可以大大提高性能,但在我们的使用中,不可能全是并行的也是要有线行操作,所以我们需要在业务逻辑层进行并行操作的护展: 数据访问层不变还是以前一样如下: public class UserDA ...

  9. 关于MYSQL中like 检索汉字问题。

    mysql中like’中国‘查询不出来结果 如果 like‘zg’就看查询出来结果. 查询了半天是由于mysql中编码的原因 解决办法: 进入mysql 输入命令:show variables lik ...

  10. 深入剖析 redis 主从复制

    主从概述 redis 支持 master-slave(主从)模式,redis server 可以设置为另一个 redis server 的主机(从机),从机定期从主机拿数据.特殊的,一个 从机同样可以 ...