发布时间: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 平台中的增强功能让攻击者更加难以利用 Android 上存在的许多问题。我们建议所有用户都尽可能更新到最新版 Android。
- Android 安全团队会积极利用“验证应用”功能和 SafetyNet 监控滥用行为,这些功能会在用户即将安装可能有害的应用时发出警告。Google Play 中禁止提供会获取设备 Root 权限的工具。为了保护从 Google Play 之外的来源安装应用的用户,“验证应用”功能在默认情况下将处于启用状态,并在发现已知会获取 Root 权限的应用时警告用户。“验证应用”功能会尝试识别并阻止用户安装会利用提权漏洞的已知恶意应用。如果用户已安装此类应用,那么“验证应用”功能将会通知用户并尝试移除所有此类应用。
- 由于已做了适当更新,因此 Google 环聊和 Messenger 应用不会自动将媒体内容传递给 mediaserver 这类进程。
致谢
非常感谢以下研究人员做出的贡献:
- Joshua Drake:CVE-2015-1538、CVE-2015-3826
- Ben Hawkes:CVE-2015-3836
- Alexandru Blanda:CVE-2015-3832
- Alexandru Blanda:CVE-2015-3832
- Alex Copot:CVE-2015-1536
- Alex Eubanks:CVE-2015-0973
- Roee Hay 和 Or Peles:CVE-2015-3837
- 龚广:CVE-2015-3834
- Gal Beniamini:CVE-2015-3835
- 吴潍浠*:CVE-2015-3842
- Artem Chaykin:CVE-2015-3843
*吴潍浠还是我们的首位 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 |
修订版本
- 2015 年 8 月 13 日:初次发布