一种iOS APP安全评估方案

2018-01-13 01:45舒远仲
网络安全技术与应用 2018年1期
关键词:客户端加密安全性

◆舒远仲 王 娟 梁 涛 胡 硕

(南昌航空大学信息工程学院 江西 330063)

0 前言

自从2007年iphone问世以来,移动智能终端快速发展,以iOS和Android为主流的移动操作系统占据了移动市场大部分份额。iphone以其iOS系统流畅性,安全性以及App Store中丰富多彩的第三方应用得到了广大消费者的喜爱。在很长一段时间内,iOS安全研究都主要集中在iOS系统安全漏洞挖掘中,由于iOS相对安全的系统机制保护与严格的审核机制,iOS App安全性一般比Android App高。历史上出现过的一些iOS App漏洞也主要集中在iOS越狱环境下,但近年来XcodeGhost、AFNetworking框架、中间人漏洞以及多个恶意SDK的曝光也说明了iOS App仍存在比较严重的安全问题,在移动APP的开发中,开发工程师偏向于功能开发而轻视了安全问题,同时也没有具体的安全开发标准导致APP中出现漏洞风险,比如APP被逆向,重打包,数据在传输过程中信息泄露,系统漏洞被利用,逻辑漏洞被绕过等等,个人隐私泄露,资金被盗,账户密码被盗等问题时有发生。为了更好的规范移动金融支付,中国人民银行、中国银行业监督管理委员会也制定了一系列的移动金融的安全规范和安全评估要求,强调移动银行的安全,需要从根本上杜绝安全支付风险,比如键盘防止输入法攻击、监听短信,窃取通话记录,读取手机中安装的购物客户端、银行客户端等等。

目前黑客社区,安全公司以及安全研究员对iOS APP的安全加固,安全测试都是针对某一些测试项,没有对iOS客户端的应用制定一个比较系统完整的评估体系。而且不同的安全加固公司制定的安全测试项也不近相同。本文通过对iOS APP安全问题的分析及研究,构建安全评估模型,制定相对完整的安全指标,对移动APP进行安全性评估,从而数字化风险,使得APP相对更加安全,更好的保护用户个人隐私信息和财产安全,也为开发人员提供了一定的安全开发依据。

1 iOS APP安全评估及解决方案

1.1 iOS APP安全问题分析

(1)源代码安全

应用程序上架需要编译成二进制文件,这些二进制文件也存在安全隐患。通过 file、class-dump、theos、otool等工具,黑客可以分析编译之后的二进制程序文件。对于 Objective-C代码,可以反汇编到方便阅读的程度,通过阅读源码,黑客可以更加方便地分析出应用的通信协议和数据加密方式。国外研究人员iSecLab 在 2011 年 2月发表于NDSS 的关于iOS应用程序隐私泄露问题。他们提出了一个对iOS上应用程序自动的静态分析工具:PiOS。工具中运用了从 Objective-C 二进制代码重建控制流图的方法,克服了静态分析 Objective-C无法正确还原消息传递部分逻辑的困难。利用 PiOS 他们对 1400 个 iPhone 应用程序进行了详细分析。针对PiOS存在较高误报率等缺点,Peter Gilbert等人在2011年6月提出了不同的思路。他们釆用基于动态分析的技术提出了针对 iOS平台应用软件的动态分析工具AppInspector,通过记录并分析触发过的iOS应用行为日志,得到针对iOS应用软件的完整行为追溯,从而实现对iOS应用对于敏感信息获取的结果报告。

(2)通信安全

APP通过与服务器端进行交互,将用户需要的信息展现给用户。在网络请求中,经常使用两种请求方式:GET和POST。GET请求通过URL(请求行)提交数据,在URL中可以看到所传参数,请求提交的数据有长度限制。POST通过“请求体”传递数据,参数不会在url中显示,浏览器不会缓存POST请求返回的内容。如果敏感数据是以明文传输的,黑客可利用Charles软件(如果在Windows下,可以使用Fiddler软件)来将自己的电脑设置成代理服务器,从而截取应用的网络请求,就可以获得账号密码等。所以GET和POST都是不安全的。因此,为了防止重要数据泄露,需要对其进行加密。

