您所在的位置: 首页 >
新闻资讯 >
威胁情报 >
数十亿Android设备面临“脏流”攻击!小米文件管理器、WPS Office在列!
微软的研究人员最近发现许多Android应用程序(其中至少有四个应用程序的安装量超过5亿次)由于常见的安全漏洞而容易受到远程代码执行攻击、令牌盗窃和其他问题的影响。微软向谷歌的Android安全研究团队通报了该问题,谷歌也为Android应用开发者发布了关于如何识别和修复该问题的新指南。
微软威胁情报团队的Dimitrios Valsamaras在5月1日发布的一份报告中表示:“此漏洞模式的影响包括任意代码执行和令牌盗窃,具体取决于应用程序的实现。”成功利用该漏洞可能使攻击者能够完全控制应用程序的行为,并利用被盗的令牌对受害者的在线帐户和其他数据进行未经授权的访问。
数十亿装置面临受损风险
微软还与Google Play商店中受影响的Android应用程序供应商分享了其调查结果。其中包括小米公司的文件管理器产品,其安装量超过10亿次,另外一个的流行的文档处理软件WPS Office,下载量约为5亿次。
在小米公司的文件管理器中,微软研究团队能够在V1-210567版本中获得任意代码执行。经过负责任的披露,小米发布了V1-210593版本,微软确认该漏洞已得到解决。在WPS Office中,微软研究团队能够在16.8.1版本中获得任意代码执行。在披露后,WPS发布并通知我们该漏洞已从版本17.0.0开始得到解决。
微软表示,这两款产品的供应商已经解决了这个问题。但它相信,由于同样的安全漏洞,还有更多的应用程序容易被利用和破坏。微软威胁情报团队在其博客文章中表示:“我们预计该漏洞模式可能会在其他应用程序中发现。” “我们正在分享这项研究,以便开发者和发行商可以检查他们的应用程序是否存在类似问题,进行适当的修复,并防止将此类漏洞引入新的应用程序或版本中。”
Microsoft发现的问题影响与其他应用程序共享文件的Android 应用程序。微软表示,为了以安全的方式促进共享,Android实现了所谓的“内容提供商”功能,该功能基本上充当管理应用程序数据并将其公开给设备上其他已安装应用程序的接口。需要共享其文件的应用程序(或者Android中的文件提供程序)声明其他应用程序可以用来获取数据的特定路径。文件提供程序还包括识别功能,其他应用程序可以将其用作在系统上查找它们的地址。
盲目信任和缺乏内容验证
微软表示:“这种基于内容提供商的模型提供了明确定义的文件共享机制,使服务应用程序能够通过细粒度控制以安全的方式与其他应用程序共享其文件。”但是,在许多情况下,当Android应用程序从另一个应用程序接收文件时,它不会验证内容。“最令人担忧的是,它使用服务应用程序提供的文件名将接收到的文件缓存在消费应用程序的内部数据目录中。”
微软表示,这为攻击者提供了创建恶意应用程序的机会,该应用程序可以在用户不知情或未经用户批准的情况下,将带有恶意文件名的文件直接发送到接收应用程序(或文件共享目标)。典型的文件共享目标包括电子邮件客户端、消息传递应用程序、网络应用程序、浏览器和文件编辑器。微软表示,当共享目标收到恶意文件名时,它会使用该文件名来初始化文件并触发一个进程,该进程可能会导致应用程序受到损害。
主要的漏洞利用步骤及流程
潜在影响将根据Android应用程序的实现细节而有所不同。在某些情况下,攻击者可能会使用恶意应用程序覆盖接收应用程序的设置,并使其与攻击者控制的服务器进行通信,或使其共享用户的身份验证令牌和其他数据。在其他情况下,恶意应用程序可能会将恶意代码覆盖到接收应用程序的本机库中,以实现任意代码执行。微软表示:“由于流氓应用程序控制了文件的名称和内容,因此通过盲目信任此输入,共享目标可能会覆盖其私有数据空间中的关键文件,这可能会导致严重后果。”
微软和谷歌都向开发者提供了如何避免该问题的提示。与此同时,最终用户可以通过确保他们的Android应用程序是最新的并且仅安装来自可信来源的应用程序来降低风险。
微软的安全建议
认识到这种漏洞模式可能很普遍,微软与Google的Android应用程序安全研究团队分享了其发现。并与Google合作,为Android应用程序开发人员编写指南,帮助他们认识并避免这种模式。微软建议开发人员和安全分析师熟悉Google提供的优秀Android应用程序安全指南,并利用Android SDK 包含的Android Lint工具并与Android Studio集成(辅以Google额外的以安全为重点的检查)来识别并避免潜在的漏洞。GitHub的CodeQL还提供了识别漏洞的功能。
为了防止这些问题,在处理其他应用程序发送的文件流时,最安全的解决方案是在缓存接收到的内容时完全忽略远程文件提供程序返回的名称。微软遇到的一些最强大的方法使用随机生成的名称,因此即使传入流的内容格式错误,也不会篡改应用程序。
如果这种方法不可行,开发人员需要采取额外的步骤来确定缓存文件是否写入专用目录。由于传入的文件流通常由内容URI标识,因此第一步是可靠地识别和清理相应的文件名。除了过滤可能导致路径遍历的字符以及在执行任何写入操作之前,开发人员还必须通过调用File.getCanonicalPath并验证返回值的前缀来验证缓存的文件是否位于专用目录中。
另一个需要保护的方面是开发人员尝试从内容URI中提取文件名的方式。开发人员经常使用Uri.getLastPathSegment(),它返回最后一个路径URI段的(URL)解码值。攻击者可以在此段中使用URL编码字符(包括用于路径遍历的字符)制作URI。使用返回值来缓存文件可能会再次使应用程序容易受到此类攻击。
对于最终用户,微软建议通过Google Play商店(或其他适当的可信来源)使移动应用程序保持最新状态,以确保安装解决已知漏洞的更新。用户应仅安装来自受信任来源的应用程序,以避免潜在的恶意应用程序。微软建议在更新之前通过小米应用程序访问SMB或FTP共享的用户重置凭据并调查任何异常行为。Android上的Microsoft Defender for Endpoint可以向用户和企业发出恶意应用程序的警报,而Microsoft Defender漏洞管理可以识别已安装的具有已知漏洞的应用程序。
参考资源
1、https://thehackernews.com/2024/05/popular-android-apps-like-xiaomi-wps.html
2、https://www.darkreading.com/cloud-security/billions-android-devices-open-dirty-stream-attack
3、https://www.microsoft.com/en-us/security/blog/2024/05/01/dirty-stream-attack-discovering-and-mitigating-a-common-vulnerability-pattern-in-android-apps/
来源:网空闲话plus