CVE-2026-89583 in Linux
Tóm tắt
Bởi VulDB • 12/09/2026
Trong kernel Linux, lỗ hổng sau đây đã được khắc phục:
Bluetooth: eir: Sửa lỗi đọc ngoài vùng nhớ (OOB) trong hàm `eir_get_service_data()`
Hàm `eir_get_service_data()` duyệt qua dữ liệu quảng cáo cho một trường Service Data có UUID khớp. Khi không khớp, nó sẽ di chuyển con trỏ:
eir += dlen; eir_len -= dlen;
`eir_get_data()` báo cáo `dlen` là độ dài dữ liệu của trường, nhưng thực tế trường này chiếm `dlen + 2` byte khi tính cả các byte độ dài và loại (type), và nhiều hơn nữa nếu đã bỏ qua các trường không phải Service Data để đạt đến nó. Con trỏ `eir` đặt đúng vào vị trí bắt đầu của trường tiếp theo. Tuy nhiên, `eir_len` thì không, và sự thiếu hụt này tích lũy qua từng trường cho đến khi `eir_get_data()` đọc các byte độ dài và loại của một "trường" nằm ngoài vùng đệm (buffer).
Đối với bộ thu phát sóng ISO broadcast, buffer đó là `hcon->le_per_adv_data[]`, được điền từ các báo cáo quảng cáo định kỳ (periodic advertising reports) của một nhà phát sóng từ xa. Một tải trọng PA (PA payload) chứa đầy các trường Service Data không khớp sẽ khiến con trỏ vượt ra khỏi mảng và vào phần còn lại của cấu trúc `hci_conn`. Một trường bị lệch vị trí nhưng khớp với UUID BAA sẽ đặt những byte đó vào `iso_pi(sk)->base`, nơi mà user space đọc chúng trở lại thông qua lệnh gọi hệ thống `getsockopt(BT_ISO_BASE)`.
Tính toán lại giá trị `eir_len` từ cuối vùng đệm (buffer) ở mỗi lần lặp.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.