安全更新和资源

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

Android 安全团队通过内部研究发现安全漏洞,并对第三方报告的错误做出回应。外部错误的来源包括通过漏洞表单报告的问题、已发布和预先发布的学术研究、上游开源项目维护者、来自我们设备制造商合作伙伴的通知以及在博客或社交媒体上公开发布的问题。

报告安全问题

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

标记为安全问题的错误不会在外部可见,但在问题得到评估或解决后,最终可能会变为可见。如果您计划提交补丁或兼容性测试套件 (CTS) 测试来解决安全问题,请将其附加到错误报告中,并在将代码上传到 AOSP 之前等待回复。

分类错误

处理安全漏洞的首要任务是确定错误的严重程度以及受影响的 Android 组件。严重程度决定了问题的优先级,组件决定了谁修复错误、谁收到通知以及修复程序如何部署到用户。

上下文类型

下表涵盖了硬件和软件安全上下文的定义。上下文可以根据其通常处理的数据的敏感性或其运行的区域来定义。并非所有安全上下文都适用于所有系统。此表按权限从低到高排序。

上下文类型 类型定义
受限上下文 一种受限的执行环境,仅提供最少的权限。

例如,在沙盒环境中处理不受信任数据的受信任应用。
非特权上下文 非特权代码期望的典型执行环境。

例如,在具有 untrusted_app_all 属性的 SELinux 域中运行的 Android 应用。
特权上下文 一个特权执行环境,它可能有权访问提升的权限、处理多个用户 PII 和/或维护系统完整性。

例如,具有 SELinux untrusted_app 域禁止的功能或有权访问 privileged|signature 权限的 Android 应用。
操作系统内核 功能,其
  • 是内核的一部分
  • 在与内核相同的 CPU 上下文中运行(例如,设备驱动程序)
  • 可以直接访问内核内存(例如,设备上的硬件组件)
  • 有能力将脚本加载到内核组件中(例如,eBPF)
  • 是少数被视为内核等效的用户服务之一(例如,apexdbpfloaderinitueventdvold)。
可信硬件库 (THB) 离散硬件组件,通常在 SoC 上,提供对设备核心用例至关重要的功能(例如,蜂窝基带、DSP、GPU 和 ML 处理器)。
引导加载程序链 一个在启动时配置设备,然后将控制权传递给 Android 操作系统的组件。
可信执行环境 (TEE) 一个旨在受到保护的组件,即使是恶意的操作系统内核也无法对其造成威胁(例如,TrustZone 和 hypervisor,例如 pKVM,可保护虚拟机免受操作系统内核的侵害)。
安全 Enclave / 安全元件 (SE) 一种可选的硬件组件,旨在受到保护,免受设备上所有其他组件和物理攻击的影响,如安全元件简介中所定义。

这包括某些 Android 设备中存在的 Titan-M 芯片。

严重程度

错误的严重程度通常反映了如果错误被成功利用可能造成的潜在危害。使用以下标准来确定严重程度。

