APP应用程序安全治理
2016-03-16钟雪慧
◆钟雪慧
(中国移动通信集团广东有限公司 广东 510623)
APP应用程序安全治理
◆钟雪慧
(中国移动通信集团广东有限公司 广东 510623)
移动APP安全治理需要从移动APP的整个生命周期各阶段同步进行,包括规划设计、开发测试、上线运行、日常运维、废弃下线。每一个阶段都需要梳理安全控制点,落实安全控制措施,本文重点研究如何在上线运行及日常运维阶段如何对移动APP开展安全评估工作,主要包括移动APP客户端安全及移动APP服务端安全。
移动APP 数据安全;业务逻辑;应用劫持
0 引言
随着移动互联网的飞速发展,移动APP层出不穷,不管是生活还是工作都被移动APP逐步渗透,移动办公也逐步兴起。作为新的技术,移动APP大大地提升生活及工作的便捷性与效率。同时新的技术带来新的威胁,各类对移动APP的攻击手段也在迅猛地发展,各种因为移动APP而导致的个人财产损失频频见诸报端。移动APP的安全治理问题已经到了刻不容缓的时候。本课题基于日常工作中对移动APP安全问题的研究,提出针对移动APP安全治理的思路。
1 移动APP主要面临的问题
根据移动APP的架构来分,移动APP主要包括客户端安全问题及服务端安全问题。
客服端安全主要包括移动APP自身安全、手势密码安全、移动APP登录业务安全、移动APP找回密码业务安全、移动APP注册业务安全等。
服务端安全主要是移动APP的业务应用安全,由于移动APP与服务端的数据交互是通过http协议的接口,使用xml或json对数据进行封装的,所以传统的web应用漏洞,移动APP也同样存在。
2 移动APP安全治理
移动APP安全治理需要从移动APP的整个生命周期各阶段同步进行,包括规划设计、开发测试、上线运行、日常运维、废弃下线。每一个阶段都需要梳理安全控制点,落实安全控制措施,本文重点研究如何在上线运行及日常运维阶段如何对移动APP开展安全评估工作,主要包括移动APP客户端安全及移动APP服务端安全。
2.1 移动APP客户端安全评估
(1)移动应用数据安全
应用数据安全主要是评估和测试应用内和用户隐私信息相关的数据安全性。常见的控制点有:
①用户 session 存储是否正确和安全。
②用户密码是否加密/Hash 存储和传输。
③在公共存储中是否存有敏感信息。
④在系统日志中,是否打印敏感信息。
⑤其他应用是否有可能获取该应用的敏感信息。
⑥越狱/Root 的设备中会有什么样的数据安全影响。
⑦账号切换是否造成其他账号的敏感信息泄漏。
(2)系统库和第三方库的安全性
库安全性主要是评估和测试应用中是否使用了不安全的系统库或者第三方库,从而造成安全隐患。
系统库方面,比如是否使用了Android 系统存在安全隐患的API。例如Android 的 WebView组件提供了addJavascriptInterface方法用于实现本地Java和JavaScript的交互,而这个方法如果误用,就很容易产生远程代码执行漏洞,远程攻击者利用此漏洞能实现本地Java和Javascript的交互,可对Android移动终端进行网页挂马从而控制受影响设备。
(3)移动应用自我保护
移动应用自身安全测试主要关注应用本身作为一个程序,其保护自己不被黑客轻易破解、重打包、分析利用的能力。
这个方面的测试主要集中在:
①移动应用对自身的完整性校验。
②移动应用反重打包防止盗版的能力(特别是针对 Android程序)。
③应用反逆向反调试的技术,包括代码混淆,调试器检测,越狱检测,反 IDA 等。
④核心逻辑保护,应用中较为敏感的核心逻辑是否受到保护,比如是否做成单独的 c 程序模块,黑客通过逆向和调试破解核心逻辑的难度评估等。
⑤其他零散和有特殊场景的评估测试,比如手游应用是否容易制作简单的手机外挂等,根据应用需要会分别测试,侧重有所不同。
(4)应用劫持
应用劫持检查主要是检查应用在错误信息的诱导下,会不会产生错误的行为。常见的有:
①应用版本升级检查,升级应用链接被劫持(中间人攻击,DNS劫持等攻击手段),下载新版本是否进行真伪检查。
②应用内部使用内嵌网页,其中包含可以插入的输入信息,从而造成应用内 XSS 或者应用内嵌网页跳转到其他服务器。
③应用使用 OAuth 登录,其 callback 链接被劫持,是否会造成应用访问攻击者构造的钓鱼服务器,从而导致用户将隐私数据发送给攻击者。
应用劫持没有固定的形式,一般根据应用实际情况进行定制检查。
(5)应用逻辑漏洞检查
逻辑漏洞检查主要测试在不同的逻辑走向和各种用户输入条件下,是否会造成与预期逻辑不一致的结果。测试主要集中在以下几个方面:
①用户输入检查是否完善,是否造成逻辑错误,是否造成崩溃等。比如在一个调出数字键盘只能输入数字的输入框中,通过粘贴方式输入负数等。
②各种环境各种逻辑走向是否造成逻辑漏洞,造成状态错误,或者造成应用崩溃。
③接收到错误的或者故意构造的系统消息、其他应用消息,读取到特意构造的文件,接收到错误的网络数据等是否会造成应用逻辑或信息泄漏漏洞、状态错误或者崩溃等。
④越权漏洞,通过修改一些交互参数使得一个用户可以看到其未授权查看的信息。
(6)业务逻辑安全
对于敏感业务流程,还需要对流程本身做安全测试评估。比如:
①用户身份认证流程安全性。
②支付流程安全性。
③证书安全性检查。
2.2 移动APP服务端安全评估
(1)API 服务器安全测试
每个移动应用背后,都有几十个 API 的支撑,才能正常运转,而这些 API 和 API 服务器本身的安全性也至关重要。如果由于 API 服务器存在漏洞,黑客取得了服务器控制权,那么将会是非常可怕的事情。一方面,攻击者可以直接获取所有用户的敏感信息数据。另一方面,攻击者稍加改动就可以直接攻击该API 服务器所服务的千万客户端,同时攻击这些应用。无论是哪种情况发生,后果都将不可设想。
API 服务测试主要包括但不限于以下几项:
①API 服务器是否会造成服务器信息泄露,如.htaccess,列目录,任意文件下载。
②数据库注入攻击,特别是 SQL 数据库。
③用户输入时候可能造成XSS攻击,危及系统管理员以及其他用户。
④API 接口和通信协议的逻辑安全性。
⑤API 接口是否可能造成远程代码执行。
⑥API 服务器是否进行了正确配置,是否在输入错误情况下打印敏感服务器错误信息。
⑦API 服务器是否可以进行拒绝服务攻击,如某著名社交应用曾经出现过的拒绝服务攻击,如北京摇号系统出现过的短信发送攻击等,再如阿里某社交应用曾经因为某个API服务背后业务逻辑涉及和数据库的复杂交互而导致其服务器可被轻量级的CC攻击打垮。
⑧API 服务器使用了不安全的系统软件或者版本,如Struts2 漏洞,Heartbleed 漏洞。
另外,对于一般的应用,都应开启访问次数限制和Web应用防火墙(WAF)可以有效抵挡一般攻击者的常见扫描式攻击,带来攻击的麻烦,特别是可以抵挡 DDoS 攻击和 CC 攻击。
(2)API 规范与通信协议安全性
主要针对移动应用客户端与 API 服务器通信的 API 规范和数据传输进行评估。
例如用户密码 MD5 传输是否进行了加盐操作,用户头像上传或者文件上传的步骤是否合理,签名计算是否过于简单,是否存在不合理的 API 设计,是否存在容易产生漏洞的设计(比如非幂等重要购买操作,会被进行重放攻击)等。
这个测试主要根据 API 的实际情况来定。
(3)其他关联服务测试
移动应用往往不是独立的,其连接的 API 服务器的后端数据库操作,往往与网站数据同步,因此有必要检查测试移动客户端构造的特殊请求是否会造成网站的错误。
这方面的测试内容主要包括:
①通过移动应用构造请求导致网站被 XSS 攻击。
②通过移动应用构造请求导致网站逻辑错乱或者状态不正确等。
3 结语
通过研究如何在上线运行及日常运维阶段如何对移动APP开展安全评估工作,本文对移动APP客户端和服务端的安全评估(测试)内容进行了详细分析,可以为移动APP的安全治理提供有价值的参考。
[1]Himanshu Dwivedi,Chris Clark,David Thiel.移动应用安全.
[2]OWASP.OWASP Mobile Apps Checklist 2016.
[3]OWASP.Mobile Top Tem 2016.