发布时间:2015 年 8 月 13 日

在每月发布 Android 安全公告的过程中,我们都会通过无线 (OTA) 更新的方式发布针对 Nexus 设备的安全更新。我们还会在 Google Developers 网站 上发布 Nexus 固件映像。LMY48I 或更高版本的系统已解决本文所列的安全问题。我们的合作伙伴在 2015 年 6 月 25 日或之前就已收到这些问题的相关通知。

这些问题中危险性最高的是一个严重程度为“严重”的安全漏洞,它可能会导致在处理媒体文件的过程中,可通过电子邮件、网页和彩信等多种方式在受影响的设备上执行远程代码。

安全漏洞摘要


下表列出了安全漏洞、对应的 CVE(常见漏洞和风险识别码)以及评估得出的严重程度。 严重程度评估 的依据是漏洞被利用后对受影响设备造成的影响大小(假设相关平台和服务缓解措施被成功规避或出于开发目的而被停用)。

问题 CVE 严重程度
在 MP4 atom 处理过程中会发生整数上溢 CVE-2015-1538 严重
在 ESDS 处理过程中会发生整数下溢 CVE-2015-1539 严重
在解析 MPEG4 tx3g atom 时,libstagefright 中会发生整数上溢 CVE-2015-3824 严重
在处理 MPEG4 covr atom 时,libstagefright 中会发生整数下溢 CVE-2015-3827 严重
在处理 3GPP 元数据时,如果大小小于 6,则 libstagefright 中会发生整数下溢 CVE-2015-3828 严重
在处理 MPEG4 covr atom 时,如果 chunk_data_size 为 SIZE_MAX,则 libstagefright 中会发生整数上溢 CVE-2015-3829 严重
Sonivox Parse_wave 中会发生缓冲区溢出 CVE-2015-3836 严重
libstagefright MPEG4Extractor.cpp 中会发生缓冲区溢出 CVE-2015-3832 严重
mediaserver BpMediaHTTPConnection 中会发生缓冲区溢出 CVE-2015-3831
libpng 中的漏洞:png_Read_IDAT_data 中会发生溢出 CVE-2015-0973
wpa_supplicant 中的 p2p_add_device() 中会发生可远程利用的 memcpy() 溢出 CVE-2015-1863
OpenSSLX509Certificate 反序列化中会发生内存损坏 CVE-2015-3837
mediaserver BnHDCP 中会发生缓冲区溢出 CVE-2015-3834
libstagefright OMXNodeInstance::emptyBuffer 中会发生缓冲区溢出 CVE-2015-3835
mediaserver AudioPolicyManager::getInputForAttr() 中会发生堆溢出 CVE-2015-3842
应用可拦截或模拟向 Telephony 发出的 SIM 命令 CVE-2015-3843
位图数据编出过程中会出现漏洞 CVE-2015-1536
AppWidgetServiceImpl 可以利用系统权限创建 IntentSender CVE-2015-1541
规避 getRecentTasks() 限制 CVE-2015-3833
ActivityManagerService.getProcessRecordLocked() 可能会将系统 UID 应用加载到错误的进程中 CVE-2015-3844
在解析 3GPP 元数据时,libstagefright 中会发生无限缓冲区读取 CVE-2015-3826

缓解措施


本部分概括总结了 Android 安全平台 和服务防护功能(如 SafetyNet)提供的缓解措施。这些功能可降低 Android 上的安全漏洞被成功利用的可能性。

致谢


非常感谢以下研究人员做出的贡献:

*吴潍浠还是我们的首位 Android 安全奖 获得者!

在 MP4 atom 处理过程中会发生整数上溢

在 MP4 atom 处理过程中,libstagefright 中可能会发生多次整数上溢,从而破坏内存,并可能会导致通过 mediaserver 进程执行远程代码。

受影响的功能是某个应用 API,有多个应用允许通过远程内容(最主要是彩信和浏览器媒体播放)使用该功能。

由于该漏洞可用于在特许服务中执行远程代码,因此我们将其严重程度评为“严重”。虽然 mediaserver 受到 SELinux 的限制保护,但它可以访问音频和视频流以及许多设备上的特许内核驱动程序设备节点(第三方应用通常无法访问这些节点)。请注意,根据我们之前的严重程度评定准则,我们将该漏洞的严重程度评为“高”并向合作伙伴做出如此报告。但是,根据我们在 2015 年 6 月发布的新准则,该漏洞则属于“严重”问题。

