锁屏绕过攻击的背景
Android 设备在过去几年中发现了多个 CVE,使个人能够绕过锁定屏幕并获得未经授权的访问或权限升级。例如,CVE-2015–3860 是一个先前发现的 CVE,它利用紧急拨号器和摄像头进程在锁定屏幕的 pin 条目上上演类似缓冲区溢出的场景。缓冲区溢出场景然后使与锁定屏幕相关联的一个或多个进程崩溃以暴露所有者的主屏幕。有关 CVE-2015–3860 的更多信息,请访问此链接CVE-2015–3860。
https://sites.utexas.edu/iso/2015/09/15/android-5-lockscreen-bypass/
在概念上,CVE-2022–20006 类似于之前的锁屏绕过 CVE 发现,因为它试图利用或强制来自与锁屏进程不直接相关但在设备处于锁定状态时可访问的进程的意外行为状态。CVE-2022-20006利用的进程与Android操作系统的多用户特性有关。如果设备要由多个人共享,Android 的多用户功能在正常情况下很有用。每个用户都可以在设备上拥有自己的个人资料,以及根据独特需求或角色量身定制的应用程序和配置。然而,多用户功能在用户配置文件之间转换时有一些有趣的行为。用户转换是 CVE-2022–20006 成为可能的地方。
CVE-2022–20006 的先决条件
必须满足以下要求才能利用 CVE-2022–20006。
对设备的物理访问。
安全补丁级别早于 2022 年 6 月 5 日的 Android 版本 10、11 或 12。
通过“系统”>“辅助功能”>“系统控制”进行三键导航
必须通过目标用户个人资料的设置>屏幕锁定启用锁定屏幕 屏幕锁定设置为“无”以外的任何设置。
通过设置>系统>多用户启用多用户
功能 确保至少定义并启用了两个用户。
b. 一位用户必须配置屏幕锁定设置并将作为目标用户。
C。为了更容易利用,我建议第二个用户是一个没有锁屏的简单访客帐户。
注意:我已经在 Google Pixel XL、Pixel 2 和 Pixel 3 设备以及一些运行 Android 10 和 Android 11 的模拟设备上亲自测试了这个 CVE。CVE 似乎更容易在具有较低规格处理器和 RAM 的设备上执行. Google 已确认 CVE 适用于 Android 操作系统,而不是我测试过的特定设备。话虽如此,结果可能会有所不同。
利用 CVE-2022–20006
假设满足先决条件,我们可以通过以下步骤开始利用多用户功能。
在锁定屏幕上,展开通知托盘并单击用户选择菜单图标。
带有用户选择图标的扩展通知托盘
2. 切换到可用的未锁定或来宾用户配置文件。
通知托盘中的用户选择
3. 进入访客配置文件后,按照第一步中的操作从通知托盘中打开用户选择菜单。确定受锁定屏幕功能保护的目标用户配置文件,但在下一步之前不要单击用户图标。
用户选择菜单中显示的目标用户
4. 单击目标用户,同时开始快速重复点击主页按钮。主页按钮的重复速度越快越好。
用于选择的目标用户荧光笔和用于重复输入的突出显示的主页按钮
屏幕会出现“切换到用户”消息,但如果您启用了触觉反馈,您会感觉到设备在每次按下时都会振动,就好像设备仍在接收和处理输入一样。在振动反馈停止的过渡期间会有片刻。此时您可以停止按主页按钮。
可能需要尝试 2 或 3 次步骤 4 才能绕过锁屏界面。每次尝试后,您可能会注意到输入和转换到目标用户配置文件的延迟增加。您可能还会注意到锁定屏幕通知托盘中现在显示的敏感信息。
如果成功,您将看到目标用户的主屏幕,并且能够在锁定屏幕最终显示并将您锁定在用户之外之前的有限时间(通常为 5-30 秒)内导航和访问该目标用户配置文件中的任何内容轮廓。
5. 虽然限制在 5-30 秒的访问窗口,但很难但可以采取额外的措施来无限制地访问以前受限的用户配置文件。例如,可以更改目标用户屏幕锁定设置、在目标用户配置文件下暂存和安装恶意 APK、启用开发人员模式和 USB 调试、创建您自己的管理员特权帐户等。
CVE-2022–20006 的视频演示
以下屏幕录像显示在 00:45 时间点成功尝试 CVE-2022–20006。视频位于CVE-2022–20006。
观察和结论
CVE-2022–20006 是事件堆叠在队列中以在 Android 系统 UI 的主线程上进行处理的结果。此事件队列在事件之间创建了一种竞争条件,并阻碍了重要的安全进程,例如与锁屏 Keyguard 相关的进程。如果没有优先级排序,事件会在处理器可以执行的情况下尽快处理,并且看起来不像是按照先进先出的方式处理的。具有较低 CPU 和 RAM 规格的设备会加剧此处理问题,从而导致可能存在更多未授权访问窗口。
谷歌在 June2022 安全补丁中发布了缓解措施,优先处理特定的锁定事件,以防止这种情况发生。June2022 安全补丁通过 Build SQ3A.220605.009.A1 和 SQ3A.220605.009.B1 部署,具体取决于设备型号。有关更新设备的补丁说明和说明,请参阅Android 2022 年 6 月安全公告。
有关 Google Android 开发团队实施的缓解措施的更多信息,请参阅Google Android GIT CVE-2022–20006 Mitigation。