CVE-2026-89698 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: mở rộng các trường địa chỉ nfsd_genl_rqstp sang sockaddr_storage
struct nfsd_genl_rqstp khai báo rq_daddr và rq_s_addr là "struct sockaddr" thuần túy (16 byte). Khi một máy khách NFS IPv6 kết nối, hàm nfsd_genl_rpc_status_compose_msg() ép kiểu các trường này thành "struct sockaddr_in6 *" (28 byte) và đọc sin6_addr tại offset 8..24, điều này mở rộng ra ngoài 8 byte so với cuối của trường sockaddr 16 byte vào thành viên rq_flags liền kề. Hàm nla_put_in6_addr sau đó gửi 8 byte địa chỉ IPv6 bị cắt cụt cùng với 8 byte của rq_flags sang không gian người dùng (userspace) thông qua các thuộc tính netlink NFSD_A_RPC_STATUS_SADDR6/DADDR6.
Lỗ hổng này có thể khai thác được bởi bất kỳ tiến trình nào không đặc quyền trong namespace mạng vì NFSD_CMD_RPC_STATUS_GET sử dụng GENL_CMD_CAP_DUMP mà không yêu cầu GENL_ADMIN_PERM.
Cách khắc phục: Mở rộng rq_daddr và rq_s_addr sang struct sockaddr_storage để các phép ép kiểu IPv6 hoạt động đúng giới hạn, sao chép sizeof(struct sockaddr_storage) byte trong các lệnh gọi memcpy để nắm bắt đầy đủ địa chỉ, và khởi tạo bằng 0 biến stack genl_rqstp nhằm ngăn chặn việc rò rỉ các byte đuôi chưa được khởi tạo thông qua netlink.
If you want to get best quality of vulnerability data, you may have to visit VulDB.