“Janus” 安卓系统签名漏洞(CVE-2017-13156)

影响范围:

1、所有Android 5.0以上系统

2、所有仅采用了Android APK Signature Scheme V1 签名机制的App

Janus漏洞原理

Janus漏洞产生的根源在于将DEX文件和APK文件拼接之后校验签名时只校验了文件的APK部分,而虚拟机执行时却执行了文件的DEX部分,导致了漏洞的发生。由于这种同时为APK文件和DEX文件的二元性,联想到罗马的二元之神Janus,将该漏洞命名为Janus漏洞。

“Janus” 安卓系统签名漏洞(CVE-2017-13156)_第1张图片

Android支持两种应用签名方案,一种是基于JAR签名的方案(v1方案),另一种是Android Nougat(7.0)中引入的APK签名方案(v2方案)。

v1签名不保护APK的某些部分,例如ZIP元数据。APK验证程序需要处理大量不可信(尚未经过验证)的数据结构,然后会舍弃不受签名保护的数据。这会导致相当大的受攻击面。

Janus漏洞危害

代号为“Janus”的安卓漏洞(漏洞编号:CVE-2017-13156),能够让恶意攻击者在完全不修改App开发者签名的情况下,通过植入恶意dex代码,对App实施恶意代码注入,逃避Android签名校验机制甚至获取系统ROOT权限。

检测方法

  1. 检验apk的签名机制:使用漏洞核查工具GetApkInfo.jar(网上可下载)
    <1>使用命令java -jar GetApkInfo.jar *.apk查看APK信息及签名版本;
    <2>结果说明:
    ①若“V1签名验证通过”为true,则该APK使用V1签名,反之没有;
    ②若“V2签名验证通过”为true,则该APK使用V2签名,反之没有;
    ③若“V1签名验证通过”和“V2签名验证通过”均显示为true,则该应用同时使用 V1+V2签名。

  2. 若上述结果显示V2签名验证通过,则说明你的app是安全的;反之,重新打包签名,必须含有V2签名机制。

工具下载

GetApkInfo.jar

如何避免Janus漏洞?

开发者:

1、升级至V2签名
在Android Studio中强制开启V2签名,如下图所示:
“Janus” 安卓系统签名漏洞(CVE-2017-13156)_第2张图片
或在app的build.gradle的android标签下加入如下:
“Janus” 安卓系统签名漏洞(CVE-2017-13156)_第3张图片

用户:

  1. 安卓用户更新安卓版本,第一时间更新安全补丁

  2. 尽量从APP官网下载更新APP,谨慎安装来路不明的APP。

参考链接:
360加固保紧急上线针对“Janus”安卓漏洞的解决方案

你可能感兴趣的:(APP渗透测试)