导语:安卓高危漏洞Janus,编号CVE-2017-13156,攻击者利用该漏洞修改应用而不影响应用签名。影响安卓5.1.1到安卓8.0版本,大约74%的安卓设备受影响。
安卓官方12月份更新修复了一个高危漏洞,攻击者可以利用该漏洞修改应用而不影响应用签名。漏洞名称为Janus,CVE编号CVE-2017-13156,影响安卓5.1.1到安卓8.0版本,大约74%的安卓设备受影响。
Trend的研究人员发现一个使用该技术的应用——world news,应用利用该漏洞使其很难被杀毒软件等检测到。这很有可能被用来修改其他的应用并访问用户信息。
漏洞分析
安卓应用的安装包实际上是一个.zip文件,zip文件的格式有许多可以被攻击的地方。下面是基本.zip的文件结构:
图 1. .ZIP文件结构
.zip文件结构含有三部分,file entries,Central Directory和End of Central Directory。Central Directory含有每个文件的信息,应用用这个目录来寻找需要的文件内存位置。但是,对于每个file entry没有要求必须相邻,甚至可以如图2所示在entry之间任意放置数据:
图 2. .ZIP文件结构(红色区域可任意填充数据)
攻击者可以在APK文件的开始放置一个恶意的DEX文件,如图3所示。一个有漏洞的安卓系统版本就会把它当做有效的APK文件,并执行该文件。
图 3. 在APK文件开头加入恶意DEX
ART(Android Runtime,安卓运行态)是负责从APK文件中加载DEX代码的。ART会检查这个文件,因为header中有DEX代码,ART会认为这是DEX文件,并直接执行。ART会把DEX之后的代码看做是垃圾数据并忽视。
漏洞影响
一般来说,恶意软件有两种方式来利用这个漏洞。
首先,可以用来隐藏payload。恶意软件会把自己伪装成一个干净的DEX文件,而恶意payload文件存储在APK文件中之后加载。这就是world news应用的伪装方式。
然后,可以在开发者不知情的情况下更新已经安装的应用。攻击者可以用这种方式来访问原来的应用中受保护的数据,比如用户身份证书信息和隐私信息。冒充合法应用的身份还可以绕过杀软等安全解决方案。
在野攻击
漏洞公布后,研究人员检查了已有的恶意软件样本来确认有没有已知的恶意软件样本使用该漏洞。发现了一个使用该漏洞的恶意软件样本,但并不是研究人员所以为的那种利用方式。研究人员称之为ANDROIDOS_JANUS.A。Google已经将该应用标记为恶意应用,同时研究人员与Google一起协作提供合适的解决措施。
这个应用是在Google play中发现的,是一个垃圾经理软件,最近更新为新闻应用,目前已经从Google play应用商店下架了。
图 4.利用Janus漏洞的应用图标
该恶意软件用该漏洞进行动态代码分析。嵌入的DEX文件只含有一个很小的payload,用来从不同的资产中解密真实的payload,并动态加载。这是通过伪造一个头部含有DEX文件的应用来完成的,其中真实的payload隐藏在APK代码中。这意味着要绕过恶意软件扫描器,恶意软件扫描器会首先处理DEX文件并证明它是干净的,而忽略后面的恶意代码。
当安卓设备开机后,它会以后台服务的形式允许。连接到C&C服务器,接收安装其他恶意软件的命令,这些新的恶意软件会扩展当前恶意软件的功能。
图 5. 下载其他恶意软件的代码
假设Janus可以被用来恶意地更新设备中已经安装的应用。通过对代码的分析表明,该应用并没有对其他应用进行升级攻击,Janus只被用来绕过安全软件的检测。但是未来有可能被用来对其他应用发起升级攻击。
开发者的解决方案
Android 7.0引入了新的签名方案,新的签名方案中,签名证书和摘要从meta区移到了APK signing block(位于file entries和Central Directory之间),负责保护其他几个区域的完整性。
图 6.新签名方案对APK文件添加签名区
File entries之间不连续仍然是允许的,但是,系统会检查file开头一直到APK signing block,这就是说,任何的修改都会破坏签名的完整性校验。但是,仍然有可能在header注入DEX文件,但是成功的攻击(修改、注入)需要对APK signing block重新进行签名。
出于兼容性,开发者一般会选择混合签名方案,也就是version1和version2混合。这种方案的效果不同的设备会有差异,在不支持的设备上,version2是通过回滚保护强制执行的。
图 7. Rollback保护
对于只支持version1签名方案的安卓版本来说,攻击仍然是可能的。研究人员推荐开发者继续使用混合签名的方案。
结论
该漏洞的影响是几年前的Android Master key漏洞有一点相似,两个漏洞都允许攻击者在用户不知情的情况下修改已安装的合法应用。如果攻击者利用该漏洞修改了合法应用,并上传到应用商店中。那么用户就会同时面临两种风险,一是恶意应用被看做是合法应用,二是恶意应用通过应用商店可以修改大量的合法应用。
并不是所有的手机安全软件都可以解决这个挑战。嵌入在header的恶意DEX代码可以绕过许多的安全软件,企业级MDM也可能检测不到这些应用,而且MDM也可能会被恶意应用修改。厂商必须要提高他们扫描和检测恶意安卓应用的能力了。
IoC
World news应用