CVE-2026-31498Linux内核蓝牙L2CAP模块存在安全漏洞,涉及ERTM重新初始化和参数校验缺失。在处理重配置请求时,由于逻辑错误导致已分配的ERTM资源未释放即重新初始化,引发内存泄漏。同时,解析函数未校验remote_mps最小值,允许零值传入数据处理环节,导致死循环和内存耗尽。本地低权限攻击者可利用此漏洞造成系统拒绝服务。
该漏洞源于Linux内核`net/bluetooth/l2cap_core.c`文件中的逻辑缺陷。首先,`l2cap_config_req`函数在处理BT_CONNECTED状态下的通道重配置时,错误地跳转至`l2cap_ertm_init`。该函数会重新初始化发送队列、重传队列及SDU指针,却未释放原先分配的内存,导致严重的内存泄漏。其次,`l2cap_parse_conf_req`函数在解析RFC选项时,缺乏对`remote_mps`(源自max_pdu_size)的最小值校验。攻击者可发送包含恶意配置参数的L2CAP数据包,将`remote_mps`置为0。该值随后传递至`l2cap_segment_sdu`函数,使得`pdu_len`变为0。在分段处理循环中,由于`pdu_len`为0,总长度`len`无法递减,导致`while`循环无限执行,直至系统资源耗尽崩溃。