近日,研究人员披露了一个名为「Dirty Stream」的严重安全漏洞,该漏洞可能影响几款下载总量数十亿的 Android 应用程序。
微软威胁情报团队成员 Dimitrios Valsamaras 在一份报告中声明,威胁攻击者可以利用该安全漏洞,执行任意代码以及盗取令牌。一旦成功利用漏洞,威胁攻击者就可以完全控制应用程序的「行为」,并利用窃取的令牌在未经授权的情况下访问受害者的在线账户和其他数据。
这一安全漏洞可能会给大量设备带来威胁风险, Google Play 商店中目前已经发现了几个易受攻击的应用程序,这些应用程序的总安装量超过了 40 亿,其中受该安全漏洞影响程度最大的两个应用程序如下:
小米文件管理器 (com.mi. Android.globalFileexplorer) -,安装量超过 10 亿次
WPS Office (cn.wps.moffice_eng) -,安装量超过 5 亿次
安卓系统通过为每个应用程序分配专用的数据和内存空间来实现隔离,并以安全的方式促进应用程序之间的数据和文件共享。但实施过程中的疏忽可能会导致绕过应用程序主目录内的读/写限制。
Valsamaras 表示,这种基于内容提供商的模式提供了一种定义明确的文件共享机制,使服务应用程序能够以安全的方式与其他应用程序共享文件,并进行细粒度控制。
然而,在执行的过程中,经常遇到消费应用程序并不验证其接收到的文件内容,最令人担忧的是,它使用服务应用程序提供的文件名将接收到的文件缓存在消费应用程序的内部数据目录中。当服务应用程序为了实现应用程序之间的文件共享而声明恶意版本的 FileProvider 类时,这一「陷阱」可能会造成严重后果,最终导致消费应用程序覆盖其私有数据空间中的关键文件。
换句话说,该机制利用了消费应用程序盲目信任输入这一事实,通过自定义、明确的意图,在用户不知情或未经用户同意的情况下发送带有特定文件名的任意有效载荷,从而导致代码执行。
这时候,威胁攻击者就可以覆盖目标应用程序的共享首选项文件,使其与受其控制的服务器通信,从而外泄敏感信息。另一种情况是应用程序从自己的数据目录(而不是「/data/app-lib」)加载本地库,在这种情况下,恶意应用程序可以利用上述漏洞,在加载本地库时用恶意代码覆盖该库并执行。
值得一提的是,在接到安全漏洞披露通知后,小米和 WPS Office 均已于 2024 年 2 月对该安全漏洞问题进行了整改。与此同时,谷歌也就此发布了详细的指导意见,敦促开发者正确处理服务器应用程序提供的文件名。
谷歌方面强调,当客户端应用程序将接收到的文件写入存储时,应该忽略服务器应用程序提供的文件名,而使用自己内部生成的唯一标识符作为文件名,如果生成唯一的文件名不能轻易实现,客户端应用程序就应该对提供的文件名进行核验、清查。
最后,微软方面指出,该安全漏洞问题非常普遍,相关开发者应当采取措施,仔细检查自身应用程序是否存在类似问题。
参考资料:
https://thehackernews.com/2024/05/popular-android-apps-like-xiaomi-wps.html