通过蓝牙远程利用Linux内核中的漏洞

Linux 内核中已发现一个漏洞 (CVE-2022-42896),该漏洞可通过蓝牙发送专门设计的 L2CAP 数据包来组织内核级别的远程代码执行。 此外,L2022CAP 处理程序中还发现了另一个类似问题 (CVE-42895-2),该问题可能导致包含配置信息的数据包中的内核内存内容泄漏。 第一个漏洞自 2014 年 3.16 月(内核 2011)以来出现,第二个漏洞自 3.0 年 6.1.0 月(内核 6.0.8)以来出现。 这些漏洞已在 Linux 内核版本 4.9.333、4.14.299、4.19.265、5.4.224、5.10.154、5.15.78、XNUMX 和 XNUMX 中得到解决。 您可以在以下页面上跟踪发行版中的修复:Debian、Ubuntu、Gentoo、RHEL、SUSE、Fedora、Arch。

为了演示进行远程攻击的可能性,已经发布了可在 Ubuntu 22.04 上运行的原型漏洞利用程序。 要实施攻击,攻击者必须处于蓝牙范围内——不需要预先配对,但计算机上的蓝牙必须处于活动状态。 对于攻击来说,知道受害者设备的 MAC 地址就足够了,可以通过嗅探来确定该地址,或者在某些设备上根据 Wi-Fi MAC 地址进行计算。

第一个漏洞(CVE-2022-42896)是由于在 l2cap_connect 和 l2cap_le_connect_req 函数的实现中访问已释放的内存区域(use-after-free)引起的 - 通过 new_connection 回调创建通道后,未设置锁为此,但设置了一个计时器 (__set_chan_timer ),在超时到期时,调用 l2cap_chan_timeout 函数并清除通道,而不检查 l2cap_le_connect* 函数中通道工作的完成情况。

默认超时为 40 秒,假设这样的延迟不会发生竞争条件,但事实证明,由于 SMP 处理程序中的另一个错误,可以实现对计时器的即时调用并实现竞赛条件。 l2cap_le_connect_req 中的问题可能导致内核内存泄漏,而 l2cap_connect 中的问题可能导致覆盖内存内容并执行其代码。 第一种类型的攻击可以使用蓝牙 LE 4.0(自 2009 年起)进行,第二种类型的攻击可以使用蓝牙 BR/EDR 5.2(自 2020 年起)进行。

第二个漏洞(CVE-2022-42895)是由 l2cap_parse_conf_req 函数中的残留内存泄漏引起的,该函数可用于通过发送特制的配置请求来远程获取有关内核结构指针的信息。 l2cap_parse_conf_req 函数使用 l2cap_conf_efs 结构,分配的内存未预先初始化,并且通过操作 FLAG_EFS_ENABLE 标志,可以将堆栈中的旧数据包含在数据包中。 该问题仅出现在使用 CONFIG_BT_HS 选项构建内核的系统上(默认情况下禁用,但在某些发行版上启用,例如 Ubuntu)。 成功的攻击还需要通过管理界面将 HCI_HS_ENABLED 参数设置为 true(默认情况下不使用)。

来源: opennet.ru

添加评论