金融类app实现的主要问题

2017-09-30  本文已影响57人  cxlin007

因为涉及到钱,最重要的就是安全问题:
代码安全:

  1. 应用反编译,APK包容易被反编译为可读文件,稍加修改后就能打包成新的APK;破坏性还包括容易造成软件破解、内购破解、软件逻辑修改、插入恶意代码、替换广告商ID等。
    解决:
    a、加入校验代码防重打包(本地校验其实都没啥用)加固,如运行时签名校验(但是由于校验逻辑单一,很容易被绕过,服务端也要做签名校验,签名不对的不返回数据)
    b、混淆,发布的代码一定要混淆
  2. 本地拒绝服务,android系统提供的activity、service和Broadcast Receiver组件,android系统会根据intent的描述,负责找到对应的组件,完成组件调用,而这个漏洞就是利用组件没有对intent获取数据或畸形数据进行异常捕获,导致应用处理异常而崩溃。这可以被竞争方利用攻击,使得自己的应用崩溃,造成不同程度的经济利益损失。
    解决:
    a、不必要导出的组件设置为不导出,及组件的“android:exported”属性设置为“false”。
    b、对intent处理数据时进行异常捕获。
    3.硬编码敏感信息泄露,经常会有密钥硬编码在应用中,应用被反编译后,就容易通过密钥获取相关信息
    4.Android系统Sqlite数据库注入,如果数据库的操作语句是字符串拼接,可以通过传入的参数附带而外的sql语句,导致数据库被注入,使用SQLite提供的api可以防止(query(),insert(),update和delete())
    5.应用数据任意备份风险 中危 当AndroidManifest.xml配置文件中没有有设置allowBackup标志(默认为true)或将allowBackup标志设置为true时,应用程序的数据可以被任意备份和恢复,恶意攻击者可以通过adb工具备份复制应用程序的数据。 在AndroidManifest.xml文件中设置application的属性 android:allowBackup=”false”
    6.PendingIntent以其发送方应用的权限使用该PendingIntent包含的Intent,如果该Intent为隐式的,可能造成隐私泄露和权限泄露 使用PendingIntent时,建议使用显示Intent
    7.WebView组件忽略SSL证书验证错误,Android WebView组件加载网页发生证书认证错误时,会调用WebViewClient类的onReceivedSslError方法,如果该方法实现调用了handler.proceed()来忽略该证书错误,则会受到中间人攻击的威胁,可能导致隐私泄露。
    8.WebView明文密码保存,在使用WebView的过程中忽略了WebView setSavePassword,当用户选择保存在WebView中输入的用户名和密码,则会被明文保存到应用数据目录的databases/webview.db中。如果手机被root就可以获取明文保存的密码,造成用户的个人敏感数据泄露
    解决:使用WebView.getSettings().setSavePassword(false)来禁止保存密码

数据存储安全:

  1. 弱加密算法等漏洞
    使用AES、RSA算法,
    非对称加密一般不会单独拿来使用,他并不是为了取代对称加密而出现的,非对称加密速度比对称加密慢很多,极端情况下会慢1000 倍,所以一般不会用来加密大量数据,通常我们经常会将对称加密和非对称加密两种技术联合起来使用,例如用非对称加密来给称加密里的秘钥进行加密(即秘钥交换)。
    2.外部存储设备信息泄露
    3、剪贴板信息泄露,比较重要的信息,比如密码可以进行复制,其他应用可以监听剪切板内容获取密码

数据传输安全:

  1. http直接传输明文数据
  2. Java层SSL中间人攻击,没有对ssl证书验证
    解决:
    对SSL证书进行强校验,签名CA是否合法、证书是否是自签名、主机域名是否匹配、证书是否过期等
    网络服务接口安全:

多方交互流程安全:

  1. 界面劫持 , 界面劫持通俗来说就是病毒或木马在后台实时监控某个窗口的产生,例如QQ、支付宝、手机银行等软件的登录界面。一旦发现目标窗口出现,病毒就马上创建一个跟目标窗口一毛一样的窗体来覆盖在它之上。当发生界面劫持时,用户在无察觉的情况下将自己的账号、密码信息输入到仿冒界面中,恶意程序再把这些数据上报到其自身服务器,这个过程便是钓鱼攻击。
    解决:
    android5.0之前通过判断应用activtiy是否在栈顶,android5.0之后系统做了限制,无法获取整个系统的activity队列,因此在所有Activity的onPause()方法中,弹出提示用户的警告,延迟1-2秒执行,在所有Activity的onResume()方法中,取消在onPause中的提示
相关资料

Android应用本地拒绝服务漏洞浅析
Android逆向之旅—带你爆破一款应用的签名验证问题
Android HTTPS中间人劫持漏洞浅析
Android安全加密:非对称加密
Android应用安全开发之浅谈加密算法的坑

上一篇下一篇

猜你喜欢

热点阅读