Google 致力于为黑人社区推动种族平等。查看具体举措

安全更新和资源

Android 安全团队负责管理在 Android 平台中以及与 Android 设备捆绑在一起的众多核心 Android 应用中发现的安全漏洞。

Android 安全团队会通过内部研究找出安全漏洞,还会对第三方报告的错误采取应对措施。外部错误的来源包括:通过 Android 安全问题模板报告的问题、已发布和预发布的学术研究、上游开源项目维护人员、来自设备制造商合作伙伴的通知,以及博客或社交媒体中发布的已公开披露的问题。

报告安全问题

任何开发者、Android 用户或安全研究人员都可以通过安全漏洞报告表单将潜在安全问题告知 Android 安全团队。

外部人员无法查看标记为安全问题的错误,不过在问题经过评估或得到解决后,这些错误最终可能会对外公开。如果您打算提交旨在解决安全问题的补丁程序或兼容性测试套件 (CTS) 测试,请将其附加到错误报告中,然后等待我们的回复,得到我们的回复后再将相应代码上传到 AOSP。

为错误分类

在处理安全漏洞时,第一项任务是确定错误的严重程度以及受影响的 Android 组件。严重程度决定问题的优先级,受影响的组件决定由谁来修复错误、谁将会收到通知以及如何将修复程序提供给用户。

进程类型

下表涵盖了各类进程的定义。进程类型可以按应用或进程的类型来定义,也可以按进程的运行区域来定义。下表按照权限从小到大的顺序排列。

进程类型 类型定义
受限进程 在高度受限的 SELinux 域中运行的进程。
或者
受限程度远远超过普通应用的进程。
非特权进程 在具有 untrusted_app_all 属性的 SELinux 域中运行或受到同等限制的应用或进程。
特权进程 功能被 SELinux untrusted_app 域禁止的应用或进程。
或者
拥有第三方应用无法获得的重要权限的应用或进程。
或者
设备上不属于可信计算基 (TCB) 的内置硬件组件。
可信计算基 (TCB) 一种功能,具有以下特征:属于内核一部分、在与内核相同的 CPU 环境中运行(如设备驱动程序)、可以直接访问内核内存(如设备上的硬件组件)、能够将脚本加载到内核组件(如 eBPF)、基带处理器,或者是被认为等同于内核的几种用户服务中的一种:initueventdvold
引导加载程序 一种在启动时配置设备然后将控制权传递给 Android 操作系统的组件。
可信执行环境 (TEE) 一种经过专门设计的组件,会受到安全保护,甚至可以抵御恶意内核的攻击(例如 TrustZone 和 Hypervisor)。
安全元件 (SE) 一种经过专门设计的可选组件,会受到安全保护,可以抵御设备上其他所有组件的攻击以及物理攻击,如安全元件简介中所定义。

严重程度

错误的严重程度通常能够反映错误被成功利用后可能造成的潜在危害。可以按照以下条件判断严重程度。

