服务热线
15527777548/18696195380
发布时间:2019-04-24
简要描述:
近年来,Android应用安全问题频发,合规性监管不断升级,开发者对应用安全防护也越来越重视。4月20日在广州举行的2019安卓巴士千人开发者大会上,大家对Android应用安全进行了聚焦...
近年来,Android应用安全问题频发,合规性监管不断升级,开发者对应用安全防护也越来越重视。4月20日在广州举行的2019安卓巴士千人开发者大会上,大家对Android应用安全进行了聚焦。
2019安卓巴士千人开发者大会是由安卓巴士技术社区举办。安卓巴士是中国领先的安卓开发者社区,现已聚集超过85万开发者,数年来一直致力于IT从业者的知识分享服务。安卓巴士开发者大会则是安卓巴士技术社区主打的线下技术沙龙品牌,是由其发起并组织的近千人规模的Android开发者线下交流大会。
网易易盾移动安全资深工程师侯海飞
在本次大会,网易易盾移动安全资深工程师侯海飞受邀发表了主题为《Android应用安全提升攻略》的技术分享,就Android应用安全风险案例、常见安全隐患、安全活动周期以及安卓加固常见策略等内容进行了解读。
一、应用安全风险案例
Android应用安全的风险案例数不胜数,侯海飞称,就连很多大厂的App也都中过招,常见的问题点主要是以下这个:
说明:上述相关漏洞均已被修复。
侯海飞以某照片恢复App为例,分析解读了相关安全隐患以及防护策略。
此App的业务场景,包括初始界面、扫描照片、付费流程以及付费结果校验。
应用并没有要求用户注册账户,说明应用核心逻辑并没有和服务端关联,初步反编译后也没有发现任何代码保护措施。由付费提示信息出发,逆向客户端,更改代码控制流即可突破。
因此,侯海飞认为该APP应该采取的防护策略:
讲完真实案例后,侯海飞又分享了常见的安全隐患,包括:
二、应用安全活动周期
侯海飞表示,移动APP安全加固现如今的发展阶段引入了“安全生态链”,因此网易易盾也早就推出了APP开发全链路安全服务。
网易易盾的App全链路安全服务包含了安全开发、应用审计、安全加固、渠道检测四个周期。
安全开发生命周期(SDL)是侧重于软件开发的安全保证过程,旨在开发出安全的软件应用,尽可能地在产品版本回归前尽早地清除漏洞。其核心理念就是将安全考虑集成在软件开发的每一个阶段:需求分析、设计、编码、测试和维护,从需求、设计到发布产品的每一个阶段每都增加了相应的安全活动,以减少软件中漏洞的数量并将安全缺陷降低到最小程度。
在这一阶段,安全防护的主要目的是将安全缺陷降低到最小程度,避免后期线上运营阶段出现安全问题,但是自然地成本较高。
2、测试阶段:应用审计
测试阶段主要包括安全扫描和渗透测试,具体防护内容可参见下表:
侯海飞说,根据2018 年金融类应用高危漏洞 TOP10调查显示,ContentProvider敏感信息泄露、不安全Zip文件解压、服务端证书弱校验、客户端XML外部实体注入等漏洞均高居榜首,严重影响着Android应用的安全性。
但是,并非所有的漏洞都需要修复,从成本和实际防护效果上考量,开发者可根据实际情况进行选择。
3、上线阶段:安全增强
侯海飞指出,在第三阶段,需要在基础的安全防护上进行增强,这时候可以根据安全测试结果进行选择性修复。
从开发者和第三方安全厂商的角度来看:
4、运营阶段:渠道监控
侯海飞认为,运营阶段的主要防护手段包括爬虫、盗版识别、数据分析。
综上所述,在应用安全的开发、测试、上线、运营这四个活动周期内,可以从安全开发(数据通信、数据安全、核心逻辑保护、调试日志)、应用审计(安全扫描、渗透测试)、安全增强(漏洞修复、应用加固)、渠道检测(盗版监控、数据分析)等细分点进行着力。
三、安卓加固常见策略
在分享的后半段,侯海飞对安卓加固的策略进行了解读,他认为,常见的Android加固策略包括应用加固和源码混淆。
1、应用加固
在应用加固方面,主要有DEX文件、SDK文件、SO文件加固这三类。(SDK的加固策略和DEX类似,不细说)
在DEX加固上,针对加固程度的不同,可以分为:
该加固方式是指根据so结构特点,在二进制层面进行局部函数加解密。
2、源码混淆
常见的源码混淆方式包括Java代码混淆、C/C++代码混淆以及h5 脚本混淆等。
部分逆向IDE对中文的支持并不好(涉及中文字符编码的问题),配置起来也并不困难,强烈推荐开发者使用。
如下所示,为Java代码中文混淆前后的效果:
此处的混淆不单是字符串层面的,也包括了代码逻辑控制流等。
C/C++代码混淆前后保护效果如下:
C/C++代码混淆,可以在LLVM编译器上下点功夫——LLVM不仅仅提供混淆实现,还能通过多重Optimize(优化器),实现多种效果,例如代码控制流扁平化、虚假控制流、字符串加密、符号混淆、指令替换等。
H5 脚本混淆
H5脚本混淆主要提供字符串加密、混淆、去log、变量名处理、压缩、函数名处理、平台识别、防篡改等功能。保护前后区别如下:
四、总结
应用安全是应用不可缺少的一部分,如有不慎很可能会被不发分子利用、薅羊毛,给公司利造成极大损失。
在逆向对抗中,建议开发者将核心逻辑置于native层,且借助LLVM对Native层代码进行保护;如无多余人力物力投入安全,也可直接使用第三方安全加固产品,比如说网易易盾的加固。
下一篇:Windows安全加固
如果您有任何问题,请跟我们联系!
联系我们