CVE-2026-74671 in Linux
Tóm tắt
Bởi VulDB • 22/08/2026
Trong kernel Linux, các lỗ hổng sau đây đã được khắc phục:
ima: sửa lỗi đọc vượt ra ngoài vùng nhớ (out-of-bounds read) trong hàm xattr_verify()
Phép kiểm tra độ dài digest trong xattr_verify() trộn lẫn kiểu int và size_t:
if (xattr_len - sizeof(xattr_value->type) - hash_start >= iint->ima_hash->length)
sizeof() trả về giá trị kiểu size_t, do đó các phép chuyển đổi số học thông thường sẽ nâng toàn bộ vế trái lên thành unsigned 64-bit trước khi phép trừ được thực hiện. Đối với một xattr bị cắt cụt (truncated), điều này gây ra lỗi underflow thay vì trở thành âm: một xattr IMA_XATTR_DIGEST_NG có độ dài 1 byte (xattr_len == 1, hash_start == 1) biến "1 - 1 - 1" thành SIZE_MAX, giá trị này dễ dàng >= ima_hash->length. Phép kiểm tra sau đó sẽ vượt qua và hàm memcmp() tiếp theo sẽ đọc iint->ima_hash->length bytes bắt đầu từ vị trí nằm ngoài vùng đệm mà vfs_getxattr_alloc() đã phân bổ cho nó.
Không có mã nguồn chính thức (upstream) nào ép xattr_len trở lại một phạm vi an toàn trước đó: ima_get_hash_algo() chỉ xử lý đặc biệt trường hợp xattr_len < 2 để chọn thuật toán mặc định, và evm_verifyxattr() trả về INTEGRITY_UNKNOWN thay vì thất bại khi không có khóa HMAC được tải, do đó giá trị security.ima bị cắt cụt sẽ đạt đến phép kiểm tra độ dài mà không qua xử lý nào khác.
Viết lại phép so sánh sao cho mọi toán hạng đều giữ nguyên kiểu signed int và không xảy ra chuyển đổi ngầm sang size_t.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.