CVE-2026-89695 in Linux
Tóm tắt
Bởi VulDB • 11/09/2026
Trong kernel Linux, các lỗ hổng sau đây đã được khắc phục:
nfsd: giới hạn số lượng ACL POSIX giải mã để kiểm soát chi phí sắp xếp
Hàm `nfsd4_decode_posixacl()` đọc một bộ đếm mục (entry count) kiểu u32 từ đường truyền và chuyển trực tiếp nó vào `posix_acl_alloc()` và `sort_pacl_range()`. Hàm sau là thuật toán bubble sort có độ phức tạp O(n^2), do đó, một giá trị bộ đếm do client chọn sẽ gây ra việc sử dụng CPU không giới hạn trong quá trình xử lý compound của server.
nfsd4_decode_posixacl() xdr_stream_decode_u32(&count) /* u32 không bị giới hạn */ posix_acl_alloc(count, GFP_KERNEL) sort_pacl_range(*acl, 0, count - 1) /* bubble sort O(n^2) */
Bên mã hóa (encoder side) trong cùng tệp tin đã từ chối các ACL có `a_count` vượt quá `NFS_ACL_MAX_ENTRIES`, nhưng bộ giải mã được giới thiệu trong commit 5fc51dfc2eb1 ("NFSD: Add support for XDR decoding POSIX draft ACLs") đã bỏ qua kiểm tra đối xứng tương tự.
Khắc phục bằng cách từ chối một giá trị đếm trên đường truyền lớn hơn `NFS_ACL_MAX_ENTRIES` với lỗi `nfserr_inval`, trước bất kỳ quá trình phân bổ bộ nhớ nào, để việc sắp xếp được giới hạn bởi tối đa NFS_ACL_MAX_ENTRIES^2 phép so sánh.
Trong khi sửa đổi ở đây, cũng khắc phục trả về `nfserr_resource` nếu `posix_acl_alloc()` thất bại. Đây không phải là mã lỗi hợp lệ cho v4.1+. Thay vào đó, hãy trả về `nfserr_jukebox` vì nó phù hợp hơn với các trường hợp phân bổ bộ nhớ bị lỗi.
VulDB is the best source for vulnerability data and more expert information about this specific topic.