BlueZ HID over GATT Profile代码执行漏洞CVE-2024-8805
BlueZ 是官方 Linux Bluetooth 栈,在Linux系统中扮演着重要角色,作为Linux系统的官方蓝牙协议栈,提供对蓝牙硬件的访问和控制能力。
Bluez作为一个开源项目而遵循GPL许可,跟随蓝牙技术发展不断更新升级,以支持蓝牙技术最新标准,如Bluetooth Low Energy(BLE)。
一、基本情况
Bluez提供一整套蓝牙协议栈,包括但不限于核心协议、控制器接口、数据传输协议等,不仅支持传统的蓝牙设备连接,也支持BLE设备。
HID OVER GATT Profile 是蓝牙组织规定的标准的profile之一,profile则可以理解为是一种规范、一个标准的通信协议,它存在于从机中。
栋科技漏洞库关注到 BlueZ HID over GATT配置文件存在不当访问控制远程代码执行漏洞,漏洞追踪为CVE-2024-8805,CVSS评分8.8。
二、漏洞分析
CVE-2024-8805漏洞是BlueZ HID over GATT配置文件存在不当访问控制远程代码执行漏洞,具体存在于HID over GATT配置文件实现中。
CVE-2024-8805漏洞源于在允许访问功能之前没有进行授权而导致,漏洞允许允许网络相邻的攻击者在BlueZ受影响安装上执行任意代码。
攻击者可以利用该漏洞在当前用户上下文中执行代码,且需要注意的是,利用该漏洞不需要进行身份验证,具体修复示例代码如下所示:
diff --git a/client/main.c b/client/main.c
index a96a4263849d..2a5c7527bc6c 100644
--- a/client/main.c
+++ b/client/main.c
@@ -1095,6 +1095,7 @@ static void cmd_pairable(int argc, char *argv[])
static void cmd_discoverable(int argc, char *argv[])
{
+ DBusMessageIter iter;
dbus_bool_t discoverable;
char *str;
@@ -1104,6 +1105,18 @@ static void cmd_discoverable(int argc, char *argv[])
if (check_default_ctrl() == FALSE)
return bt_shell_noninteractive_quit(EXIT_FAILURE);
+ if (discoverable && g_dbus_proxy_get_property(default_ctrl->proxy,
+ "DiscoverableTimeout", &iter)) {
+ uint32_t value;
+
+ dbus_message_iter_get_basic(&iter, &value);
+
+ if (!value)
+ bt_shell_printf("Warning: setting discoverable while "
+ "discoverable-timeout not set(0) is not"
+ " recommended\n");
+ }
+
str = g_strdup_printf("discoverable %s",
discoverable == TRUE ? "on" : "off");
三、漏洞影响
未知
四、修复建议
建议更新当前系统或软件至最新版
五、参考链接
https://git.kernel.org/pub/scm/bluetooth/bluez.git/?id=41f943630d9a