除了明文传输密码等重要数据的问题外,还有通信协议的安全性。如果黑客破解了通信协议,就可以伪造一些用户的操作,对用户数据造成危害,像我们平常听到的游戏代练,刷分,其实是游戏的通信协议被破解,黑客制作出了代练的机器人程序。iOS9.0 之前,网络请求用http协议,http协议是不安全协议,很容易被攻破,2017年1月1日苹果开始强制使用https协议进行网络数据传输。HTTPS是HTTP over SSL/TLS,HTTP是应用层协议,TCP是传输层协议,在应用层和传输层之间,增加了一个安全套接层 SSL/TLS,SSL/TLS层负责客户端和服务器之间的加解密算法协商、密钥交换、通信连接的建立,但是如果客户端仅使用了https协议,没有进行双向校验的话,也是不安全的。当然,如果自己手上有更好更安全的协议,可以用自己的。

(3)本地文件与逻辑设计安全

移动应用依赖于客户端和服务器之间的频繁通信,并且极大地依赖于服务器存储和数据处理,这意味着个人信息会出现在移动设备和云中,对用户而言,不希望手机上安装的应用软件将自己的安全隐私暴露在风险之中,iOS应用的数据在本地通常保存在本地文件或本地数据库中。如果对本地的数据不进行加密处理,很可能被黑客篡改,所以需要对重要的数据进行加密,根据重要程度选择安全性可靠的方式。加密的方式有很多种,如base64,MD5,对称加密和非对称加密等。base64 过于简单,很容易破解。MD5加密在计算机安全领域使用的比较广泛,其核心思想是从给定的数据中提取特征码,不容产生重复,安全性比较高,但是现在也有专门的网站对md5进行破解,为了使MD5加密更安全,可以进行加盐,HMac,加时间戳等,提高安全级别和破解难度。第三种就是对称加密和非对称加密。非对称加密事先生成一对用于加密的公私钥,客户端在登录时,使用公钥将用户的密码加密后,将密文传输到服务器。服务器使用私钥将密码解密。这样的做法,保证黑客即使截获了加密后的密文,由于没有私钥,也无法还原出原始的密码。

由于业务发展迅速、开发水平不一、第三方缺陷、内部监管不严格导致逻辑漏洞不断发生。业务逻辑漏洞最常见的就是账号登录限制,密码重置问题,有的是采用手机号加验证码,就造成了黑客可以利用验证码进行破解。随着业务的发展,发现在金融行业,以及在我们的社交领域会更多使用手势密码。手势密码安全其实还是可以的,但是手势密码有很多解锁,可以通过多种方式去对手势密码进行一个修改。最常见的有暴力破解,以及去修改这一个文件重置本地手势密码。

1.2 iOS APP安全评估体系构建

(1)iOS APP安全评估模型

随着移动设备的通信、计算、存储等能力的不断提升,其应用范围不再局限于通信和娱乐领域,已经扩展到政企移动办公、金融支付等与人们工作和生活密切相关的领域。移动智能终端在给我们的生活带来了巨大的改变的同时,移动应用的安全性问题也不断出现。为了降低移动 APP的安全风险,保护用户的财产隐私安全,在 APP开发的整个过程需要对其进行安全性评估。通过分析iOS平台软件安全性,iOS系统安全机制,并结合目前ios平台存在的安全隐患,建立图1 iOS APP安全评估模型。

图1 iOS APP安全评估模型

(2)iOS APP安全指标设计

