众所周知,代码安全是Android开发工作中的一大核心要素。
11月3日,安卓巴士全球开发者论坛线下系列沙龙第七站在成都顺利举办。作为中国领先的安卓开发者社区,安卓巴士近年来一直致力于在全国各大城市举办线下技术大会,为Android开发者提供最为全面深入的安全技术解读。
网易云易盾移动安全专家尹彬彬指出,安全开发能有效降低开发者维护成本
网易云易盾移动安全专家尹彬彬也受邀参加了此次会议,并做《如何提升Android代码的安全性》主题演讲。针对Android开发者,他分享了在App开发周期的各个阶段中常见的安全隐患,给出了提升Android代码安全性的建议,包括安全开发、代码加固、渠道监测、应用审计等Android代码安全技术剖析。
Android应用安全存在多重隐患
尹彬彬首先提到,Android和iOS两大操作系统占据了几乎全部移动端的市场份额,但是相比后者,缺少足够严格管控以及未能形成完善安全生态的Android系统,往往会存在很多安全隐患,给企业、开发者和用户都带来了不好的影响。
比如说:
随着技术的不断发展升级,移动App安全防护发展到现在的阶段,也已经成功引入了“安全生态链”的概念,并出现了融入到整个App开发上线周期链中的全套安全服务,这个生态链包含了安全开发、应用审计、安全加固、渠道检测等。
安全开发能有效降低开发者维护成本
安全开发是指在开发阶段减少安全风险,从而将安全缺陷降低到最小程度,避免后期线上运营阶段出现安全问题,但是成本较高。
安全开发生命周期(SDL)是侧重于软件开发的安全保证过程,旨在开发出安全的软件应用。其核心理念就是将安全考虑集成在软件开发的每一个阶段:需求分析、设计、编码、测试和维护。从需求、设计到发布产品的每一个阶段每都增加了相应的安全活动,以减少软件中漏洞的数量并将安全缺陷降低到最小程度,尽可能地在产品版本回归前清除漏洞。
尹彬彬表示,在这一阶段,一方面可以开展SDL培训,强化安全开发意识,制定安全编码规范;另一方面是使用较成熟的安全组件。
具体的安全建议包括有:
在开发阶段、测试阶段发现或者预防安全隐患成本较低,上线阶段或者运营阶段出现安全问题的成本较高,因此,开发者应明确安全开发的重要性。
应用审计
“只要是人在开发代码,就会存在安全漏洞”,尹彬彬如是说。近几年来,安全漏洞的形式越来越多种多样,拒绝服务、Webview明文存储密码等漏洞深切困扰着企业和开发者。因此,应用审计的重要性也越来越显著。
一般而言,应用审计的方式主要包括漏洞扫描和渗透测试。
1. 漏洞扫描
在漏洞扫描中,黑盒测试是比较常见的手段之一,也方便集成到现有的开发流程中。它能够很方便地提供漏洞详情、漏洞代码行数、风险等级、修复建议等。自动化移动应用安全测试框架Mobile Security Framework就是个很好的工具。
2. 渗透测试
渗透测试可以有效检测客户端程序安全、敏感信息安全、密码软键盘安全性、安全策略设置、手势密码安全性、通信安全、配置文件、拒绝服务、本地SQL注入等威胁类型。
代码加固
代码加固主要包括应用加固(DEX文件、SDK文件、SO文件)和源码混淆(Java、C/C++、JavaScript/HTML)两种常见手段。
1. DEX加固
从Java到C++语言,越往底层走,系统的粒度就越来越细(文件、方法、指令),壳逻辑与被加固的业务逻辑边界也越来越模糊。所以要想获得安全性和执行效率的平衡点,就可以采用DEX加固的方式。
2. SDK加固
Java字节码较容易被反编译,拿到SDK基本等于直接获取了源码。目前针对SDK的保护仅限于开发阶段的Proguard混淆,没有较高强度的安全保护措施。
但可以借用Dex加固的思想,对Java字节码做抽取处理:
3. SO加固
SO加密包括自定义节加密和自定义Linker,如下的例子所示:
4. Java源码混淆
此方式下可以设置自己的字典,这也是最常用的安全防护手段之一。
5. C/C++混淆
C/C++混淆可利用Obfuscator-LLVM工具高效实现,主要包括以下方法:
其他常见的C/C++混淆手段还有:
6. H5混淆
H5混淆是指从JS的语法和逻辑上进行混淆。
这种是从抽象语法树角度对JS的源码进行语法分析,将源码字符串转换为树形结构,然后对相应的属性(如字符串、变量名、函数名等)进行混淆或加密。
渠道监测能够随时感知安全态势
渠道监测也是Android安全开发中的一个重要课题,其工作内容主要是App是否被调试、HOOK、脱壳等运行时信息的上报,以便随时感知安全态势。
总结
“攻防没有止境”,尹彬彬表示,通过安全编码规范要求、上线前的安全检测、代码加固、业务运行中基于网络通信层的完整性校验、标准化的SDL检测等全方面的安全防护,能够抵御8-9成的攻击,但是还是有可能会有新的安全问题出现。
因此,他指出:“移动安全的方案需要更加贴合业务层面,与时俱进”。
网易云易盾依托网易20年的技术积累及对数十条业务线的保障经验,拥有海量特征库和成熟的安全机制,并结合超强云计算及人工智能技术,形成对游戏、金融、电商、娱乐等场景化解决方案,服务集团内外上千家客户。“如果需要获得更加可靠的移动安全保障,可以来和我们聊聊。”尹彬彬最后表示。