返回 登录
0

【CSDN英雄会】黄帅:安全不是独行侠而是系统性的运维过程

英雄会是CSDN旗下针对国内IT技术领域专家展示和交流的平台。通过线下线上的互动形式,为CSDN社区专家提供更多学习、合作、宣传的机会。英雄会后续将在北上广深等国内一二线城市建立分会,各个分会后期将组织技术交流活动。

恰逢11月18日-20日,SDCC2016将在北京举办,届时将在大会现场召开SDCC英雄会,正式成立CSDN英雄会北京分会,所在北京的重量级社区专家将受邀参加此次英雄会,面对面进行技术交流。

为了让大家更好地认识CSDN英雄会的成员,我们特别开设了【CSDN英雄会】采访专栏,讲述他们的技术成长之路。

本期邀请的嘉宾是黄帅。他工作五年以来从事过十几款安卓应用的研发,平时热衷于研究移动设备的安全问题,针对常见的安卓安全漏洞。在他看来,安全不是独行侠而是系统性的运维过程,自己做好了安全防范也应该协助和确保合作的其他第三方安全无漏洞。

图片描述

CSDN:简单介绍下您和目前所从事的工作。

黄帅:我从事的工作是安卓软件研发,工作五年以来从事过十几款安卓应用的研发。曾在乌云网工作,在乌云网主要负责乌云安全中心移动端的研发工作。擅长安卓应用架构设计和安卓应用的推广,平时热衷于研究移动设备的安全问题,针对常见的安卓安全漏洞,发表过多篇解读报告。工作期间曾获得SCJP和SCWCD认证,现在在一家创业公司工作,从事安卓端研发工作。

CSDN:据了解,您一直从事Android研发领域,Android开发手机安全大概需要什么技术?

黄帅:我觉得首先应该需要的是Java和C语言的技术作为基础,因为Android开发和安全技术就是以这两种语言为主的,熟练掌握这两种基础语言可以更好地开发Android应用程序和NDK程序;其次需要掌握静态分析和动态调试的技术,学会IDA和JEB工具的使用;对于底层的安全需要掌握Android虚拟机的机制原理和处理指令,有条件的可以学习ARM汇编语言。

CSDN:开发更安全的Android应用要注意哪些?

黄帅:这里我想分享几个经验:第一,在日常开发中一定要严格按照安卓规范去研发,例如属性的配置、数据的边界测试、第三方组件安全性的检测;第二,不要把敏感的数据信息存储在外部设备或者进行不安全的网络传输;第三,网络访问尽可能的使用安全的的连接服务,比如使用HTTPS代替HTTP;第四,针对安全性要求较高的项目使用代码混淆和APP加固。

CSDN:能不能讲讲目前Android平台通用安全目前存在的问题及对应策略。

黄帅:这里我谈几个常见的安全问题:

1.破解手机root
一旦Android手机被破解手机root,APP应用的数据将很容易被窃取,同时攻击方可以通过logcat获取应用日志信息,甚至安装一些恶意程序。

2.APP被反编译
当一个APP被反编译后,其软件的源码就可能暴露出来,攻击人员可以肆意的对软件源码进行逻辑修改,插入恶意代码和广告程序等。为了防止我们的APP被反编译,我们可以使用ProGuard等工具对源码进行混淆,一些关键逻辑可以写在so文件中,必要时可以进行APP加固。

3.数据泄密
大多数APP都需要存储数据,数据的存储有的在本地,有的进行网络传输,如果这些数据被泄露出去将对APP造成不可挽回的损失。为此,针对本地数据存储,我们可以使用加密的数据库,比如说SQLCiphe,平时研发过程中不要把敏感信息放在外部存储上,加载一些数据资源时应该做完整性校验;针对网络数据传输,应该避免明文传输,使用安全可靠的加密方案,对数据加密后再进行网络传输。

4. 组件暴露
Android有四大组件分别是Activity、Service、Broadcast Receiver和Content Provider,通常大家在调用这四大组件的过程中容易忽略调用验证的流程,这就导致很多时候我们APP的组件暴露出去,导致被利用后非法获取大量信息。为此,对于研发人员来讲,应该加强组件调用时输入信息验证,必要时关闭android:exported属性,并可以使用
android:protectionLevel属性来验证调用来源。

