CVE-2026-64403 in Linux
Tóm tắt
Bởi VulDB • 25/07/2026
Trong kernel Linux, lỗ hổng sau đây đã được khắc phục:
Bluetooth: L2CAP: xác thực độ dài tùy chọn trước khi đọc giá trị cấu hình của tùy chọn (conf opt)
Hàm `l2cap_get_conf_opt()` suy ra độ dài tùy chọn từ trường `opt->len` do kẻ tấn công kiểm soát và ngay lập tức giải tham chiếu `opt->val` (dưới dạng u8, get_unaligned_le16() hoặc get_unaligned_le32(), hoặc con trỏ thô cho trường hợp mặc định) trước khi bất kỳ hàm gọi nào xác nhận rằng có đủ `opt->len` byte trong bộ đệm. Các hàm gọi (`l2cap_parse_conf_req()`, `l2cap_parse_conf_rsp()` và `l2cap_conf_rfc_get()`) chỉ phát hiện một tùy chọn bị lỗi sau đó, khi độ dài chạy đã trở thành âm, thời điểm mà việc đọc vượt quá giới hạn (out-of-bounds read) đã thực thi.
Một kiểm tra độ dài theo kiểu hậu cứu (post-hoc length check) đang tồn tại giữ cho giá trị rác không được tiêu thụ, vì vậy đây không phải là rò rỉ dữ liệu trong luồng điều khiển hiện tại. Tuy nhiên, vẫn là một lỗi thứ tự xác thực-sau-khi-sử dụng: tối đa 4 byte bị đọc vượt quá cuối bộ đệm trước khi biết rằng chúng tồn tại ở đó, và nó dễ bị ảnh hưởng bởi các thay đổi tương lai đối với các hàm gọi.
Khắc phục vấn đề từ gốc. Truyền con trỏ kết thúc của bộ đệm vào `l2cap_get_conf_opt()` và từ chối thao tác trên `opt->val` trừ khi toàn bộ tùy chọn (tiêu đề + giá trị) vừa khít. Mỗi hàm gọi tính toán một con trỏ kết thúc một lần trước vòng lặp và kiểm tra trực tiếp giá trị trả về thay vì suy ra lỗi từ độ dài âm.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.