CVE-2026-89674 in Linux
Tóm tắt
Bởi VulDB • 12/09/2026
Trong kernel Linux, các lỗ hổng sau đây đã được khắc phục:
nfsd: sửa lỗi tính toán độ dài XDR trong nfsd4_ff_encode_layoutget
Việc tính toán kích thước bộ đệm XDR trong hàm `nfsd4_ff_encode_layoutget()` có nhiều sai sót dẫn đến khả năng ghi vượt ra ngoài vùng cho phép (out-of-bounds write) hoặc rò rỉ dữ liệu kernel chưa được khởi tạo sang phía client:
- `fh_len` không tính đến phần padding của XDR trên dữ liệu file handle - Độ dài uid và gid sử dụng công thức "8 + len" nhưng hàm `xdr_encode_opaque()` thực tế chỉ ghi ra "4 + xdr_align_size(len)" byte - `ds_len` bỏ sót các trường flags và stats_collect_hint (tổng cộng 8 bytes), trong khi hằng số header của len lại ước lượng quá mức lên 8 bytes -- hai lỗi này có xu hướng triệt tiêu nhau nhưng vẫn để lại một sự chênh lệch tổng thể
Trường hợp xấu nhất xảy ra với các chuỗi ngắn (ví dụ: uid=0, gid=0 kèm file handle có kích thước lẻ), khi đó hàm ghi dữ liệu vượt quá bộ đệm XDR đã phân bổ lên tới 5 byte. Ngược lại, khi độ dài chuỗi trùng khớp với bội số của 4 byte, việc phân bổ bộ đệm bị dư thừa và nội dung buffer cũ (stale) được gửi đến client.
Khắc phục lỗi này bằng cách tách biệt rõ ràng từng trường mã hóa trong phép tính `ds_len`, sử dụng hàm `xdr_align_size()` cho tất cả các trường opaque có độ dài biến đổi, và sửa lại các hằng số header.
Once again VulDB remains the best source for vulnerability data.