CVE Bug(附 AOSP 链接) 严重程度 受影响的版本
CVE-2015-1538 ANDROID-20139950 [ 2 ] 严重 5.1 及更低版本

在 ESDS 处理过程中会发生整数下溢

在 ESDS atom 处理过程中,libstagefright 中可能会发生整数下溢,从而破坏内存,并可能会导致通过 mediaserver 进程执行远程代码。

受影响的功能是某个应用 API,有多个应用允许通过远程内容(最主要是彩信和浏览器媒体播放)使用该功能。

由于该漏洞可用于在特许服务中执行远程代码,因此我们将其严重程度评为“严重”。虽然 mediaserver 受到 SELinux 的限制保护,但它可以访问音频和视频流以及许多设备上的特许内核驱动程序设备节点(第三方应用通常无法访问这些节点)。请注意,根据我们之前的严重程度评定准则,我们将该漏洞的严重程度评为“高”并向合作伙伴做出如此报告。但是,根据我们在 2015 年 6 月发布的新准则,该漏洞则属于“严重”问题。

CVE Bug(附 AOSP 链接) 严重程度 受影响的版本
CVE-2015-1539 ANDROID-20139950 严重 5.1 及更低版本

在解析 MPEG4 tx3g atom 时,libstagefright 中会发生整数上溢

在 MPEG4 tx3g 数据处理过程中,libstagefright 中可能会发生整数上溢,从而破坏内存,并可能会导致通过 mediaserver 进程执行远程代码。

受影响的功能是某个应用 API,有多个应用允许通过远程内容(最主要是彩信和浏览器媒体播放)使用该功能。

由于该漏洞可用于在特许服务中执行远程代码,因此我们将其严重程度评为“严重”。虽然 mediaserver 受到 SELinux 的限制保护,但它可以访问音频和视频流以及许多设备上的特许内核驱动程序设备节点(第三方应用通常无法访问这些节点)。

请注意,根据我们之前的严重程度评定准则,我们将该漏洞的严重程度评为“高”并向合作伙伴做出如此报告。但是,根据我们在 2015 年 6 月发布的新准则,该漏洞则属于“严重”问题。

CVE Bug(附 AOSP 链接) 严重程度 受影响的版本
CVE-2015-3824 ANDROID-20923261 严重 5.1 及更低版本

在处理 MPEG4 covr atom 时,libstagefright 中会发生整数下溢

在 MPEG4 数据处理过程中,libstagefright 中可能会发生整数下溢,从而破坏内存,并可能会导致通过 mediaserver 进程执行远程代码。

受影响的功能是某个应用 API,有多个应用允许通过远程内容(最主要是彩信和浏览器媒体播放)使用该功能。

由于该漏洞可用于在特许服务中执行远程代码,因此我们将其严重程度评为“严重”。虽然 mediaserver 受到 SELinux 的限制保护,但它可以访问音频和视频流以及许多设备上的特许内核驱动程序设备节点(第三方应用通常无法访问这些节点)。

请注意,根据我们之前的严重程度评定准则,我们将该漏洞的严重程度评为“高”并向合作伙伴做出如此报告。但是,根据我们在 2015 年 6 月发布的新准则,该漏洞则属于“严重”问题。

CVE Bug(附 AOSP 链接) 严重程度 受影响的版本
CVE-2015-3827 ANDROID-20923261 严重 5.1 及更低版本

在处理 3GPP 元数据时,如果大小小于 6,则 libstagefright 中会发生整数下溢

在 3GPP 数据处理过程中,libstagefright 中可能会发生整数下溢,从而破坏内存,并可能会导致通过 mediaserver 进程执行远程代码。

受影响的功能是某个应用 API,有多个应用允许通过远程内容(最主要是彩信和浏览器媒体播放)使用该功能。

由于该漏洞可用于在特许服务中执行远程代码,因此我们将其严重程度评为“严重”。虽然 mediaserver 受到 SELinux 的限制保护,但它可以访问音频和视频流以及许多设备上的特许内核驱动程序设备节点(第三方应用通常无法访问这些节点)。请注意,根据我们之前的严重程度评定准则,我们将该漏洞的严重程度评为“高”并向合作伙伴做出如此报告。但是,根据我们在 2015 年 6 月发布的新准则,该漏洞则属于“严重”问题。

CVE Bug(附 AOSP 链接) 严重程度 受影响的版本
CVE-2015-3828 ANDROID-20923261 严重 5.0 及更高版本

