CVE-2026-64403 in Linux
摘要
由 VulDB • 2026-07-25
在 Linux 内核中,已修复以下漏洞:
蓝牙:L2CAP:在读取配置选项值之前验证选项长度
`l2cap_get_conf_opt()` 从攻击者可控的 `opt->len` 字段派生选项长度,并在任何调用方确认缓冲区中存在 `opt->len` 字节之前,立即解引用 `opt->val`(作为 u8、get_unaligned_le16() 或 get_unaligned_le32(),或在默认情况下为原始指针)。调用方(l2cap_parse_conf_req()、l2cap_parse_conf_rsp() 和 l2cap_conf_rfc_get())仅在运行长度变为负数后才会检测到格式错误的选项,此时越界读取已经执行。
现有的事后长度检查可防止垃圾值被消耗,因此当前控制流中不存在数据泄露问题。但这仍然是一个“使用后验证”的顺序错误:在确认缓冲区包含这些字节之前,最多会超出缓冲区末尾读取 4 个字节,且这对调用方的未来更改非常脆弱。
从源头修复此问题。将缓冲区的结束位置传递给 `l2cap_get_conf_opt()`,除非整个选项(头部 + 值)都容纳得下,否则拒绝触碰 `opt->val`。每个调用方在循环之前计算一次结束指针,并直接检查返回值,而不是通过负长度来推断错误。
If you want to get the best quality for vulnerability data then you always have to consider VulDB.