分级 被成功利用的后果
严重
  • 攻击者可以在未经授权的情况下访问受 SE 保护的数据
  • 在 TEE 或 SE 中执行任意代码
  • 攻击者可以在特权进程、引导加载程序或 TCB 中远程执行任意代码
  • 设备遭到远程发起的永久性拒绝服务攻击(设备无法再使用:完全永久性损坏,或者需要重新刷写整个操作系统或恢复出厂设置)
  • 攻击者可以远程绕过与软件包安装或等效行为相关的用户互动要求
  • 攻击者可以远程绕过针对任何开发者或针对任何安全或隐私设置的用户互动要求
  • 攻击者可以绕过远程安全启动
  • 攻击者可以绕过旨在预防关键硬件组件出现故障的安全机制(例如热保护机制)
  • 攻击者可以绕过本地安全启动
  • 攻击者可以完全绕过核心安全功能(如 SELinux、FDE 或 seccomp)
  • 攻击者可以在非特权进程中远程执行任意代码
  • 攻击者可以在特权进程、引导加载程序或 TCB 中本地执行任意代码
  • 攻击者可以在未经授权的情况下访问受 TEE 保护的数据
  • 针对 SE 的攻击会导致设备降级为安全系数较低的实现
  • 攻击者可以从本地绕过与软件包安装或等效行为相关的用户互动要求
  • 攻击者可以远程访问受保护的数据(仅限特权进程访问的数据)
  • 设备遭到从本地发起的永久性拒绝服务攻击(设备无法再使用:永久性损坏,或者需要重新刷写整个操作系统或恢复出厂设置)
  • 攻击者可以远程绕过用户互动要求(攻击者能够访问通常需要由用户发起的功能或需要获得用户许可后方可使用的功能或数据)
  • 在请求者期望安全传输时通过不安全的网络协议(例如 HTTP 和未加密的蓝牙)传输敏感信息(请注意,这不适用于 WEP 等 WLAN 加密)
  • 攻击者可以全面深入地绕过防护功能,或者在引导加载程序、TEE 或 SE 中利用缓解技术存在的漏洞进行攻击
  • 攻击者可以全面绕过将应用数据或用户个人资料彼此隔离开来的操作系统保护功能
  • 攻击者可以从本地绕过针对任何开发者或针对任何安全或隐私设置的用户互动要求
  • 在标准传输层安全协议 (TLS) 中造成会让设备受到路径上攻击的加密漏洞
  • 攻击者可以绕过锁定屏幕
  • 攻击者可以绕过设备保护服务/恢复出厂设置保护服务/运营商的限制
  • 有针对性地阻止对应急服务的访问
  • 攻击者可以绕过受 TEE 保护的用户互动要求
  • 攻击者可以在受限进程中远程执行任意代码
  • 设备遭到远程发起的设备暂时性拒绝服务攻击(远程挂起或重新启动设备)
  • 攻击者可以从本地在非特权进程中执行任意代码
  • 攻击者可以全面深入地绕过防护功能,或者在特权进程或 TCB 中利用缓解技术存在的漏洞进行攻击
  • 攻击者可以绕过对受限进程的限制
  • 攻击者可以远程访问不受保护的数据(通常可供本地安装的所有应用访问的数据)
  • 攻击者可以从本地访问受保护的数据(仅限特权进程访问的数据)
  • 攻击者可以从本地绕过用户互动要求(攻击者能够访问通常需要由用户发起的功能或数据或者需要获得用户许可后方可使用的功能)
  • 在标准加密基元(并非 TLS 中使用的基元)中造成会导致明文泄露的加密漏洞
  • 绕过 WLAN 加密或身份验证
  • 攻击者可以从本地在受限进程中执行任意代码
  • 在非标准使用中造成加密漏洞
  • 攻击者可以全面深入地绕过用户级防护功能,或在非特权进程中利用缓解技术存在的漏洞进行攻击
可忽略不计的安全影响 (NSI)
  • 漏洞的影响已被一个或多个分级调节方式或特定于版本的架构更改减弱,因此有效严重程度已降至“低”以下,但底层代码问题可能仍然存在
  • 出现某种漏洞,导致需要格式错误的文件系统(如果该文件系统总是在使用之前被采用/加密)。

分级调节方式

尽管通常可以轻松确定安全漏洞的严重程度,但分级可能会因具体情况而异。

原因 影响
需要作为特权进程运行才能执行攻击 严重程度降低 1 级
漏洞特有的详细信息限制了相应问题的影响大小 严重程度降低 1 级
绕过需要直接从设备所有者获得生物识别信息的生物识别身份验证 严重程度降低 1 级
编译器或平台配置缓解了源代码中的漏洞 如果底层漏洞的严重程度为“中”或更高,则实际严重程度为“中”
需要实际接触设备内部,如果手机已关机或开机后尚未解锁,则仍然可以访问 严重程度降低 1 级
在手机处于开机状态且之前已解锁时需要实际接触设备内部 严重程度降低 2 级
需要解锁引导加载程序才能进行本地攻击 不高于“低”
需要当前在设备上启用了开发者模式或任何持久性开发者模式设置(且本身不是开发者模式中的错误)才能进行本地攻击 不高于“低”
如果任何 SELinux 域都无法在 Google 提供的 SEPolicy 下执行操作 可忽略不计的安全影响

本地攻击、邻近攻击以及远程攻击对比

远程攻击途径指攻击者可以在不安装应用或不实际接触设备的情况下利用的错误。这包括因浏览网页、阅读电子邮件、接收短信或连接到恶意网络而触发的错误。为了进行严重程度分级,Android 安全团队还会将“邻近”攻击向量视为远程攻击向量。这包括只能被实际接近目标设备的攻击者利用的错误,例如需要发送格式错误的 WLAN 数据包或蓝牙数据包的错误。Android 安全团队会将基于 NFC 的攻击视为邻近攻击,因此属于远程攻击。

本地攻击需要受害者运行应用才能得逞,即需要用户安装和运行应用,或同意运行免安装应用。为了进行严重程度分级,Android 安全团队还会将现实攻击途径视为本地攻击。这包括只能被实际接触到设备的攻击者利用的错误,例如锁定屏幕中的错误,或需要插入 USB 数据线的错误。请注意,无论是否需要解锁设备,需要通过 USB 连接进行的攻击都具有相同的严重程度;插入 USB 后会解锁设备的情况很常见。

