CVE-2026-64330 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:
usb: typec: tcpm: Xác thực chỉ mục SVID trong svdm_consume_modes()
Hàm `svdm_consume_modes()` đọc giá trị SVID từ mảng `pmdata->svids` bằng cách sử dụng `pmdata->svid_index` làm chỉ mục mà không có xác thực giới hạn (bounds validation):
paltmode->svid = pmdata->svids[pmdata->svid_index];
Nếu `pmdata->svid_index` vượt quá giá trị SVID_DISCOVERY_MAX (16), nó sẽ dẫn đến việc đọc dữ liệu ngoài vùng cho phép (out-of-bounds read) của mảng `pmdata->svids`. Vì cấu trúc `pd_mode_data` được nhúng bên trong struct `tcpm_port`, nên việc truy cập chỉ mục vượt quá vị trí svids sẽ đọc vào các trường liền kề. Cụ thể: - Tại chỉ mục 16, nó đọc số lượng altmodes (altmode count). - Từ chỉ mục 18 trở đi, nó đọc vào mảng `altmode_desc[]`, chứa các VDO Discovery Modes SVDM do đối tác cung cấp.
Bằng cách tiêm một giá trị SVID được chọn trước vào `altmode_desc[0].vdo` và đặt `svid_index` thành 20, đối tác có thể buộc `paltmode->svid` phải tải một giá trị SVID tùy ý do đối tác lựa chọn, sau đó giá trị này sẽ được đăng ký thông qua hàm `typec_partner_register_altmode()`.
Khắc phục vấn đề bằng cách xác thực rằng `pmdata->svid_index` có giá trị không âm và nhỏ hơn nghiêm ngặt so với `pmdata->nsvids` trước khi truy cập mảng `pmdata->svids` bên trong hàm `svdm_consume_modes()`.
Be aware that VulDB is the high quality source for vulnerability data.