【IOS】苹果APP风险项笔记-需修订
敏感信息-文件存储
威胁:
APP需要存储的数据可能包含
敏感信息-日志输出
威胁
敏感信息-后台快照
威胁:
APP被切换至后台时会保存当前界面的快照,若界面上包含敏感信息可能导致数据泄露
审计方法:
Library/Caches/snapshots中的快照图片
解决方案:
程序被切换至后台时,通过UIApplicationDelegate
数据加密-加密算法
威胁:
加密算法自身安全性问题(自定义简单加密算法或RC4等)
审计方法:
对APP进行逆向,分析对加密功能的类或方法的调用
解决方案:
尽量避免使用自定义加密算法;
使用AES、DES等较安全算法;
对于数据安全性要求较高的情况,使用非对称加密(网络传输)。
数据加密-算法关键数据
威胁:
算法KEY生成或存储方式不当,攻击者可轻易获取;
对称加密的KEY硬编码于程序中。若使用这样的KEY对数据进行加密,攻击者可通过在自己的客户端中获取KEY,就可以对其他用户加密数据进行解密。
审计方法:
逆向分析、审计本地文件是否存放相关数据。
解决方案:
以设备相关的信息作为基础生成KEY(identity)
网络交互-HTTP&HTTPS
威胁:
敏感数据使用HTTP,存在被中间人攻击获取的风险
使用HTTPS传输,但未进行服务器根证书校验,同样可被中间人拦截修改
审计方法:
Burpsuite、Charles等
解决方案:
使用HTTPS应对数据安全性较高的场景,在客户端进行证书进行校验
对于HTTP,避免明文传输数据,在必要的情况下使用非对称加密
网络交互-WebView& JS
来源:
UIWebView& WKWebView & WebViewJavascriptBridge
威胁:
WebView注册获取(GPS等)接口,恶意网页通过JS调用获取信息
WebView注册的Native接口的实现由缺陷,调用恶意JS代码导致APP崩溃
审计方法:
逆向APP,分析相关的类的方法调用,测试注册的接口。
解决方案:
使用Safari来打开连接
尽量不要为JS注册涉及敏感信息的接口,如获取定位信息等
使用WebView加载页面并涉及JS调用时,对相关调用接口进行检查设置调用黑名单。
第三方库安全性
AFNetworking
低于2.5.3版本存在安全隐患
通过加载dylib对AFNetworking进行测试
FFmpeg
低于2.8.5版本存在文件读取漏洞
IOS应用安全问题归纳-Bug
拒绝服务
扫描畸形二维码,导致APP崩溃