在处理 MPEG4 covr atom 时,如果 chunk_data_size 为 SIZE_MAX,则 libstagefright 中会发生整数上溢

在 MPEG4 covr 数据处理过程中,libstagefright 中可能会发生整数上溢,从而破坏内存,并可能会导致通过 mediaserver 进程执行远程代码。

受影响的功能是某个应用 API,有多个应用允许通过远程内容(最主要是彩信和浏览器媒体播放)使用该功能。

由于该漏洞可用于在特许服务中执行远程代码,因此我们将其严重程度评为“严重”。虽然 mediaserver 受到 SELinux 的限制保护,但它可以访问音频和视频流以及许多设备上的特许内核驱动程序设备节点(第三方应用通常无法访问这些节点)。请注意,根据我们之前的严重程度评定准则,我们将该漏洞的严重程度评为“高”并向合作伙伴做出如此报告。但是,根据我们在 2015 年 6 月发布的新准则,该漏洞则属于“严重”问题。

CVE Bug(附 AOSP 链接) 严重程度 受影响的版本
CVE-2015-3829 ANDROID-20923261 严重 5.0 及更高版本

Sonivox Parse_wave 中会发生缓冲区溢出

在 XMF 数据处理过程中,Sonivox 中可能会发生缓冲区溢出,从而破坏内存,并可能会导致通过 mediaserver 进程执行远程代码。

受影响的功能是某个应用 API,有多个应用允许通过远程内容(最主要是彩信和浏览器媒体播放)使用该功能。

由于该漏洞可用于在特许服务中执行远程代码,因此我们将其严重程度评为“严重”。虽然 mediaserver 受到 SELinux 的限制保护,但它可以访问音频和视频流以及许多设备上的特许内核驱动程序设备节点(第三方应用通常无法访问这些节点)。请注意,根据我们之前的严重程度评定准则,我们将该漏洞的严重程度评为“高”并向合作伙伴做出如此报告。但是,根据我们在 2015 年 6 月发布的新准则,该漏洞则属于“严重”问题。

CVE Bug(附 AOSP 链接) 严重程度 受影响的版本
CVE-2015-3836 ANDROID-21132860 严重 5.1 及更低版本

libstagefright MPEG4Extractor.cpp 中会发生缓冲区溢出

在 MP4 处理过程中,libstagefright 中可能会发生多次缓冲区溢出,从而破坏内存,并可能会导致通过 mediaserver 进程执行远程代码。

受影响的功能是某个应用 API,有多个应用允许通过远程内容(最主要是彩信和浏览器媒体播放)使用该功能。

由于该漏洞可用于在特许服务中执行远程代码,因此我们将其严重程度评为“严重”。虽然 mediaserver 受到 SELinux 的限制保护,但它可以访问音频和视频流以及许多设备上的特许内核驱动程序设备节点(第三方应用通常无法访问这些节点)。

最初,该漏洞被报告为可以本地利用(无法远程访问)。请注意,根据我们之前的严重程度评定准则,我们将该漏洞的严重程度评为“中”并向合作伙伴做出如此报告。但是,根据我们在 2015 年 6 月发布的新准则,该漏洞则属于“严重”问题。

CVE Bug(附 AOSP 链接) 严重程度 受影响的版本
CVE-2015-3832 ANDROID-19641538 严重 5.1 及更低版本

mediaserver BpMediaHTTPConnection 中会发生缓冲区溢出

在处理其他应用提供的数据时,BpMediaHTTPConnection 中可能会发生缓冲区溢出,从而破坏内存,并可能会导致通过 mediaserver 进程执行远程代码。

受影响的功能是某个应用 API。我们认为该漏洞不会被远程利用。

由于该漏洞可让攻击者通过本地应用在特许 mediaserver 服务中执行代码,因此我们将其严重程度评为“高”。虽然 mediaserver 受到 SELinux 的限制保护,但它可以访问音频和视频流以及许多设备上的特许内核驱动程序设备节点(第三方应用通常无法访问这些节点)。

CVE Bug(附 AOSP 链接) 严重程度 受影响的版本
CVE-2015-3831 ANDROID-19400722 5.0 和 5.1

libpng 中的漏洞:png_Read_IDAT_data 中会发生溢出

在读取 libpng 中的 png_read_IDAT_data() 函数中的 IDAT 数据时,可能会发生缓冲区溢出,从而破坏内存,并可能会导致在某个应用内使用此方法执行远程代码。

