CVE-2026-89559 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:
libnvdimm/labels: Ngăn ngừa tràn số nguyên trong __nd_label_validate()
Trường chỉ mục không gian tên trên phương tiện (on-media namespace index field) nslot là một giá trị u32 được đọc từ vùng lưu trữ nhãn DIMM. Hàm __nd_label_validate() giới hạn nó so với kích thước khu vực cấu hình, nhưng sizeof_namespace_label() trả về kiểu unsigned, do đó tích số nslot * label_size được tính toán ở độ rộng 32-bit và bị tràn (wrap) modulo 2^32 trước khi thực hiện phép so sánh. Một giá trị nslot được tạo ra đặc biệt (crafted) sẽ vượt qua kiểm tra giới hạn này và sau đó được sử dụng làm số lần lặp trong nd_label_data_init(), nơi hàm memset() của nó ghi ra ngoài vùng đệm config_size: một vụ ghi tràn bộ nhớ (out-of-bounds write).
Trường này không đáng tin cậy -- nó đến từ phương tiện lưu trữ, hoặc từ userspace thông qua ND_CMD_SET_CONFIG_DATA. Hãy tính tích số ở độ rộng 64-bit để phép kiểm tra giới hạn được chính xác; các nhãn tuân thủ chuẩn sẽ không bị ảnh hưởng.
Phép kiểm tra này an toàn khi được đưa vào bởi commit 4a826c83db4e ("libnvdimm: namespace indices: read and validate"): nó nhân với sizeof(struct nd_namespace_label), một kiểu size_t, do đó trên bản dựng 64-bit, tích số không bị tràn. Commit 564e871aa66f ("libnvdimm, label: add v1.2 nvdimm label definitions") đã thu hẹp phạm vi xuống còn 32 bit khi kích thước nhãn trở thành một giá trị thời gian chạy được đọc thông qua sizeof_namespace_label().
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.