随着移动通信和计算机通信技术的持续进步,智慧校园逐渐发展起来,移动应用也开始走向校园。很多高校积极推进智慧校园建设,借助移动应用打造“互联网+校园”的智慧校园模式,为师生提供更便捷的智慧校园服务。与此同时,校园移动应用的管理工作也成为信息化管理的重要组成部分。

伴随着高校移动应用(以下简称“校园APP”)的快速普及,其安全问题日益暴露。

2017年9月,吴中超等人在《中国教育网络》发表的文章,阐述了对国内20余所高校Android平台校园APP进行初步审计发现的诸多安全问题。

其收集的Android平台校园APP来自全国各地26所高校,其中,华北及东北地区6所、西北地区4所、华东地区7所、中南地区5所、西南地区4所,涉及到9所“985工程”高校和14所“211工程”高校。

调查结果显示,出现0次或1次问题的APP数量仅为5个,涉及到的问题包含不限于缺乏加固保护、源代码未混淆、WebView明文存储等。这些问题可以总结为程序源代码安全、本地数据存储安全、通信数据传输安全、恶意防范攻击能力等,具体如图1所示。

图1 Android 平台校园APP 安全调查结果

高校校园APP的发展

目前对校园APP尚没有明确定义。若从高校校园使用角度讲,对学生有着广泛影响力的社交网络APP或即时通讯APP可以归类于校园APP,如微信、QQ等。

不同于上述面向社会大众拥有广泛用户群体的APP,狭义的校园APP往往以特定高校的学生或是特定的学生为主题,提供信息具有本地化、实用性强、有一定时效性等特点。

本文研究的校园APP安全问题,将具备如下服务特性的APP定义为校园APP:面向特定高校的学生和教职工,为师生提供本地化的学习、工作、生活等信息的智能手机应用程序,运营管理者一般是高校相关部门的管理人员或在校学生。

自2017年后,校园APP迅速普及发展起来。“互联网+”和智能终端的快速发展为高校校园APP提供了技术基础和外部环境;

同时,高校校园具备的潜在市场吸引着公司或高校学生中的创业者从事相关研发工作;新媒体下,高校学生对信息需求的日益多元化为校园APP的发展提供了内在驱动力;

与此同时,高校学生自身的创造力和鼓励创新创业的政策对校园APP也起到了催化作用,故校园APP得以迅速发展起来。

目前,校园APP提供的服务包含但又不限于校园资讯、信息查询、学业缴费、生活服务等,开发者有高校信息化建设的工作者、学生及公司研发人员。

校园APP安全及研究现状

校园APP快速普及的同时,其安全问题也逐渐凸显。

在技术上,开发者为高校定制校园APP等碎片化服务而忽略安全问题;多数开发者的安全技术匮乏,无法就移动应用从设计、编码、测试、发布、更新等各个环节对安全风险进行控制。这些原因都可能导致校园APP在防攻击、防篡改、防病毒等方面安全防护能力较低。

在管理上,国内Android市场缺乏安全监管机制,并因Android平台的开源与开放性,校园APP市场需求大等一系列因素,导致众多高校校园APP出现诸多问题。

在校园APP出现的诸多安全隐患中,程序源文件安全、本地数据存储安全、网络传输安全、内部数据交互安全、恶意攻击防范能力等,从多方面展示校园APP可能存在的安全风险,如图2所示。

图2 校园APP 存在的安全隐患

国内外研究多是阐述如何对大批量的应用程序进行检测,但在高校校园的特殊业务场景下,思考在碎片化业务服务中,如何保护校园APP安全的研究较少。

本文根据北京大学医学部开发校园APP时采取的措施,从应用程序源文件安全和数据安全两方面阐述校园APP的安全保护方案。

校园APP安全隐患研究

1、程序源文件安全隐患

