顶象技术独家分析:安卓“Janus”漏洞的产生原理及利用过程

企业动态
近日,Google在12月发布的安卓系统安全公告中披露了一个名为“Janus”安卓漏洞(漏洞编号:CVE-2017-13156)。该漏洞可以让攻击者绕过安卓系统的signature scheme V1签名机制,进而直接对App进行篡改。

近日,Google在12月发布的安卓系统安全公告中披露了一个名为“Janus”安卓漏洞(漏洞编号:CVE-2017-13156)。该漏洞可以让攻击者绕过安卓系统的signature scheme V1签名机制,进而直接对App进行篡改。而且由于安卓系统的其他安全机制也是建立在签名和校验基础之上,该漏洞相当于绕过了安卓系统的整个安全机制。

  一旦攻击者将植入恶意代码的仿冒的App投放到安卓商店等第三方应用市场,就可替代原有的App做下载、更新。网友安装这些仿冒App后,不仅会泄露个人账号、密码、照片、文件等隐私信息,手机更可能被植入木马病毒,进而或导致手机被ROOT,甚至被远程操控。

  在第一时间监测到“janus”漏洞的情况后,顶象技术及时更新了“安全SDK”的防御策略,并率先发布了针对该漏洞的防护方案,以帮助广大用户防范基于该漏洞的攻击威胁。

  分析显示,安卓5.0到8.0系统以及基于signature scheme V1签名机制的App均受“Janus”漏洞影响;基于signature scheme V2签名的App则不受影响。

  安卓用户:

  1、尽快升级到最新版安卓系统;

  2、短期内,尽量到官方网站更新、下载App。

  安卓开发者:

  1、尽快将App APK(安装包)升级到最新的Signature scheme V2签名机制;

  2、及时校验App APK文件的开始字节,以确保App是未被篡改;

  3、顶象技术的“安全SDK”以更新防御机制,可以有效防护该漏洞。

  “Janus”漏洞爆发原因是什么?

  为了提升安卓系统的安全性,Google发布了新的签名认证体系signature scheme V2。由于,signature scheme V2需要对App进行重新发布,而大量的已经存在的App APK无法使用V2校验机制,所以为了保证向前兼容性,V1的校验方式的还被保留,这就导致了“Janus”漏洞的出现。

  Google为什么发布signaturescheme V2呢?那就盘点一下,近年来安卓系统曾爆出的一系列安全问题吧。

  这些年,安卓系统爆出的签名漏洞

  “MasterKey”漏洞

  “Janus”是一个签名与校验漏洞,其实,这不是安卓第一次爆出此类漏洞。在2013年 Black Hat上,Bluebox的安全团队公布了一个“MasterKey”漏洞。该漏洞影响包括当时最新的安卓6.0系统及以下所有系统。那么,这些漏洞是怎么形成的呢?

  “MasterKey”漏洞原理是基于APK(ZIP文件格式)里面的多个ZipEntry实现的,具体如下:

  1. 向原始的App APK的前部添加一个攻击的classes.dex文件(A);

  2. 安卓系统在校验时计算了A文件的hash值,并以”classes.dex”字符串做为key保存;

  3. 然后安卓计算原始的classes.dex文件(B),并再次以”classes.dex”字符串做为key保存,这次保存会覆盖掉A文件的hash值,导致Android系统认为APK没有被修改,完成安装;

  4. APK程序运行时,系统优先以先找到的A文件执行,忽略了B,导致漏洞的产生。

  修复方式:

  禁止安装有多个同名ZipEntry的APK文件。

 

 

  “9695860”漏洞

  MasterKey漏洞爆出后没多久,国内的“安卓安全小分队”再爆出一个类似的漏洞。这个漏洞非常精巧:利用了Zip local file header在计算时候的一个整形溢出漏洞。

  具体原因:

  1. 向原有的APK中的classes.dex文件B替换为攻击文件A,并添加一个大小为0xFFFD的extrafield;

  2. 将原始dex文件B去除头3个字节写入extrafield;

  3. Android系统在校验签名时使用的是Java代码的short,将0xFFFD以16位带符号整形的方式解析得到-3, 并解析出原始的文件B,Android认为程序APK无修改,正常安装;

  4. 系统在执行时使用C代码的uint16,将0xFFFD以16位无符号整形方式,得到攻击文件B。

  这个漏洞的精巧之处在于,DEX文件以‘dex’字符串开头,而classes.dex以这个字符串结尾,通过-3的值将这两个内容在文件中重叠起来,因此这也限制了“9695860”漏洞只能对classes.dex进行攻击。

 

 

  “9950697”漏洞

  在“9695860”漏洞爆出不久后,APK文件中被发现存在类似的整形溢出漏洞,这个比“9695860”漏洞更容易利用且可以攻击APK中的任意文件。

  原因是安卓默认认为Zip中localfile header和central directory entry中的文件名长度和和extra的长度是一致的。安装过程中java代码在处理时出现溢出,读取到了正常的文件B,通过校验,APK正常安装。运行过程中,C代码处理时没有溢出,读取到了攻击的文件A。

 

 

  Google发布了signature scheme V2签名机制

  以上的一系列漏洞全部出在基于jarsigner机制建立起来的签名和校验机制signature scheme V1出现。Google也意识到了这套机制的缺陷,所以,发布了重新设计的Siginature scheme V2签名机制。

  Siginature scheme V2 APK文件整个内容进行签名,目标是任何对APK的修改都会导致检验的失败。

  目前signature scheme V2已经在安卓7.0系统及以上的版本中支持。

  “Janus”漏洞的攻击原理和利用过程

  攻击原理

  1、安卓在4.4中引入了新的执行虚拟机ART,这个虚拟机经过重新的设计,实现了大量的优化,提高了应用的运行效率。与“Janus”有关的一个技术点是,ART允许运行一个raw dex,也就是一个纯粹的dex文件,不需要在外面包装一层zip。而ART的前任DALVIK虚拟机就要求dex必须包装在一个zip内部且名字是classes.dex才能运行。当然ART也支持运行包装在ZIP内部的dex文件,要区别文件是ZIP还是dex,就通过文件头的magic字段进行判断:ZIP文件的开头是‘PK’, 而dex文件的开头是’dex’.

  2、ZIP文件的读取方式是通过在文件末尾定位central directory, 然后通过里面的索引定位到各个zip entry,每个entry解压之后都对应一个文件。

 

 

  影响的范围

  1. 安卓5.0-8.0的各个版本系统;

  2. 使用安卓Signaturescheme V1签名的App APK文件。

  利用过程

  1、攻击者可以向APK文件的开始位置放置一个攻击的DEX文件A;

  2. 安卓系统在安装时用ZIP的读取机制从末尾开始进行文件的读取,读取到了原始的APK内容,并且以V1的方式进行校验,认为这个文件是正常的,没有篡改,APK安装成功;

  3. 在运行时,Android的ART虚拟机从文件头开始读取,发现是一个DEX文件,直接执行,攻击文件A被最终执行。

  带来的威胁

  可以在没有apk所有者的证书的情况下对apk进行修改,并且绕过校验机制安装在用户的手机上,造成的可能后果如下:

  1. 对存储在原手机上的数据进行读取,例如金融类APP的银行密码、支付密码、token; 通信类APP的聊天记录、图片、通信录

  2. 对用户的输入做各种监听、拦截、欺诈,引导用户输入密码,转账。

  3. 利用这个漏洞可以更新Android的系统APP,从获得更高的系统权限,甚至root/越狱,为其他攻击做准备

  顶象技术的防护及修复建议

  顶象技术一直关注移动端、WEB端上的各类风险以及各平台的业务威胁。及时分析监测到漏洞和威胁,并做好针对性的防护措施,由此积累了大量与黑灰产对抗的实战经验。顶象技术将这些实战经验以“安全SDK”的产品方式共享给用户,从而帮助用户建立高效的防御体系,有效防御各类新型的、复杂的恶意攻击和威胁。

  在第一时间监测到“janus”漏洞的情况后,顶象技术及时更新了“安全SDK”的防御策略,并率先发布了针对该漏洞的安全防护方案,以帮助广大用户防范基于该漏洞的攻击威胁。

  安卓用户:

  1、尽快升级到最新版安卓系统;

  2、尽量到官方网站更新、下载App,短期内不用使用第三方安卓应用市场更新或下载App。

  安卓开发者:

  1、将App APK升级到最新的Signature scheme V2签名机制;

  2、开发者及时校验App APK文件的开始字节,以确保App未被篡改;

  3、使用顶象技术提供的安全SDK,以防范该漏洞的攻击。

责任编辑:张燕妮 来源: 互联网
相关推荐

2019-04-02 08:30:03

2019-02-26 15:15:16

DNS漏洞IP

2009-03-09 12:37:48

2016-09-29 14:37:39

ImageMagick漏洞分析

2009-07-06 17:47:44

2013-07-30 10:01:10

2016-11-11 11:11:25

2016-03-29 10:48:53

2015-09-23 13:38:42

2021-07-29 15:48:04

漏洞网络安全网络攻击

2023-07-26 17:13:38

2017-07-19 11:11:40

CTS漏洞检测原理浅析

2013-03-22 10:00:14

2017-03-17 19:59:39

2021-03-24 14:28:33

漏洞高通芯片安卓设备

2020-10-14 09:44:52

漏洞
点赞
收藏

51CTO技术栈公众号