智能手机通常带有预安装的应用程序,其中一些是有用的,有些根本就没用过。但是,用户并不期望预先安装的应用程序是对其隐私和安全性的实际责任。
Check Point Research最近在世界上最大的移动供应商之一小米(Xiaomi)中发现了一个预装应用程序中的一个漏洞,其中近8%的市场份额在手机市场排名第三。具有讽刺意味的是,它是预安装的安全应用程序“Guard Provider”(com.miui.guardprovider),它应该通过检测恶意软件来保护手机,恶意软件实际上会使用户受到攻击。
简而言之,由于进出Guard Provider的网络流量不安全,威胁行为者可以连接到与受害者相同的Wi-Fi网络并执行中间人(MiTM)攻击。然后,作为第三方SDK更新的一部分,他可以禁用恶意软件保护并注入他选择的任何流氓代码来窃取数据,植入勒索软件或跟踪或安装任何其他类型的恶意软件。
Check Point负责任地向小米公开了这个漏洞,后来不久发布了补丁。
图1:小米预装的安全应用程序,称为“警卫提供者”
一个中的三个第三方 SDK - 攻击如何工作
小米'Guard Provider'是所有主流小米手机中预装的应用程序,它使用多个第三方软件开发套件(SDK)作为其提供的安全服务的一部分,包括各种类型的设备保护,清除和增强。
该应用程序包括内置的三个不同的防病毒品牌,用户可以选择保护他们的手机:Avast,AVL和腾讯。选择应用程序后,用户选择其中一个提供程序作为默认的防病毒引擎来扫描设备。
在解释潜在的攻击场景之前,重要的是要指出在同一个应用程序中使用多个SDK实际上存在一些隐藏的缺点。因为它们都共享应用程序上下文和权限,所以这些主要缺点是:
- 一个SDK中的问题会损害所有其他SDK的保护。
- 一个SDK的私有存储数据不能被隔离,因此可以被另一个SDK访问。
在小米卫士提供商的案例中,我们将在下面展示如何在整合两个有问题行为的SDK时进行远程执行代码执行(RCE)攻击。
简而言之,由于Guard Provider的任何小米设备的网络流量都是不安全的,因此可以通过中间人(MiTM)攻击拦截它,并将恶意代码作为第三方SDK更新的一部分注入。让我们看看可能的攻击情形。
一个中的三个第三方 SDK - 攻击如何工作
小米'Guard Provider'是所有主流小米手机中预装的应用程序,它使用多个第三方软件开发套件(SDK)作为其提供的安全服务的一部分,包括各种类型的设备保护,清除和增强。
该应用程序包括内置的三个不同的防病毒品牌,用户可以选择保护他们的手机:Avast,AVL和腾讯。选择应用程序后,用户选择其中一个提供程序作为默认的防病毒引擎来扫描设备。
在解释潜在的攻击场景之前,重要的是要指出在同一个应用程序中使用多个SDK实际上存在一些隐藏的缺点。因为它们都共享应用程序上下文和权限,所以这些主要缺点是:
- 一个SDK中的问题会损害所有其他SDK的保护。
- 一个SDK的私有存储数据不能被隔离,因此可以被另一个SDK访问。
在小米卫士提供商的案例中,我们将在下面展示如何在整合两个有问题行为的SDK时进行远程执行代码执行(RCE)攻击。
简而言之,由于Guard Provider的任何小米设备的网络流量都是不安全的,因此可以通过中间人(MiTM)攻击拦截它,并将恶意代码作为第三方SDK更新的一部分注入。让我们看看可能的攻击情形。
第1阶段:抓住Avast更新
默认情况下,通过将Avast设置为应用程序的安全扫描程序,该应用程序会定期更新其病毒数据库,方法是将avast-android-vps-v4-release.apk APK文件下载到Guard Provider的私人目录:/data/data/com.miui。 guardprovider / app_dex / vps_update _ <timestamp> .apk。
然后,在扫描设备之前,此AV文件将由Avast SDK加载并执行,并包含下载文件时的时间戳。例如,vps_update_20190205-124933.apk。
图2: Avast更新文件。
遗憾的是,由于更新机制使用不安全的HTTP连接来下载此文件,威胁行为者通过MiTM攻击可以检测Avast更新的时间并预测下一个磁盘的APK文件名。攻击者只需截取http://au.ff.avast.sec.miui.com/android/avast-android-vps-v4-release.apk连接的响应部分即可。
图3: Avast更新流量
牢记这一点,因为Avast更新的预测文件名将在攻击的第二步中使用。
通过初始拦截,MITM攻击者因此能够通过响应http://au.ff.avast.sec.miui.com/android/vps_v4_info.vpx请求的“404错误”来阻止未来的Avast更新。
第2阶段:通过AVL更新路径遍历漏洞覆盖Avast更新APK
一旦攻击者开始主动阻止与Avast服务器的连接,用户就会将默认防病毒软件切换到另一个 - 在这种情况下,AVL Anti-Virus。请记住,AVL防病毒SDK也是Guard Provider应用程序的内置部分。
AVL成为默认防病毒软件后,会立即使用病毒库更新应用程序。它通过请求配置文件(例如http://update.avlyun.sec.miui.com/avl_antiy/miuistd/siglib/20180704.cj.conf)检查是否存在新病毒签名来实现此目的。此.conf文件具有纯文本格式,表示具有新签名的ZIP存档的URL,大小和MD5哈希。
图4: AVL更新配置文件。
处理完配置文件后,AVL会下载read_update_url字段中指示的签名存档,并将其解压缩到Guard Provider目录。
MITM攻击者再一次能够更改.conf文件的内容,因为它是通过非安全连接下载的,使用is_new = 0来显示是否存在新更新,并提供指向精心制作的ZIP文件的URL链接。
图5:修补的AVL更新配置文件。
事实证明,AVL SDK易受另一个安全问题的攻击,该问题可帮助攻击者执行攻击的第二阶段:解压缩过程中的路径遍历。因此,攻击者可以使用精心设计的存档覆盖应用程序沙箱中的任何文件,包括与其他SDK相关的文件。
因此,精心设计的APK(作为“../../app_dex/vps_update_20190205-124933.apk”条目附加到ZIP签名的存档中)将成功覆盖以前从Avast下载的更新,因为两个防病毒SDK组件都使用各自SDK中的相同沙盒。
如果您还记得,在MiTM攻击的第一步中检测到了最后一次Avast更新的APK文件名。
图6:带有AVL签名的精心打印的存档。
攻击者现在需要做的就是释放Avast通信并阻止AVL的通信,直到用户再次选择Avast作为活动防病毒。发生这种情况时,Avast SDK将加载并执行制作的恶意APK文件。
攻击是成功的,因为之前的Avast更新的签名文件在加载之前未经过验证,而Guard Provider在第一次下载时已经对其进行了检查。因此,假设没有理由再次验证它。通过这种方式,可以下载和运行精心制作的恶意文件,因为他基本上已经潜伏在守卫的后面。
结论
完全可以理解的是,用户会信任智能手机制造商预装的应用程序,特别是当这些应用声称保护手机本身时。然而,在小米的“卫队提供者”中发现的这个漏洞提出了一个令人担忧的问题,即谁在守卫监护人。虽然监护人不一定需要防范,但显然在应用程序开发方面,即使是智能手机厂商内置的应用程序,也不能太谨慎。
上述攻击情形还说明了在一个应用程序中使用多个SDK的危险。虽然每个SDK中的小错误通常可能是一个独立的问题,但是当在同一个应用程序中实现多个SDK时,更多关键漏洞可能不会太遥远。
Check Point SandBlast Mobile,如果安装在设备上,将检测并防止最初的中间人攻击,从而消除小米卫士提供商中此漏洞造成的威胁。
本文作者为Mr.Bai,转载请注明。