应用程序中含编码阶段的代码包和配置文件,在Android开源的环境下,如果未对应用程序采取有效保护措施,可能面临被反编译的风险。攻击者可能使用下载工具对未经过加固保护的应用程序、可执行文件进行反汇编、反编译或动态调式等攻击;可能通过逆向法破解应用程序的实现逻辑,比如获取与服务器端的通讯方式、加解密算法、密钥、软键盘实现技术等,造成算法被窃取、文件被非法篡改或是程序接口被调用、篡改应用程序内容、植入恶意收费应用或广告SDK、引诱下载其他应用程序等。高校校园APP的开发者需保证应用软件包的完整性和可靠性。

2、数据存储与传输安全隐患

(1)数据存储与交互安全隐患

校园数据安全是高校信息化安全建设的重要组成部分。高校数据库一般都部署在学校内网的服务器中,并且有专门的防火墙限制,利用网络层面进行数据保护。而在使用移动应用的过程中,如果开发者在AndroidManifest.xml文件中权限配置不当,客户端本地静态数据如本地系统文件、本地业务数据等都可能被盗用,造成用户的敏感信息泄露。

Android系统本身有四大组件:Activity、Service、Broadcast Receive和Content Provider。Activity组件是Android程序与用户交互的界面;Service组件是后台运行的服务进程;Broadcast Receiver组件对外部事件进行过滤接收,并根据消息内容执行响应;Content Provider组件是应用程序之间共享数据的容器,可以将应用程序的指定数据集提供给第三方APP。

不同的应用程序或进程之间可能存在共享数据,然而应用程序中不同的数据具有严格的访问权限。如果访问权限设置不当,应用程序中的数据可能被其他程序直接访问或修改,导致用户的敏感数据泄露,或应用程序被恶意篡改账号,盗取账号信息等。若组件中设置了导出权限,会存在登录界面被绕过、敏感数据泄露、数据库SQL被注入的风险。

(2)数据传输安全隐患

客户端与服务器之间传输数据通常遵循通信协议指定的内容格式和内容类型,如果未对传输数据加密,传输数据很有可能被还原成网络层的数据包进行解包并分析,暴露通信过程中的各种关键数据。

在使用HTTPS协议时,客户端需对服务器身份进行完整性校验,即验证服务器是真实合法的目标服务器。如果没有校验,客户端可能与仿冒的服务器进行通信链接,即造成“中间人攻击”。

当客户端的WebView组件访问使用HTTPS协议加密的URL时,如果服务器证书校验错误,客户端应该拒绝继续加载页面。如果重载WebView的onReceivedSslError()函数并在其中执行handler.proceed(),客户端可以绕过证书校验错误继续访问此非法URL,将导致“中间人攻击”。攻击者冒充服务器与手机客户端进行交互,同时冒充手机客户端与服务器进行交互,充当中间人转发信息的时候,也有可能窃取手机号、账号、密码等敏感信息。

实践

1、解除程序源文件安全隐患

应用开发者可以使用自己开发的加固工具或是第三方的加固工具,来强化应用程序的安全能力。

加固技术可以在不改变应用客户端代码的情况下,将针对应用程序的各种安全缺陷保护技术集成到应用客户端中,提供应用开发、打包、发布、运行全生命周期的安全,并在文件中设置防二次打包的配置,有效防止针对移动的反编译、二次打包、内存注入、动态调试等恶意攻击行为,全面保护应用程序安全。

北京大学医学部在开发校园APP时,研发人员采用加固方式保护Android版本的程序源文件安全。

图3 APK 文件加固方案

对APK文件加固后,可以有效保护Android应用程序不被反编译。同时,代码混淆通过将Java代码中的方法名、变量名、类名、包名等元素名称改成毫无关联且无意义的名字,或对简单的逻辑分支进行混淆,使攻击者难以找到函数调用的内容,无法掌控APP内部实现逻辑,增加逆向工程和破解的难度。

除使用加固工具外,北京大学医学部还针对打包上线的应用程序,将Android版本应用发布在校园内的服务器上;因iOS应用必须通过APP Store审核,故将iOS版本应用发布在APP Store上,同时向用户公布官方下载路径。由此可以有效避免校园应用被植入其他应用程序,防止APP被破解、被盗版,防止恶意推广安装其他应用软件,避免用户安装仿冒软件等。

