在谷歌发布的 2017年12月Android安全公告中,包含了一个漏洞修复程序,该漏洞CNNVD-201712-181(CVE-2017-13156)允许恶意攻击者绕过应用程序签名并将恶意代码注入到Android应用程序(APK文件)中。
名为“Janus”的漏洞由比利时移动安全公司GuardSquare的研究团队发现,该漏洞存在于Android系统用于读取应用程序签名的机制中。
自从基于 JAR 签名的方案(v1 方案)颁布以来,Android系统就要求开发者对应用程序进行签名。在应用程序更新时,Android系统会将更新版本的签名与现有版本的签名进行比较。如果匹配,更新将会被允许。相反,如果更新来自恶意攻击者,会因为签名不一致而导致恶意更新无法安装,进而能够保证用户的安全。
Janus漏洞原理
GuardSquare的研究人员表示,他们可以为现有APK文件拼接一个恶意DEX文件,并且不会影响到现有APK文件的签名。
在这种情况下,Android系统会将拼接有恶意DEX文件的APK文件误判为原始APK文件的更新版本,进而允许它的安装。代码执行将从DEX的头部开始,这就意味着恶意代码能够在“合法”的环境中执行。
在安装完成后,“更新”后的应用程序(实际上的恶意应用程序)将继承原始应用程序的所有权限。这是十分危险的,如果被“更新”的是系统应用,那么它将能够获得足以劫持设备的最高管理员权限。
利用Janus漏洞发起攻击的方式唯一不足之处在于,它不能通过官方应用商店中托管恶意更新来执行。攻击者需要诱骗受害者访问第三方应用商店,并诱使他们安装更新。
受影响范围
Android系统支持两种应用签名方案,一种是基于 JAR 签名的方案(v1 方案),另一种是在Android Nougat (Android 7.0)中引入的 APK 签名方案 v2(v2 方案)。
根据GuardSquare的说法,Janus漏洞只影响使用应用程序签名方案v1签名的应用程序,使用签名方案v2签名的应用程序不在受影响范围内。
还没有评论,来说两句吧...