通过对iOS系统的安全性研究以及iOS客户端程序安全、通信安全、数据存储、策略设计、业务安全等方面的安全性分析,制定相关的安全指标对 APP进行评估明确化,风险可控化。其中指标的风险等级可参考OWASP Risk Rating MethodologyV2和NIST 800-30 Risk Management Guide for Information Technology Systems标准,得出关键指标。指标确定后,由于其安全风险有一定的不确定性,还需要通过专家讨论来控制关键指标和非关键指标的数量分布,关键指标与非关键指标的权重分布为 1∶1,即所有关键指标占总评估项的 50%,所有非关键指标占总评估项50%。如下表1为iOS核心层安全指标。

表1 iOS APP核心层安全指标

该指标主要结合目前常见的移动安全风险进行总结,由于移动风险不断增加,安全指标也会不断更新完善。

对于关联层系统安全主要涉及手机越狱风险,为了保护用户的安全,苹果iOS设计了一套安全机制,主要有安全启动链,程序代码签名,文件数据保护,沙盒技术,地址空间布局随机化策略等,尽管有这些安全机制,iOS系统仍然存在很多安全问题,如攻击引导过程的 Bootrom对设备进行“越狱”,用户可以获得iOS的最高访问权限,可安装恶意软件,获取用户隐私信息。因此APP需要对手机进行越狱检测。

1.3 安全解决方案

针对以上核心层所涉及的评估项,总结安全解决方案如下:

(1)制定安全规范

由于权责职位分配细化,开发人员与安全人员隔离,开发人员安全意识薄弱,没有整体严格的安全开发规范,只是一味追求功能的实现,对安全没有深刻的理解,造成很多应用无安全性可言。移动智能终端相关的安全评测体系尚且十分缺乏,美国国家标准技术研究所(NIST)给出的各种层次和系统的安全标准也只就某一项(入侵检测、数据泄露等)指标进行评测,并没有为移动智能终端相关的安全性制定统一标准。国内目前已发布的移动应用软件安全相关标准中,与金融 APP相关的内容包括中国银联编写的《移动终端支付应用软件安全规范》,该规范主要针对的是银行类应用的安全实现。阿里巴巴集团2017年2月9日发布正式版Java开发手册,该手册中就添加了安全规约的内容,其中安全规约中就明确规定对于用户敏感数据必须进行脱密展示,例如手机号隐藏中间四位,用户输入的 SQL 参数严格使用参数绑定或者 METADATA 字段值限定,防止 SQL 注入,禁止字符串拼接 SQL 访问数据库。在使用平台资源,譬如短信、邮件、电话、下单、支付,必须实现正确的防重放限制,如数量限制、疲劳度控制、验证码校验,避免被滥刷、资损等。那么对于iOS客户端的开发也可以制定相关的安全规范(参考Apple平台安全编码指南),约束开发人员减少因开发设计不合理,逻辑验证不充分,权限分配不严谨而导致的安全问题的发生。

(2)客户端安全加固

在iOS平台上,移动应用能够被反编译成较低级的机器码和二进制码。一般加固的方式是代码中的重要方法,代码命名混淆和使用宏,可使反编译后的代码易读性下降。核心代码采用静态库的方式,使用反动态调试,防篡改技术和在应用软件中嵌入防护的解决方案进行应用完整性校验可防止客户端资源被任意篡改,保护iOS应用软件免受反汇编、逆向工程和调试。在安装应用软件时可进行iOS越狱检测,检测程序运行环境是否安全。

(3)服务器端做安全防护

出于安全考虑,为了防止绕过前端校验的攻击应在服务器端将所有来自于应用外部的输入进行安全校验,包括但不限于:校验 HTTP 头、 cookies 以及 GET 和 POST 参数。 应在服务器端保证业务逻辑的安全,包括业务异常和失败的场景。服务端程序代码应不包含恶意代码,不包含已知的高安全风险漏洞,应采取恰当的措施应对各种已知攻击,如参数化查询预防 SQL 注入,对数据进行编码以预防跨站脚本攻击等。

(4)安全监管法律法规,技术手段的落地