受影响的功能是某个应用 API,有多个应用允许通过远程内容(最主要是消息应用和浏览器)使用该功能。

由于该漏洞可用于在非特许应用中执行远程代码,因此我们将其严重程度评为“高”。

CVE Bug(附 AOSP 链接) 严重程度 受影响的版本
CVE-2015-0973 ANDROID-19499430 5.1 及更低版本

wpa_supplicant 中的 p2p_add_device() 中会发生可远程利用的 memcpy() 溢出

当 wpa_supplicant 以 WLAN Direct 模式运行时,则很容易因 p2p_add_device() 方法中发生溢出而导致执行远程代码。如果攻击者成功利用该漏洞,则可能导致以 Android 中“WLAN”用户的身份执行代码。

下面几种缓解措施可降低该漏洞被成功利用的可能性:

- WLAN Direct 在大多数 Android 设备上未默认为启用状态

- 攻击者必须距离本地网络比较近(在 WLAN 覆盖范围内)才能利用该漏洞

- wpa_supplicant 进程以“WLAN”用户的身份运行,这限制了对系统的访问权限

- Android 4.1 及更高版本的设备上的 ASLR 可缓解远程利用该漏洞

- wpa_supplicant 进程受到 Android 5.0 及更高版本上的 SELinux 政策的严格限制

由于该漏洞可用于执行远程代码,因此我们将其严重程度评为“高”。虽然“WLAN”服务具有第三方应用通常无法使用的功能,可能会导致将该问题评为“严重”,但我们认为相关功能限制和缓解措施保证的等级可将严重程度降为“高”。

CVE Bug(附 AOSP 链接) 严重程度 受影响的版本
CVE-2015-1863 ANDROID-20076874 5.1 及更低版本

OpenSSLX509Certificate 反序列化中会发生内存损坏

某个本地恶意应用可发送 Intent,当接收应用对其进行反序列化后,该 Intent 可递减任意内存地址的值,从而破坏内存,并可能会导致在接收应用内执行代码。

由于该漏洞可用于获取第三方应用无法获取的权限,因此我们将其严重程度评为“高”。

CVE Bug(附 AOSP 链接) 严重程度 受影响的版本
CVE-2015-3837 ANDROID-21437603 5.1 及更低版本

mediaserver BnHDCP 中会发生缓冲区溢出

在处理其他应用提供的数据时,libstagefright 中可能会发生整数上溢,从而破坏内存(堆),并可能会导致通过 mediaserver 进程执行远程代码。

由于该漏洞可用于获取第三方应用无法获取的权限,因此我们将其严重程度评为“高”。虽然 mediaserver 受到 SELinux 的限制保护,但它可以访问音频和视频流以及许多设备上的特许内核驱动程序设备节点(第三方应用通常无法访问这些节点)。

请注意,根据我们之前的严重程度评定准则,我们将该漏洞的严重程度评为“中”并向合作伙伴做出如此报告。但是,根据我们在 2015 年 6 月发布的新准则,该漏洞的严重程度则属于“高”。

CVE Bug(附 AOSP 链接) 严重程度 受影响的版本
CVE-2015-3834 ANDROID-20222489 5.1 及更低版本

libstagefright OMXNodeInstance::emptyBuffer 中会发生缓冲区溢出

在处理其他应用提供的数据时,libstagefright 中可能会发生缓冲区溢出,从而破坏内存,并可能会导致通过 mediaserver 进程执行代码。

由于该漏洞可用于获取第三方应用无法获取的权限,因此我们将其严重程度评为“高”。虽然 mediaserver 受到 SELinux 的限制保护,但它可以访问音频和视频流以及许多设备上的特许内核驱动程序设备节点(第三方应用通常无法访问这些节点)。

请注意,根据我们之前的严重程度评定准则,我们将该漏洞的严重程度评为“中”并向合作伙伴做出如此报告。但是,根据我们在 2015 年 6 月发布的新准则,该漏洞的严重程度则属于“高”。

CVE Bug(附 AOSP 链接) 严重程度 受影响的版本
CVE-2015-3835 ANDROID-20634516 [ 2 ] 5.1 及更低版本

mediaserver AudioPolicyManager::getInputForAttr() 中会发生堆溢出

mediaserver 的音频政策服务中会发生堆溢出,这可让本地应用通过 mediaserver 进程执行任意代码。

受影响的功能是某个应用 API。我们认为该漏洞不会被远程利用。