5. WebView安全
现在的APP越来越多的嵌入WebView以达到使用HTML5或者JS的目的,但是如果不能很好的对JavaScript代码进行校验,将会给自己的APP带来极大的安全风险。常用的做法是对输入数据进行进行验证,同时在4.2以上的系统中对Java的远程方法声明一个@JavascriptInterfac注解,而在4.2以下的系统不要再使用addJavascriptInterface方法,取而代之的是适应更安全的HTTP协议进行传输,如果仍旧使用HTTP传输,则最好开启白名单过滤。

CSDN:您怎么看待Android APP开发的安全性与iOS APP开发的差距?

黄帅: 1.Android系统是开放的,功能扩展强,但是由于其开放性导致全球市场安卓系统良莠不齐,尤其是国内,缺少统一的安卓系统安全标准;iOS则是较为封闭性的系统,从系统层面来讲比起Android安全性稍好一些,但是Android系统的安全也在不断完善之中。

2.Android和IOS在数据安全方面其实遇到的问题几乎一致,针对本地数据,二者通常把本地通数据保存在本地文件或本地数据库中。如果对本地的数据不进行加密处理,很可能被黑客篡改。针对网络数据,Android和IOS都面临着数据传输过程中不安全的隐患,比如说针对传输数据进行抓包、监听、破解通信协议等。

3.其实Android和iOS在研发安全方面往往面临着许多相同的问题,首先现在越来越多的APP功能页面都采用HTML5或者是JS来实现,而为了更好地展现这些二者都是用了Web容器,而这些Web容器本身就有许多安全漏洞,有些漏洞也随着集成一起带到了APP中,比如说UXSS。另外JS对象注入、远程代码执行等问题也不容小觑。

CSDN:您是如何最终走上Android研发安全这条路的?

黄帅:其实我走上Android研发安全这条路是因为在乌云网工作的经历决定的。我之前工作并没有多少研发安全的概念,加入乌云团队后,其专业、细致、全面的安全研发模式深深的影响了我,在接下来的工作中我很好地落实了团队对移动安全的要求,脑海中逐渐形成了很强的安全意识;再后来经常利用乌云漏洞平台,学习各种Android漏洞的产生原因和修复原理,最终走上了Android研发安全这条路。

CSDN:Android研发安全方面,您是如何和学习成长的?

黄帅:一方面通过大量的阅读书籍(移动设备安全类的书籍)和网络资源(比如说、博客、论坛精华帖子);另一方面自己研究网络上的一些典型的漏洞案例。周末也会参加一些线下的安全技术学习沙龙。

CSDN:在Android研发安全过程中有什么样的故事可以分享吗?

黄帅:这里我分享一个开发中的安全漏洞故事,之前做APP项目,在研发后期对待上线的APP进行了好多方面的安全测试,自己觉得APP不会有什么安全问题了,但是APP上线后却被细心的白帽子提交了漏洞,究其原因是我们APP项目中使用的第三方推送平台,该平台SDK存在一个漏洞,导致攻击者可以伪造广播,利用其进行恶意代码执行和获取私有文件。后来我们联络平台提供商一起修复了这个Bug,这件事情以后我才逐渐明白一个道理,安全不是独行侠而是一个系统性的运维过程,自己做好了安全防范也应该协助和确保合作的其他第三方安全无漏洞。

CSDN:您是什么时候接触CSDN的?它对您学习和工作都带来哪些影响?同时,对CSDN有什么建议?

黄帅:我是2009年接触CSDN的,起初是为了下载资源和查找学习资料,后来也上传了很多技术资料到CSDN平台上,同时也在CSDN论坛上面参与技术问题交流。

CSDN上面很多优秀的博客资源给我提供了很多好的学习资源,同时我在日常工作中有解决不了的技术问题,喜欢去CSDN上查找解决方案,有许多热心的朋友给了我很多帮助和支持。

未来,希望CSDN能够越办越好,多举办一些线下活动,促进IT人士更好的技术交流。

黄帅CSDN博客地址:

http://blog.csdn.net/mynameishuangshuai


往期回顾


欢迎加入CSDN英雄会:http://t.cn/RV9mzUX

图片描述

评论