CVE-2017-0780:一张GIF图,让最新版Android短信应用无限崩溃

简介: 本文讲的是CVE-2017-0780:一张GIF图,让最新版Android短信应用无限崩溃,有没有想过,一张看起来似乎是每个人随时都能欣赏到的GIF图,其实能够造成你的Android短信应用崩溃呢?
本文讲的是 CVE-2017-0780:一张GIF图,让最新版Android短信应用无限崩溃有没有想过,一张看起来似乎是每个人随时都能欣赏到的GIF图,其实能够造成你的Android短信应用崩溃呢?

我们最近报告给Google的一个拒绝服务(DoS)漏洞就能实现这一点。该漏洞为CVE-2017-0780,主要目标为最新版的Nexus以及Pixel设备。通过发送格式不正确的彩信(MMS),该安全漏洞可以允许攻击者非法和远程地瓦解其受害者的Android消息应用程序,致其完全崩溃。即使设备/系统重新启动或以安全模式启动,该应用程序也无法从崩溃状态中恢复。

影响

Google Play Store拥有超过5000万Android消息应用安装量。而且它还是许多Nexus和Pixel设备的默认消息应用程序(即意味着无法卸载),所以,对于使用它的终端用户和企业而言,该安全漏洞的影响可谓显而易见。

例如,企业可以利用Android消息应用来改善与客户的沟通方式。用户也可以创建更多个性化消息,不至与其他不同的应用混淆。而且,考虑到该应用程序已经被定位成为各种Android消息平台提供无缝消息传递服务,所以一旦该应用程序无法使用,势必将对Android用户的沟通方式和效果产生不利的影响。

此外,应用程序无法访问也可能是潜在攻击的催化剂,因为设备所有者将无法查看、删除或控制这些信息。例如,攻击者可以接管用户设备的SMS/MMS功能,或发送和接受包含恶意软件的SMS消息,这是已知某些移动威胁行为者最常使用的手段。

技术分析

我们在对Android消息应用中的GIF文件进行分析时发现,该漏洞涉及许多未处理的Java级NullPointerException(空指针异常,简称NPE)。利用该漏洞攻击者只需要一个电话号码将恶意GIF文件发送给潜在受害者即可。

 

CVE-2017-0780:一张GIF图,让最新版Android短信应用无限崩溃

【图1: Android消息中的FrameSequenceDrawable】

Android消息使用FrameSequenceDrawable来显示GIF文件。FrameSequence首先会根据GIF文件构建位图(bitmap)对象,然后framesequeceDrawable组件使用该位图(bitmap)显示GIF。但是,我们看到acquireAndValidateBitmap函数调用了位图中的“acquireBitmap”(包括图像文件的像素数据),而没有检查其是否有效。

 CVE-2017-0780:一张GIF图,让最新版Android短信应用无限崩溃

【图2: acquireBitmap函数(重点突出部分)】

当FrameSequence尝试根据一个格式不正确的GIF构建位图时,我们看到“acquireBitmap”函数可能会失败并返回null。因此,如果另一个模块/组件或变量引用此空对象,则会触发空指针异常(NPE)。

不幸的是,Android操作系统和Android消息应用都不处理此异常。这就导致消息应用程序在解析MMS中格式错误的GIF有效载荷时直接崩溃。

 CVE-2017-0780:一张GIF图,让最新版Android短信应用无限崩溃

【图3:NPE被触发】

缓解方案

用户可以选择重新刷新设备或将其重置为出厂设置。这将删除恶意的GIF文件以及存储在设备中的所有其他文件。不过,在此过程中用户需要衡量风险,或者先考虑先备份文件,然后再重新刷新或重置手机。不幸的是,卸载并重新安装应用程序并不能解决该问题。

另一种方法是手动禁用Android消息的“自动下载彩信”功能。备选方案还包括使用不受影响的消息应用程序手动删除恶意的MMS文件。

CVE-2017-0780:一张GIF图,让最新版Android短信应用无限崩溃

【图4:应用程序的高级设置,显示如何禁用“自动下载彩信”功能】

随着移动设备越来越普及,用户需要采取良好的安全习惯来尽可能避免此类安全漏洞的攻击。当收到未经请求的、可疑的以及未知的邮件和链接时,一定要谨慎处理,并且要定期保持设备操作系统及应用程序的更新升级。

幸运的是,最新版的Nexus和Pixel设备具有更为完善、统一的补丁程序的优点。但是,其他Android设备上的更新仍然是零散的,因此用户可以联系他们的设备制造商来获得最新更新程序的可用性。对于组织而言,IT/系统管理员应该执行更强大的补丁管理策略,以帮助提高BYOD设备的安全性。

