“走进网易:移动测试与安全实践”公开活动在杭州西湖区颐高创业大厦4F楼友会创业咖啡厅举行。本次活动的议题聚焦在如何实现应用的高效开发、安全过检、开发功耗降到最低等热门话题。
现场多位来自网易、华为的技术专家分享了他们工作中的相关经验和技术实践。其中网易资深安全开发工程师朱星星带来了主题为《安卓App安全过检实践》的干货分享,他认为工信部对移动APP应用安全过检要求日益增多,这导致很多开发者会碰到上架被拒的尴尬。所以他建议技术开发者们在开发移动APP时,最应小心以下常见的容易被检测方驳回10大的检测项。
网易资深安全开发工程师朱星星分享现场
1.程序代码安全
“很多人可能认为这一项技术含量并不大,其实这项在APP上线时,检测方是有一些要求的”,朱星星认为,在APP上线时,开发者最好准备相关的《法律声明及隐私政策》、申请用户权限的调用系统说明,以及标注使用怎么样的SDK收集用户数据及收集用户数据的用途,这些都是硬性要求。
2.程序代码防护
程序代码防护是检测方判断代码保护基本强度的项目之一,这也是判断APP开发者是否有安全开发意识的标准之一。业界最常见的程序代码防护有以下几种——客户端APP采用代码混淆技术,增加能够防止第三方逆向工具进行逆向反编译,使用加固、防篡改机制、防二次打包等技术。
3.密码与安全策略
这一问题在金融类APP非常常见,开发者往往需要考虑的是用户在输入账号密码时会不会被第三方记录截屏。“我们在帮助客户解决这一个问题时,建议客户一定要有一个防键盘记录SDK,这样用户每次打开键盘字幕排序是不一样的,APP也能更安全更容易过检”,朱星星说。
网易云安全(易盾)安全键盘
4.权限与界面安全
在移动互联网时代,黑客的攻击方式越来越多样化,伪造用户登录页面窃取用户信息就是其中一种。在APP过检测试时,检测方会有提供同样的虚假的登录页面来检测APP是否有防范意识,这就需要开发者适当的在APP中给用户一些警示信息,提示登录或关键界面已被覆盖的警示信息。
5.动态调试
动态调试技术在软件逆向工程领域也是一个很热门的概念,它是指破解者利用调试器跟踪软件的运行,寻求破解的途径。朱星星表示:“面对破解者的动态调试,我们可以采取对APP进行加固的方案,防止APP被动态调试”。
6.SO注入
SO注入也是比较常见的黑客入侵手段,在安卓APP过检中是必测项。据朱星星介绍,一般来说有三个方案可以解决这一问题——修改linker中的dlopen函数,防止第三方SO加载;定时检测应用加载的第三方so库,如果发现是被注入的SO,则卸载加载的SO;对被测系统进行加固,防止被测系统被动态注入第三方SO。
7.内存数据保护
如何保护自己的程序不被其他程序读取或改写内存一直是技术开发者们需要解决的重要问题。在朱星星的分享中,他提到防内存被第三方程序读写。“我们监控/proc/pid/mem、/proc/tid/mem等文件的读写操作,当这些文件被第三方程序访问时,触发设置的回调函数,并配合防注入、防调试等方法,最终实现防内存修改。”
8.隐私与储存数据
技术开发者的代码文档如果使用明文存储,很容易出问题。“事实上,不管APP有无其他问题,检测方如果检测到APP里有明文存储,则一定会被打回来”,朱星星在解释该问题重要性时告诫开发者,在开发阶段一定要注意xml、db文件是否存在明文存储的问题。
9.日志信息泄露
在移动APP的开发过程中,日志信息的安全是非常值得关注的问题。日志信息泄露,主要是防止打印的log容易被破解者作为分析的切入点,分析到app的执行逻辑等。除了静态代码不能出现log的调用之外,动态运行时也不能输出日志信息。
10.通信与数据安全
在全球新一轮新技术革命的冲击下,用户的生活方式越来越依赖于线上应用,以致于通信数据正呈爆发式的增长。但令人担忧的是,线上数据的大量聚集增加了数据泄密的可能,导致信息安全面临威胁。为解决这一威胁,朱星星建议的做法是对敏感数据进行加密传输,增加加密信道的安全性检测(包含中间人攻击检测等)HTTPS 通信协议等。
朱星星表示:“以上只是我们总结的最常见的容易被检测方驳回的10大APP过检项,业内还有很多其他的检测项。为避免被驳回的尴尬,开发者在APP过检前可以提前在网易云安全(易盾)自主过检,提前发现问题解决问题,缩短安全过审周期。”
网易云安全(易盾)是网易云旗下安全云服务,提供涵盖内容安全、移动安全、业务安全和网络安全、抗DDoS服务的一站式安全服务,已为游戏、电商、社交、金融数千家企业解决安全问题。安卓App逆向保护作为开发工作中的重要内容,一直是网易云易盾提供的重要服务。可点击这里免费试用。