评级 成功利用的后果
严重
  • TEE 或 SE 中的任意代码执行
  • 绕过旨在防止安全相关软件或硬件组件发生故障的软件机制(例如,热保护)
  • 远程访问用于远程服务身份验证的敏感凭据(例如,帐户密码或持有者令牌)
  • 在蜂窝基带上下文中远程任意代码执行,无需用户互动(例如,利用蜂窝无线电服务中的错误)
  • 在特权上下文、引导加载程序链、THB 或操作系统内核中远程任意代码执行
  • 远程绕过软件包安装或等效行为的用户互动要求
  • 远程绕过核心开发者、安全或隐私设置的用户互动要求
  • 远程持久性拒绝服务(永久性,需要重新刷新整个操作系统或恢复出厂设置)
  • 远程安全启动绕过
  • 未经授权访问 SE 保护的数据,包括通过 SE 中的弱密钥启用的访问。
  • 完全绕过核心安全功能(例如,SELinux、FBE 或 seccomp
  • 引导加载程序链、TEE 或 SE 中深度防御或漏洞利用缓解技术的一般绕过
  • 操作系统保护的一般绕过,该绕过会泄露跨应用、用户或个人资料边界的内存或文件内容
  • 针对 SE 的攻击导致降级到安全性较低的实现
  • 从远程可访问的受损裸机固件(例如,基带、通信处理器 (CP))透视到应用处理器 (AP) 内核或绕过旨在将裸机固件与 AP 内核隔离的机制
  • 绕过设备保护、恢复出厂设置保护或运营商限制
  • 绕过 TEE 保护的用户互动要求
  • 允许攻击端到端协议的加密漏洞,包括针对传输层安全 (TLS) 和蓝牙 (BT) 的攻击。
  • 本地访问用于远程服务身份验证的敏感凭据(例如,帐户密码或持有者令牌)
  • 在特权上下文、引导加载程序链、THB 或操作系统内核中本地任意代码执行
  • 本地安全启动绕过
  • 锁屏绕过
  • 本地绕过核心开发者、安全或隐私设置的用户互动要求
  • 本地绕过软件包安装或等效行为的用户互动要求
  • 本地持久性拒绝服务(永久性,需要重新刷新整个操作系统或恢复出厂设置)
  • 远程访问受保护数据(即,限于特权上下文的数据)
  • 在非特权上下文中远程任意代码执行
  • 远程阻止访问蜂窝或 Wi-Fi 服务,无需用户互动(例如,使用格式错误的数据包使蜂窝无线电服务崩溃)
  • 远程绕过用户互动要求(访问应需要用户发起或用户许可的功能或数据)
  • 有针对性地阻止访问紧急服务
  • 通过不安全的网络协议(例如,HTTP 和未加密的蓝牙)传输敏感信息,而请求者期望安全传输。请注意,这不适用于 Wi-Fi 加密(例如,WEP)
  • 未经授权访问 TEE 保护的数据,包括通过 TEE 中的弱密钥启用的访问
  • 特权上下文、THB 或操作系统内核中深度防御或漏洞利用缓解技术的一般绕过
  • 操作系统保护的一般绕过,该绕过会泄露跨应用、用户或个人资料边界的进程状态或元数据
  • 绕过 Wi-Fi 加密或身份验证
  • 标准加密原语中的加密漏洞,允许泄露明文(非 TLS 中使用的原语)
  • 本地访问受保护数据(即,限于特权上下文的数据)
  • 在非特权上下文中本地任意代码执行
  • 本地绕过用户互动要求(访问通常需要用户发起或用户许可的功能或数据)
  • 远程访问不受保护的数据(即,本地安装的任何应用通常都可以访问的数据)
  • 在受限上下文中远程任意代码执行
  • 远程临时设备拒绝服务(远程挂起或重启)
  • 非特权上下文中用户级别深度防御或漏洞利用缓解技术的一般绕过
  • 绕过正常的保护级别权限
  • 非标准用法中的加密漏洞
  • 一般绕过设备端个性化功能,例如声纹匹配面容匹配
  • 可能导致安全漏洞的不正确文档
  • 在受限上下文中本地任意代码执行
  • 包含误导性描述的系统定义文本,该描述会产生错误的安全期望
可忽略的安全影响 (NSI)
  • 漏洞的影响已被一个或多个评级修改器或版本特定的架构更改所缓解,以至于有效严重程度低于“低”,但潜在的代码问题可能仍然存在
  • 任何需要格式错误的文件系统的漏洞,如果该文件系统在使用前始终是adopted/encrypted
  • 本地临时拒绝服务,例如,可以通过重启设备或卸载触发应用来解决的情况。

评级修改器

虽然安全漏洞的严重程度通常很容易识别,但评级可能会根据情况而变化。

原因 效果
需要以特权上下文运行才能执行攻击(不适用于 TEE、SE 和 hypervisor,例如 pKVM) -1 严重程度
特定于漏洞的详细信息限制了问题的影响 -1 严重程度
需要直接从设备所有者获取生物识别信息的生物识别身份验证绕过 -1 严重程度
编译器或平台配置缓解了源代码中的漏洞 如果底层漏洞为“中”或更高,则为“中”严重程度
需要物理访问设备内部组件,并且即使设备已关闭或自开机以来尚未解锁,仍然有可能 -1 严重程度
需要物理访问设备内部组件,同时设备已开启且之前已解锁 -2 严重程度
需要解锁引导加载程序链的本地攻击 不高于“低”
需要设备上当前已启用开发者模式或任何持久性开发者模式设置的本地攻击(而不是开发者模式本身中的错误)。 不高于“低”
如果在 Google 提供的 SEPolicy 下,没有 SELinux 域可以执行该操作 可忽略的安全影响

本地与近端与远程

远程攻击媒介表明,无需安装应用或无需物理访问设备即可利用该错误。这包括可以通过浏览网页、阅读电子邮件、接收短信或连接到恶意网络触发的错误。

近端攻击媒介被视为远程。这些包括只能由物理上靠近目标设备的攻击者利用的错误,例如,需要发送格式错误的 Wi-Fi 或蓝牙数据包的错误。我们将超宽带 (UWB) 和基于 NFC 的攻击视为近端,因此也是远程。

本地攻击需要攻击者事先访问受害者。在一个假设的纯软件示例中,这可能是通过受害者已安装的恶意应用,或是他们已同意运行的即时应用

成功配对的设备(例如,蓝牙配套设备)被视为本地。我们区分了已配对的设备和正在参与配对流程的设备。

  • 降低用户识别正在配对的其他设备的能力(即身份验证)的错误被视为近端,因此也是远程。
  • 在配对流程期间但在建立用户同意(即授权)之前发生的错误被视为近端,因此也是远程。
  • 即使配对最终失败,在建立用户同意后发生的错误也被视为本地。

物理攻击媒介被视为本地。这些包括只能由物理访问设备的攻击者利用的错误,例如锁屏中的错误或需要插入 USB 电缆的错误。由于设备在插入 USB 时通常会解锁,因此无论是否需要解锁设备,需要 USB 连接的攻击的严重程度都相同。

网络安全

Android 假定所有网络都是恶意的,并且可能会注入攻击或监视流量。虽然链路层安全(例如,Wi-Fi 加密)保护设备与其连接的接入点之间的通信,但它对保护设备与其通信的服务器之间的链中剩余的链路没有任何作用。

相比之下,HTTPS 通常端到端地保护整个通信,在其源头加密数据,然后在到达最终目的地后才解密和验证数据。因此,危害链路层网络安全的漏洞的评级低于 HTTPS/TLS 中的漏洞:仅 Wi-Fi 加密不足以满足互联网上的大多数通信。

生物识别身份验证

生物识别身份验证是一个具有挑战性的领域,即使是最好的系统也可能被近似匹配所欺骗(请参阅Android 开发者博客:Android 11 中的锁屏和身份验证改进)。这些严重程度评级区分了两种类型的攻击,旨在反映最终用户的实际风险。

第一类攻击允许以通用方式绕过生物识别身份验证,而无需来自所有者的高质量生物识别数据。例如,如果攻击者可以在指纹传感器上放一块口香糖,并且它根据传感器上留下的残留物授予对设备的访问权限,则这是一种简单的攻击,可以在任何易受攻击的设备上执行。它不需要任何关于设备所有者的知识。鉴于它具有通用性并可能影响更多用户,因此此攻击会获得完整的严重程度评级(例如,对于锁屏绕过,为“高”)。

另一类攻击通常涉及基于设备所有者的演示攻击工具(欺骗)。有时,这种生物识别信息相对容易获得(例如,如果某人在社交媒体上的个人资料照片足以欺骗生物识别身份验证,那么生物识别绕过将获得完整的严重程度评级)。但是,如果攻击者需要直接从设备所有者那里获取生物识别数据(例如,对其面部进行红外扫描),那么这构成了一个相当大的障碍,限制了受攻击影响的人数,因此有一个 -1 修改器。

SYSTEM_ALERT_WINDOW 和点击劫持

有关我们关于 SYSTEM_ALERT_WINDOW 和点击劫持的政策的信息,请参阅 BugHunter University 的无安全影响的错误页面中“非安全关键屏幕上的点击劫持/叠加 SYSTEM_ALERT_WINDOW 漏洞”部分。

Android Automotive OS 中的多用户安全

Android Automotive OS采用了与其他外形规格不同的多用户安全模型。每个 Android 用户都旨在供不同的自然人使用。例如,临时访客用户可以分配给从车主那里借用车辆的朋友。为了适应这样的用例,用户默认情况下可以访问使用车辆所需的必要组件,例如 Wi-Fi 和蜂窝网络设置。

受影响的组件

负责修复错误的开发团队取决于错误所在的组件。它可能是 Android 平台的核心组件、原始设备制造商 (OEM) 提供的内核驱动程序,或者是 Pixel 设备上的预加载应用之一。

AOSP 代码中的错误由 Android 工程团队修复。低严重性错误、某些组件中的错误或已公开的错误可能会直接在公开可用的 AOSP 主分支中修复;否则,它们会首先在我们的内部存储库中修复。

组件也是用户如何获得更新的一个因素。框架或内核中的错误需要空中下载 (OTA) 固件更新,每个 OEM 都需要推送该更新。Google Play 中发布的应用或库(例如,Gmail、Google Play 服务或 WebView)中的错误可以作为 Google Play 的更新发送给 Android 用户。

通知合作伙伴

当 Android 安全公告中修复了 AOSP 中的安全漏洞时,我们会将问题详情通知 Android 合作伙伴并提供补丁。支持向后移植的版本列表会随着每个新的 Android 版本而更改。请联系您的设备制造商以获取受支持设备的列表。

将代码发布到 AOSP

如果安全错误发生在 AOSP 组件中,则在 OTA 发布给用户后,修复程序会被推送给 AOSP。低严重性问题的修复程序可能会在通过 OTA 向设备提供修复程序之前直接提交到 AOSP 主分支。

接收 Android 更新

Android 系统的更新通常通过 OTA 更新包交付到设备。这些更新可能来自生产设备的 OEM 或向设备提供服务的运营商。Google Pixel 设备更新来自 Google Pixel 团队,在经过运营商技术验收 (TA) 测试程序后发布。Google 还发布了可以侧载到设备的Pixel 工厂映像

更新 Google 服务

除了提供安全错误的补丁外,Android 安全团队还会审查安全错误,以确定是否有其他方法来保护用户。例如,Google Play 会扫描所有应用并删除任何试图利用安全错误的应用。对于从 Google Play 外部安装的应用,安装了 Google Play 服务的设备也可以使用验证应用功能来警告用户有关可能有害的应用。

其他资源

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

安全信息贯穿整个 Android 开源和开发者网站。良好的起点

报告

有时,Android 安全团队会发布报告或白皮书。有关更多详情,请参阅安全报告