美国时间12月9日Google在其官网通告了一个名为“Janus”的安卓漏洞,该漏洞可以让攻击者绕过安卓系统的签名校验,直接在APP内恶意植入代码。
影响范围:
1 所有Android 5.0以上系统
2 所有仅采用了Android APK Signature Scheme V1签名机制的App
12月13日,360加固保团队紧急上线了针对Janus漏洞的解决方案,该方案对Janus漏洞进行扫描、检测并采取相应的安全保护措施,有效地防止黑客通过Janus漏洞修改原始Dex文件,插入恶意代码和广告,保护广大用户及开发者利益
Janus漏洞原理
Janus漏洞产生的根源在于将DEX文件和APK文件拼接之后校验签名时只校验了文件的APK部分,而虚拟机执行时却执行了文件的DEX部分,导致了漏洞的发生。由于这种同时为APK文件和DEX文件的二元性,联想到罗马的二元之神Janus,将该漏洞命名为Janus漏洞。
(Janus漏洞原理图)
Android支持两种应用签名方案,一种是基于JAR签名的方案(v1方案),另一种是Android Nougat(7.0)中引入的APK签名方案(v2方案)。
v1签名不保护APK的某些部分,例如ZIP元数据。APK验证程序需要处理大量不可信(尚未经过验证)的数据结构,然后会舍弃不受签名保护的数据。这会导致相当大的受攻击面。
Janus漏洞危害
代号为“Janus”的安卓漏洞(漏洞编号:CVE-2017-13156),能够让恶意攻击者在完全不修改App开发者签名的情况下,通过植入恶意dex代码,对App实施恶意代码注入,逃避Android签名校验机制甚至获取系统ROOT权限。
如何避免Janus漏洞?
开发者:
1 升级至V2签名;
在Android Studio中强制开启V2签名,如下图所示:
或在app的build.gradle的android标签下加入如下:
2. 360加固保提供的加固助手是支持V2签名,开发者们也可以使用加固助手进行签名。
用户:
1. 安卓用户更新安卓版本,第一时间更新安全补丁;
2. 尽量从APP官网下载更新APP,谨慎安装来路不明的APP。