最新消息:Testin发布2017年第一季度安全监测报告显示,安全高危风险五项,所在细分领域涉及18类。五项高危风险分别是:
代码安全:反编译
代码安全:代码混淆
公开漏洞webview远程代码执行
公开漏洞Https弱校验
数据传输中间人劫持
高危风险涉及领域金融理财类居首,占总体数据的17.32%,排在前五的细分领域分别为:出行类、生活服务类、购物类、社交类、金融理财类。
各项高危风险涉及细分领域,最高频次如下:
代码反编译—常用工具领域
公开漏洞webview远程代码执行—金融理财领域
代码混淆—金融理财领域
公开漏洞Https弱校验—金融理财领域
数据传输中间人劫持—金融理财领域
以上五大高危风险的具体解释,潜在风险和修复建议,以下建议仅供参考:
1、高危风险—代码安全:反编译
风险解释:
反编译是指通过对他人软件的目标软件(比如可执行程序)进行“逆向分析、研究”工作,以推导出他人的软件产品所使用的思路、原理、结构、算法、处理过程、运行方法等设计要素,一些情况下可直接推导出源代码,如使用Java开发的安卓apk程序,可以直接被导出源代码。
风险危害:
泄露软件核心代码流程,可能被竞争对手直接窃取。
黑产人员可插入恶意代码后进行二次打包,冒充原程序,进行恶意行为。
源码暴露更加容易被黑产人员挖掘软件漏洞,更易受到攻击。
修复建议:
通过对目标DEX文件进行整体加密或压缩方式把整个dex转换为另外一个文件存放在assets文件夹中或者其它地方,然后利用类加载器技术进行内存解密并加载运行。
抽取DexCode中的字节码指令后用零去填充,或者修改方法属性等操作,运行时在内存中做修正、修复等处理工作。
使用第三方加固程序进行加固
2、高危风险—代码安全:代码混淆
风险解释:
代码混淆是将代码中的各种元素,如变量,函数,类的名字改写成无意义的名字。比如改写成单个字母,或是简短的无意义字母组合,甚至改写成“__”这样的符号,使得阅读的人无法根据名字猜测其用途。重写代码中的部分逻辑,将其变成功能上等价,但是更难理解的形式。比如将for循环改写成while循环,将循环改写成递归,精简中间变量等。打乱代码的格式。比如删除空格,将多行代码挤到一行中,或者将一行代码断成多行等。增大黑客直接分析代码的难度。
风险危害:
程序未经过代码混淆处理,开发时原始代码完全会被暴露给黑客,降低黑客的入侵成本
更加容易被进行分析,复制,盗取功能代码。
修复建议:
通过ProGuard对代码进行混淆处理
使用第三方收费产品进行加固
3、高危风险—公开漏洞:webview远程代码执行解析
漏洞分析:
android的sdk中封装了webView控件。这个控件主要用开控制的网页浏览。WebView组件中使用addJavascriptInterface方法用于实现本地Java和JavaScript的交互,但是该函数并没有对方法调用进行限制,导致攻击者可以调用任何JAVA类,最终导致JavaScript代码对设备进行任意代码执行攻击。
风险危害:
攻击者可以构建恶意WEB页,诱使用户解析,可以应用程序上下文执行任意命令。
攻击者可以利用该漏洞远程控制受害者手机,植入木马
修复建议:
Android 4.2 (api17)已经开始采用新的接口函数,@JavascriptInterface 代替addjavascriptInterface, 有些android 2.3不再升级,浏览器需要兼容。
在使用js2java的bridge时候,需要对每个传入的参数进行验证,屏蔽攻击代码。
控制相关权限或者尽可能不要使用js2java的bridge。
4、高危风险—公开漏洞:Https弱校验解析
漏洞分析:
自定义实现的X509TrustManager子类中,没有对服务器端证书做验证,默认接受任意服务端证书,会存在安全风险,可能会导致恶意程序利用中间人攻击绕过证书校验。
风险危害:
中间人攻击风险,所有流量可以被黑客直接明文读取。
被黑客恶意篡改访问或返回数据。
修复建议:
利用X509TrustManager子类中的checkServerTrusted函数,校验服务器端证书的合法性。
5、高危风险—数据传输:中间人劫持解析
风险分析:
由于客户端没有校验服务端的证书,因此攻击者就能与通讯的两端分别创建独立的联系,并交换其所收到的数据,使通讯的两端认为他们正在通过一个私密的连接与对方直接对话,但事实上整个会话都被攻击者完全控制。在中间人攻击中,攻击者可以拦截通讯双方的通话并插入新的内容。
风险危害:
攻击者可通过中间人攻击,盗取账户密码明文、聊天内容、通讯地址、电话号码以及信用卡支付信息等敏感信息,甚至通过中间人劫持将原有信息替换成恶意链接或恶意代码程序,以达到远程控制、恶意扣费等攻击意图。
修复建议:
建议对SSL证书进行强校验(签名CA是否合法、证书是否是自签名、主机域名是否匹配、证书是否过期等)