微软发现安卓系统中预装APP中的多个安全漏洞,下载量超百万。
微软在mce系统移动框架中发现多个高危安全漏洞,漏洞CVE编号分别为CVE-2021-42598、CVE-2021-42599、CVE-2021-42600和CVE-2021-42601,CVSS评分在7到8.9分之间。该框架被多个移动服务提供商用于预装的安卓系统APP中,攻击者利用这些漏洞可以实现本地或远程攻击。
CVE-2021-42599:命令注入漏洞
研究人员在device服务中发现了一个命令注入漏洞,漏洞CVE编号为CVE-2021-42599。Device服务具有停止给定包活动的能力。客户端完全控制了value参数,简单运行一下命令:
am force-stop "value"
因为该参数没有正则化,攻击者可以添加backticks或quotation marks来运行任意代码,如:
am force-stop "a"; command-to-run; echo "a"
图1 Device服务中实现命令注入的PoC代码
Mce公司已经移除了有漏洞的代码,有漏洞的代码已经不存在于新版本的框架中。
特定APP PiTM JS注入漏洞利用
Mac框架提供的访问表明漏洞存在于APP JS客户端逻辑中,APP可配置为明文通信。但客户端的代码是混淆的动态JS代码,主要是bundle.js。由于JS客户端与JarvisJSInterface服务器的信任,可以成功注入JS内容到WebView的攻击者可以继承APP已有的权限。
注入策略:
向BROWSABLE Intent中提供指定GET参数来影响JS客户端行为;
用BROWSABLE Intent来触发APP成为中间人,查看设备的全部流量。如果客户端尝试提取外部内容来注入JS内容并翻译为脚本或HTML。
研究人员逆向客户端混淆后的代码,发现不能从GET参数注入JS。唯一可做的是影响客户端的自测试,比如电池耗尽测试或WiFi连接测试。
PoC执行步骤如下:
对目标设备执行中间人攻击,诱使用户点击“mcesystems://”中的链接;
注入JS到以下明文页面响应:
通过callback方法调用init来劫持JS接口;
使用JS接口请求方法来获得服务;
使用XHR发送数据给服务器来进行信息收集。
图2 注入JS代码到WebView,允许攻击者调用任意服务和方法
CVE-2021-42601:反序列化本地权限提升
研究人员在框架中还发现了一个本地权限提升漏洞——CVE-2021-42601,允许恶意APP获得系统APP的权限。
研究人员发现在以上APP中,main Activity尝试处理一个Google Firebase的链接(点击后会启动APP而非浏览器)。该链接的处理会尝试用密钥com.google.firebase.dynamiclinks.DYNAMIC_LINK_DATA反序列化来自Intent Extra字节数组的结构PendingDynamicLinkData。之后,mce框架会使用该框架来生成不同的JSON对象,其中可能包含原始链接中categoryId查询参数的数据,最终mFlowSDKInput会以一种不安全的方式注入到JarvisWebView实例中:
图3 未处理的JS加载允许任意代码注入到WebView
因为categoryId查询参数可能包含多个符号,一个可以注入任意JS代码到webview中。研究人员决定注入代码来服务器并加载第二阶段代码。
图4 本地注入PoC漏洞利用
本文翻译自:https://www.microsoft.com/security/blog/2022/05/27/android-apps-with-millions-of-downloads-exposed-to-high-severity-vulnerabilities/如若转载,请注明原文地址