2、解除校园APP数据安全隐患

(1)解除数据存储与交互的安全隐患

如上文所说,校园APP在数据存储与交互时存在安全隐患。目前,高校大都使用统一身份认证,故登录时的账号和密码都不会在本地存留。应在考虑数据安全时重点考虑业务数据存储安全、交互数据安全和传输数据安全。

解除Webview明文存储密码风险。其他恶意程序也可能通过提权或者root的方式访问Webview数据库,窃取用户的用户名信息及密码。北京大学医学部在开发APP时通过设置WebView.getSettings()中的方法setSavePassword(false)关闭Webview组件的保存密码功能。

关闭必要组件的导出权限。限制AndroidManifest.xml中的Activity、Broadcast Receiver、Content Provider、Service组件导出权限,对于须导出的组件必须限制于授权用户或者应用组件。

采用显式方式调用Intent组件。Intent通常用于Activity、Service、Broadcast Receiver等组件之间进行信息传递,包括发送端和接收端。当使用隐式的Intent调用时,并未对intent消息接收端进行限制,因此可能存在该消息被未知的第三方应用劫持的风险。Intent消息被劫持,可能导致用户的敏感数据泄露,或者恶意程序执行等风险。

(2)解除数据传输安全隐患

采用HTTPS协议传输数据。北京大学医学部在开发校园APP时,针对业务敏感数据,采用HTTPS 传输协议,加入了SSL(Secure Socket Layer)子层实现的HTTPS协议可确保数据在网络上加密传输,即使传输数据被截获,也无法解密和还原,保护数据在传输中的安全。

HTTPS需校验服务器。Android允许开发者重定义证书验证方法,重定义之后,若不对证书进行正确的校验,同样可能会导致“中间人攻击”。所以如果开发者重定义了证书验证方法,还需要对证书进行校验。

禁止Webview组件绕过证书校验。攻击者冒充服务器与手机客户端进行交互,同时冒充手机客户端与服务器进行交互,充当中间人转发信息的时候,也有可能窃取敏感信息。所以WebView绕过证书校验时,也可能会造成“中间人攻击”。

采用安全加密算法并避免密钥硬编码。AES/DES是常用的两种对称加密算法,其工作模式有ECB、CBC、CFB和OFB。当其使用ECB或OFB工作模式时,加密数据可能被选择明文攻击CPA破解;密钥硬编码也易造成加密算法被破解,导致客户端隐私数据泄露,加密文件破解,传输数据被获取,“中间人攻击”等后果,造成用户敏感信息被窃取。

(3)提升恶意攻击防范能力

长远角度来讲,没有绝对的安全。校园APP除了应用程序本身的问题外,还需注意防护外界的恶意攻击,即在遵守应用程序开发规范的前提下,不断提升自身防护能力,做好应用程序的安全防护工作,排除安全隐患。北京大学医学部在迭代更新校园APP时,都会使用业界安全公司的安全检测服务对新发版的应用进行安全检测,避免因增加新的业务服务带来安全问题。

本文从探索高校校园APP的安全威胁出发,调研了目前高校校园APP的安全现状,分析高校校园APP存在安全隐患的原因,继而根据《中华人民共和国网络安全法》等相关法律总结高校校园APP应该具备的安全能力,并依据技术手段阐述如何从程序源文件和数据两方面保护应用程序。

结合学校开发校园APP时的具体实践,浅谈高校校园APP的安全保护方案,提升研发人员和高校信息化管理人员的安全意识,为高校校园APP建立一道防护屏障,推动建立高校校园APP的安全生态圈。

(本文刊载于《中国教育网络》杂志2020年4月刊,作者:魏仿,单位为北京大学医学部信息通讯中心,责编:朴艺娜)

声明:本文来自中国教育网络,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。