我们已经向Google披露了该安全问题,Google也已经在2017年9月的Android安全公告中发布了该安全漏洞的修复程序,并已经成功部署到了Google Play商店中,相关用户可以前往下载。此外,Google还增加了安全网络日志,以监测在野利用此漏洞的任何攻击行为。




原文发布时间为:2017年9月9日
本文作者:小二郎
本文来自云栖社区合作伙伴嘶吼,了解相关信息可以关注嘶吼网站。
目录
相关文章
|
21天前
|
移动开发 Java Android开发
构建高效Android应用:探究Kotlin与Java的性能差异
【4月更文挑战第3天】在移动开发领域,性能优化一直是开发者关注的焦点。随着Kotlin的兴起,其在Android开发中的地位逐渐上升,但关于其与Java在性能方面的对比,尚无明确共识。本文通过深入分析并结合实际测试数据,探讨了Kotlin与Java在Android平台上的性能表现,揭示了在不同场景下两者的差异及其对应用性能的潜在影响,为开发者在选择编程语言时提供参考依据。
|
22天前
|
数据库 Android开发 开发者
构建高效Android应用:Kotlin协程的实践指南
【4月更文挑战第2天】随着移动应用开发的不断进步,开发者们寻求更流畅、高效的用户体验。在Android平台上,Kotlin语言凭借其简洁性和功能性赢得了开发社区的广泛支持。特别是Kotlin协程,作为一种轻量级的并发处理方案,使得异步编程变得更加简单和直观。本文将深入探讨Kotlin协程的核心概念、使用场景以及如何将其应用于Android开发中,以提高应用性能和响应能力。通过实际案例分析,我们将展示协程如何简化复杂任务,优化资源管理,并为最终用户提供更加流畅的体验。
|
22天前
|
开发框架 安全 Android开发
探索安卓系统的新趋势:智能家居应用的蓬勃发展
随着智能家居概念的兴起,安卓系统在智能家居应用领域的应用日益广泛。本文将探讨安卓系统在智能家居应用开发方面的最新趋势和创新,以及其对用户生活的影响。
14 2
|
25天前
|
缓存 监控 Java
构建高效Android应用:从优化用户体验到提升性能
在竞争激烈的移动应用市场中,为用户提供流畅和高效的体验是至关重要的。本文深入探讨了如何通过多种技术手段来优化Android应用的性能,包括UI响应性、内存管理和多线程处理。同时,我们还将讨论如何利用最新的Android框架和工具来诊断和解决性能瓶颈。通过实例分析和最佳实践,读者将能够理解并实施必要的优化策略,以确保他们的应用在保持响应迅速的同时,还能够有效地利用系统资源。
|
26天前
|
Java Android开发
Android 开发获取通知栏权限时会出现两个应用图标
Android 开发获取通知栏权限时会出现两个应用图标
12 0
|
30天前
|
编解码 算法 Java
构建高效的Android应用:内存优化策略详解
随着智能手机在日常生活和工作中的普及,用户对移动应用的性能要求越来越高。特别是对于Android开发者来说,理解并实践内存优化是提升应用程序性能的关键步骤。本文将深入探讨针对Android平台的内存管理机制,并提供一系列实用的内存优化技巧,以帮助开发者减少内存消耗,避免常见的内存泄漏问题,并确保应用的流畅运行。
|
23天前
|
Java Android开发 开发者
构建高效Android应用:Kotlin协程的实践与优化
在响应式编程范式日益盛行的今天,Kotlin协程作为一种轻量级的线程管理解决方案,为Android开发带来了性能和效率的双重提升。本文旨在探讨Kotlin协程的核心概念、实践方法及其在Android应用中的优化策略,帮助开发者构建更加流畅和高效的应用程序。通过深入分析协程的原理与应用场景,结合实际案例,本文将指导读者如何优雅地解决异步任务处理,避免阻塞UI线程,从而优化用户体验。
|
28天前
|
Java 编译器 Android开发
构建高效Android应用:探究Kotlin与Java的性能差异
在开发高性能的Android应用时,选择合适的编程语言至关重要。近年来,Kotlin因其简洁性和功能性受到开发者的青睐,但其性能是否与传统的Java相比有所不足?本文通过对比分析Kotlin与Java在Android平台上的运行效率,揭示二者在编译速度、运行时性能及资源消耗方面的具体差异,并探讨在实际项目中如何做出最佳选择。
17 4
|
1天前
|
存储 缓存 安全
Android系统 应用存储路径与权限
Android系统 应用存储路径与权限
5 0
Android系统 应用存储路径与权限
|
1天前
|
存储 安全 Android开发
Android系统 自定义系统和应用权限
Android系统 自定义系统和应用权限
10 0