CSDN技术主题月实战解读移动信息安全

摘要:11月12日,由CSDN社区主办的“CSDN技术主题月——移动信息安全技术的挑战与创新”在北京中关村隆重举行,此次沙龙活动邀请到黄帅(

猴子搬来的救兵Castiel)和姜维(

尼古拉斯_赵四)两位CSDN设计专家,以及花甲科技安全实验室负责人泮晓波和知道创宇高级安全顾问锅涛到场,围绕移动信息安全技术主题,共论安全在实践中的挑战与创新。

如今,在PC和移动终端已经深度融合的时代,移动信息化领域热闹非凡,与此同时蜂拥而上的移动应用、层出不穷的开源框架使得各类隐私和安全面临严峻的挑战。当炫丽的程序界面在运行的时候,我们应该如何搭建起强大的安全体系?针对这些难题,CSDN于11月12日下午举办“CSDN技术主题月—移动信息安全技术的挑战与创新”,邀请黄帅(

猴子搬来的救兵Castiel)和姜维(

尼古拉斯_赵四)两位CSDN设计专家,以及花甲科技安全实验室负责人泮晓波和知道创宇高级安全顾问锅涛到场,围绕移动信息安全技术主题,共论安全在实践中的挑战与创新。

Android研发不可忽视的安全问题

CSDN社区专家黄帅(

猴子搬来的救兵Castiel),从以下三个方面给大家解析Android研发中的安全问题。

常见的APP安全问题

据年第三季度移动安全报告显示,Android16个行业TOP10应用漏洞类别和数量中,Webview远程代码执行占到了第一位,第二位是Webview文明存储密码。这些领域涵盖大家平时工作领域,我们所面临的漏洞是非常严峻的。

安全研发

作为开发人员,应该从以下两个方面来应对安全的问题。

常见安全问题分析

上图可看出Android研发要点约个,包含组建安全、配置安全、策略安全、通信安全、权限欧洲、DOS安全、ROOT安全等等,今天从这里面挑一些重点讲一下。

组件安全问题。安全有四大原生的组建,第一个是Activity,首先是访问权限控制,组建处理不好会导致你的应用被恶意程序进行恶意的页面调用。作为研发人员,我们可以从以下三点来预防和避免这个问题:

私有的Activity不应该被其他应用启动且应该确保相对是安全的;

关于Intent的使用要谨慎处理接受的Intent,以及其携带的信息尽量不发送敏感信息,并进行数据校验。

设置Android:exported属性,不需要被外部程序调用的组建应该添加android:exported=”false”属性。

第二个组建安全是Service劫持、拒绝服务。常见的漏洞有Java空指针异常导致拒绝服务和类型转换异常导致的拒绝服务两种。应对Service带来的安全问题给大家三点建议:一我们应用在内部尽量使用Service设为私有,如果确认这个服务是自己私有的服务,就把它确认为私有,不要作为一个公开的服务;针对Service接收到的五数据应该进行校验;内部的Service需要使用签名级别的protectionle。

传输安全。本地校验用户验证码也非常重要,以后请大家开发中本地的数据校验尽量不要放在本地,尽量放在云端。对于数据的加密,建议所有的App和用户的客户端不要用一个共同的密钥,对于密钥生成的方法尽量根据用户的ID或者一些信息来生成出来,这样避免了大规模密钥的泄露。

第三方组件安全。之前做App应用,在研发后对应用做了很多安全防御。但是大概刚上线不到两天就暴露出漏洞了,究其原因是App项目中用了国内一家非常著名的SDK的推送平台,由于这个平台在发送推送广播的时候没有做数据的校验,导致了黑客可以利用这个推送广播进行伪装,给我发一些数据,最后导致应用在接收了广播之后,只要我点击这个广播应用就崩溃。因此我们除了做好自身应用的安全以外,要保证所引用的第三方,或者合作伙伴也是安全的。也就是说安全是一个团队性的。

Webview的代码执行漏洞。安卓存在一个非常著名的远程代码执行的漏洞,由于我们程序没有正确地使用,大家可能在做GS和Java户调的时候会遇到这个问题,远程攻击者可以通过Java分设接口执行一些恶意的Java方法,最终导致App在使用Webview的时候遭到攻击。我们是可以做一些应对的,安卓系统通过Webview通过一个注册来调用Java功能,攻击者利用反射对他进行攻击,其实谷歌也看到了这个问题,因为这个问题毕竟比较大、也比较广,所以谷歌在APILevel17以后这个问题就得到了遏制,对于小于17,或者17以下的能不使用就不使用,如果真的要使用可以增加过滤,对数据的传输做一下校验。

应用安全层。可以对代码进行一些混淆,如配置,如果觉得这还不够,也可以使用一些第三方的工具,比如APK文件。对于更加讲究安全性的经营类的企业,可以选择加固,使用脱壳程序,最后形成一个新的Dex包,最后完成对一个程序的加固。

安全编码规范

其实程序员的编码规范很重要。在Java中,对于一些重要的类、方法、变量,我们在定义的时候一定要想这么几个问题。

定义的类或者变量到底返回什么?

它们获得什么作为参数?

是否能够绕过安全线?

它是否含有能够绕过边界,从而绕过保护的方法变量?

有了这种思想之后,对于一些安全性的风险代码为了防止暴露,我们可以做一些操作,说限制对变量的访问,让每个量的方法都成为Final,尽量使你的类不要被克隆,如果一旦允许被克隆,它可能会绕过这个类轻易地复制类的属性。安卓中很多会使用到序列化,如果自己觉得这个类是有风险的,或者说安全性是很高的,尽量不要让它序列化。最后是避免硬编码影响数据。

AndroidM和N的安全更新

年8月份谷歌发布了Android6.0版本,其中很大一部分变化,是在用户权限授权上,谷歌意识到之前默认的授权有一定的问题,对于我们开发者来讲我们必须要掌握这一技能。谷歌列一些风险权限,比如说传感器、日历、变化、热像头、地理位置、麦克风等等,这些都是风险的权限。也就是说以后我们的App不能够随便地去拿一个权限,遇到这些风险权限的时候我们应该怎么办呢?我们就需要向用户申请。通常的做法谷歌在官方的文档中也给我们提供一个解决方案。

有了权限之后,在年8月份,谷歌发布了Android7.0版本,其中做了一个权限的更新,除了之前获取信息之外,Android7.0开发者可以在不申请Get的情况下访问设备商的账户;可以通过限制对私有文件的访问,强化了应用间的访问;对应用间的共享安全做了一个拉开幅度改进;Android7.0对网络安全也进行了保护,移除了一些可以持久访问目标设备的标识。将不再使用用户签名的证书。还有完善了网络安全配置,开发人员可以更加放地进行一些网络安全配置。谷歌进行了设备加密机制,所有的设备必须要体工队密钥存储的硬件支持,系统存储空间和用户配置存储空间将会分开进行加密。

最后我想送给大家一句话:安全不是独行侠也是系统性的运维过程。以后我们想安全的时候,不能够老是考虑自身,而是应该把它放开、放远、放大去考虑,它是整个系统运维的过程。

Android应用安全防护和逆向分析

CSDN博客专家姜维(

尼古拉斯_赵四),分享的主题是《Android的应用防护策略和逆向分析》。防护从混淆和签名验证、反调试、Native方法手动注册、加固进行解析。逆向是分析工具、静态和动态两种方式做分析。

资源混淆,概念来自于腾讯,是为了解决







































北京看白癜风那个医院最好
白癜风能否治愈



转载请注明:http://www.jiaju1314.com/lsqy/3699.html