由于该漏洞可让攻击者通过本地应用在特许 mediaserver 服务中执行代码,因此我们将其严重程度评为“高”。虽然 mediaserver 受到 SELinux 的限制保护,但它可以访问音频和视频流以及许多设备上的特许内核驱动程序设备节点(第三方应用通常无法访问这些节点)。

CVE Bug(附 AOSP 链接) 严重程度 受影响的版本
CVE-2015-3842 ANDROID-21953516 5.1 及更低版本

应用可拦截或模拟向 Telephony 发出的 SIM 命令

SIM 工具包 (STK) 框架中存在漏洞,该漏洞可让应用拦截或模拟向 Android 的 Telephony 子系统发出的某些 STK SIM 命令。

由于该漏洞可让非特许应用访问通常由“签名”或“系统”级别的权限保护的功能或数据,因此我们将其严重程度评为“高”。

CVE Bug(附 AOSP 链接) 严重程度 受影响的版本
CVE-2015-3843 ANDROID-21697171 [ 2 3 4 ] 5.1 及更低版本

位图数据编出过程中会出现漏洞

Bitmap_createFromParcel 中发生的整数上溢可让应用使 system_server 进程崩溃或读取来自 system_server 的内存数据。

由于该漏洞可能将 system_server 进程中的敏感数据泄露给非特许本地进程,因此我们将其严重程度评为“中”。虽然此类漏洞的严重程度通常被评为“高”,但是由于攻击进程无法控制因成功攻击而泄露的数据,因此严重程度得以降低;攻击失败的后果是相应设备暂时无法使用(需要重启)。

CVE Bug(附 AOSP 链接) 严重程度 受影响的版本
CVE-2015-1536 ANDROID-19666945 5.1 及更低版本

AppWidgetServiceImpl 可以利用系统权限创建 IntentSender

“设置”应用的 AppWidgetServiceImpl 中有一个漏洞,该漏洞允许应用通过指定 FLAG_GRANT_READ/WRITE_URI_PERMISSION 授予自身 URI 权限。例如,攻击者可能会在未获得 READ_CONTACTS 权限的情况下利用该漏洞读取联系人数据。

由于该漏洞可能允许本地应用访问通常由“危险”保护级别的权限保护的数据,因此我们将其严重程度评为“中”。

CVE Bug(附 AOSP 链接) 严重程度 受影响的版本
CVE-2015-1541 ANDROID-19618745 5.1

规避 getRecentTasks() 限制

本地应用可准确确定前台应用,并规避 Android 5.0 中引入的 getRecentTasks() 限制。

由于该漏洞可能允许本地应用访问通常由“危险”保护级别的权限保护的数据,因此我们将其严重程度评为“中”。

我们认为,此漏洞首次在以下网站被公开讨论: http://stackoverflow.com/questions/24625936/getrunningtasks-doesnt-work-in-android-l

CVE Bug(附 AOSP 链接) 严重程度 受影响的版本
CVE-2015-3833 ANDROID-20034603 5.0 和 5.1

ActivityManagerService.getProcessRecordLocked() 可能会将系统 UID 应用加载到错误的进程中

ActivityManager 的 getProcessRecordLocked() 方法没有正确验证某个应用的进程名称是否与对应的应用包名称保持一致。在某些情况下,这可让 ActivityManager 针对某些任务加载错误的进程。

这意味着,应用可能会阻止加载“设置”或针对“设置”片段插入参数。我们认为,此漏洞不会用来以“系统”用户的身份执行任意代码。

虽然能够访问通常只有“系统”才可以访问的功能这一漏洞的严重程度被评为“高”,但是由于该漏洞授予有限级别的访问权限,因此我们将其严重程度评为“中”。

CVE Bug(附 AOSP 链接) 严重程度 受影响的版本
CVE-2015-3844 ANDROID-21669445 5.1 及更低版本

在解析 3GPP 元数据时,libstagefright 中会发生无限缓冲区读取

如果在解析 3GPP 数据期间发生整数下溢,则可能导致读取操作溢出缓冲区,从而导致 mediaserver 崩溃。

我们最初将该漏洞的严重程度评为“高”并向合作伙伴做出如此报告。不过,经过进一步调查,我们发现该漏洞的影响仅限于导致 mediaserver 崩溃,因此我们将其严重程度降为“低”。

CVE Bug(附 AOSP 链接) 严重程度 受影响的版本
CVE-2015-3826 ANDROID-20923261 5.0 和 5.1

修订版本