WLAN 安全

Android 假设所有网络都是恶意网络且可能会注入攻击或监视流量。虽然链路层安全保护机制(例如 WLAN 加密)可以对设备与其连接到的 WLAN 接入点之间的通信进行安全保护,但不会对设备和与其通信的服务器之间的链中的其余链路进行安全保护。

相比之下,HTTPS 通常会对整个通信进行端到端保护,方法是在源位置对数据进行加密,只有在到达最终目标位置后才对数据进行解密和验证。正因如此,损害 WLAN 安全的漏洞的严重程度分级低于 HTTPS/TLS 中的漏洞:对于互联网上的大部分通信而言,仅靠 WLAN 加密是不够的。

生物识别身份验证

生物识别身份验证是一个具有挑战性的领域,即使是最好的系统也可能被近乎匹配的生物特征欺骗。这些严重程度分级区分了两类攻击,旨在反映给最终用户带来的实际风险。

第一类攻击允许攻击者以一种可泛化的方式绕过生物识别身份验证,而不要求所有者提供高质量的生物识别数据。例如,如果攻击者可以在指纹传感器上放一块口香糖,它根据传感器上的残留物授予对设备的访问权限,这是攻击者可能会在任何易受侵害的设备上执行的一种简单攻击。不要求对设备的所有者有任何了解。鉴于这种攻击可泛化且可能会影响更多用户,因此会得到完整的严重程度分级(例如,“攻击者可以绕过锁定屏幕”的严重程度为“高”)。

另一类攻击通常涉及基于设备所有者的演示攻击手段(仿冒)。有时,这种生物识别信息相对容易获取(例如,如果某人在社交媒体上的个人资料照片足以骗过生物识别身份验证,则“攻击者可以绕过生物识别身份验证”会得到完整的严重程度分级)。但是,如果攻击者需要直接从设备所有者获取生物识别数据(例如,对他们的面孔进行红外扫描),这是一种足够有力的障碍,可以限制受攻击影响的人数,因此应用调节方式后严重程度降低 1 级。

受影响的组件

开发团队负责根据错误所在的组件来修复错误。该组件可能是 Android 平台的核心组件、原始设备制造商 (OEM) 提供的内核驱动程序,或 Pixel 设备上某个预加载的应用。

AOSP 代码中的错误由 Android 工程团队负责修复。严重程度为“低”的错误、特定组件内的错误或者已经是众所周知的错误可以直接在已公开发布的 AOSP master 分支中进行修复;除此之外的其他错误都会先在我们的内部代码库中进行修复。

组件也是会影响用户如何获取更新的一种因素。如果是框架或内核存在的错误,用户需要使用无线下载 (OTA) 的固件更新,每个原始设备制造商 (OEM) 都需要推送此类更新。如果是 Google Play 中发布的应用或库(例如,Gmail、Google Play 服务或 WebView)存在的错误,则可以通过 Google Play 向 Android 用户发送更新。

通知合作伙伴

AOSP 中的安全漏洞在 Android 安全公告中得到修复后,我们会将问题详细信息通知给 Android 合作伙伴,并提供相应的补丁程序。具体有哪些支持向后移植的版本会随着每个新 Android 版本的发布而发生变化。如需查看支持的设备列表,请与设备制造商联系。

向 AOSP 发布代码

如果安全错误发生在 AOSP 组件内,我们会先向用户发布 OTA 更新,然后再将修复程序推送到 AOSP。如果问题的严重程度为“低”,我们可能会先直接将修复程序提交到 AOSP master 分支,然后再通过 OTA 更新将其提供给设备。

接收 Android 更新

对 Android 系统的更新一般会通过 OTA 更新软件包提供给设备。这些更新可能来自生产相应设备的原始设备制造商 (OEM),也可能来自向相应设备提供服务的运营商。Google Pixel 设备更新由 Google Pixel 团队在相应更新通过运营商技术验收 (TA) 测试程序之后予以提供。Google 还会发布可以旁加载到设备的 Pixel 出厂映像

更新 Google 服务

除了针对安全错误提供补丁程序之外,Android 安全团队还会审核安全错误,以确定是否有其他方式来保护用户。例如,Google Play 会扫描所有应用并移除任何试图利用安全错误的应用。对于通过 Google Play 之外的途径安装的应用,带有 Google Play 服务的设备可能还会使用验证应用功能来警告用户注意可能有害的应用。

其他资源

面向 Android 应用开发者的信息:https://developer.android.com

您可以从各个 Android 开放源代码和开发者网站上找到安全信息。最好从以下网址入手:

报告

Android 安全团队有时会发布报告或白皮书。如需了解详情,请参阅安全报告