APP安全特别是金融类APP的安全,是国家、开发商、广大用户三方面共同的需求,做到了安全开发,客户端安全加固,服务端安全防护等外,政府,企业还需进行相应的安全监管,规范APP的预置和分发,做好网络安全宣传,APP开发者与独立的第三方 APP安全测试机构、安全服务提供企业合作,同时安全监测平台对 APP进行实时监测,通过相关的技术手段,法律法规等实现环境内的安全,及时发现各种山寨,盗版,钓鱼应用。

2 总结

未来移动APP安全问题还将不断变化,安全界对iOS系统安全研究也越来越重视,尤其是数据安全和iOS恶意软件的问题。由于部署在用户终端上,移动应用比服务器应用更容易被攻击。目前大部分移动 APP漏洞检测平台最终的检测结果也需要专业的安全研究人员评估实际风险,历史上很多移动端严重漏洞也是需要结合业务场景的,所以说移动App漏洞检测平台也只是企业移动App安全建设中的一环,此外推动移动安全人才培养,iOS App安全开发规范,应用加固,盗版监测,安全评估等体系建设也同样重要。

[1]中国人民银行.中国金融移动支付支付标记化技术规范[S/OL].金融科技时代,2016.

[2]中国人民银行.中国金融移动支付应用安全规范[S/OL].中国金融出版社,2013.

[3]Manuel Egele,Christopher Kruegel,Engin Kirda,GioVanni Vigna:PiOS:Detecting Privacy Leaks in ios Applications.NDSS,2011.

[4]Peter Gilbert,Byung-Gon Chun,Landon P.Cox,Jaeyeon Jung.Automating Privacy Testing of Smartphone Applications.

[5]李柏岚.iOS平台的软件安全性分析[D].上海交通大学,2011.

[6]吴寅鹤.ios平台应用程序的安全性研究[D].广东工业大学,2014.

[7]路鹏,方勇,方昉, 蒲伟.iOS系统代码签名机制研究[J].信息安全与通信保密,2013.

[8]凌宁.基于 ios系统的安全性研究[D].北京邮电大学,2014.

[9]朱晓莲,甄彥虎.移动智能设备安全分析及防护策略[J].计算机与网络,2012.

[10]翁建涛.Mach-O 文件代码保护方案[D].北京理工大学,2015.

[11]刘朋飞.iOS应用程序的攻击手段分析与防护[D].电子科技大学,2014..

[12]OWASP Risk Rating Methodology[S/OL].http://www.owasp.org.cn:8080/owasp-project/download/OWA SPRiskRatingMethodologyV2.pdf.

[13]沙梓社,吴航.ios应用逆向工程[M].机械工业出版社,2015.

[14]Cedric Halbronn,Jean Sigwald:iPhone security model&vulnerabilities[J].HTTB SecConf,2010.

[15]Cocoanetics.Accessing the ios System Log[R/OL].https://www.cocoanetics.com/2011/03/accessing-th e-ios-system-log/.

[16]Apple Developer.Secure CodingGuide[S/OL].

https://developer.apple.com/library/content/documentation/Secu rity/Conceptual/SecureCodingGuide/Introduction.html.

[17]Apple. iOS security paper [S/OL]. https:// images.apple.com/business/docs/iOS_Security_Guide.pdf.

[18]freebuf研究院.2017年度移动App安全漏洞与数据泄露现状报[R/OL].http://www.freebuf.com/ articles/paper/137072.html,2017.

猜你喜欢
客户端加密安全性
两款输液泵的输血安全性评估
一种新型离散忆阻混沌系统及其图像加密应用
新染料可提高电动汽车安全性
某既有隔震建筑检测与安全性鉴定
如何看待传统媒体新闻客户端的“断舍离”?
一种基于熵的混沌加密小波变换水印算法
县级台在突发事件报道中如何应用手机客户端
孵化垂直频道:新闻客户端新策略
大枢纽 云平台 客户端——中央人民广播电台的探索之路
加密与解密