{"id":"CVE-2026-89698","state":"PUBLISHED","title":"nfsd: widen nfsd_genl_rqstp address fields to sockaddr_storage","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nnfsd: widen nfsd_genl_rqstp address fields to sockaddr_storage\n\nstruct nfsd_genl_rqstp declares rq_daddr and rq_saddr as plain\n\"struct sockaddr\" (16 bytes). When an IPv6 NFS client is connected,\nnfsd_genl_rpc_status_compose_msg() casts these fields to\n\"struct sockaddr_in6 *\" (28 bytes) and reads sin6_addr at offset 8..24,\nwhich extends 8 bytes past the end of the 16-byte sockaddr field into\nthe adjacent rq_flags member. The 16-byte nla_put_in6_addr then ships 8\nbytes of truncated IPv6 address followed by 8 bytes of rq_flags to\nuserspace via the NFSD_A_RPC_STATUS_SADDR6/DADDR6 netlink attributes.\n\nThis is reachable by any unprivileged process in the network namespace\nbecause NFSD_CMD_RPC_STATUS_GET uses GENL_CMD_CAP_DUMP without\nGENL_ADMIN_PERM.\n\nFix by widening rq_daddr and rq_saddr to struct sockaddr_storage so the\nIPv6 casts operate within bounds, copying sizeof(struct sockaddr_storage)\nbytes in the memcpy calls so the full address is captured, and\nzero-initializing the genl_rqstp stack variable to prevent leaking\nuninitialized tail bytes through netlink.","publishedAt":"2026-09-11T19:46:16.551Z","updatedAt":"2026-10-19T08:51:11.410Z","severity":null,"assigner":"Linux","products":["Linux Linux"],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"bd9d6a3efa9709e653aafbeb859289feccb8e70c","status":"affected","lessThan":"9a2e791639a1c5cac3f219b0d2632835d8f88d27","versionType":"git"},{"version":"bd9d6a3efa9709e653aafbeb859289feccb8e70c","status":"affected","lessThan":"03c512f22d3fbe7a3767d6df5e3d88b8e7c105e5","versionType":"git"},{"version":"bd9d6a3efa9709e653aafbeb859289feccb8e70c","status":"affected","lessThan":"dcb69ad0dafb4a24b825183bb94055d5be8a10bd","versionType":"git"},{"version":"bd9d6a3efa9709e653aafbeb859289feccb8e70c","status":"affected","lessThan":"a99d720ed2a5258564e5e9d5f39f3184a030d354","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["fs/nfsd/nfsctl.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"6.7","status":"affected"},{"version":"0","status":"unaffected","lessThan":"6.7","versionType":"semver"},{"version":"6.12.111","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.51","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"7.2.4","status":"unaffected","lessThanOrEqual":"7.2.*","versionType":"semver"},{"version":"7.3","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["fs/nfsd/nfsctl.c"]}],"references":["https://git.kernel.org/stable/c/9a2e791639a1c5cac3f219b0d2632835d8f88d27","https://git.kernel.org/stable/c/03c512f22d3fbe7a3767d6df5e3d88b8e7c105e5","https://git.kernel.org/stable/c/dcb69ad0dafb4a24b825183bb94055d5be8a10bd","https://git.kernel.org/stable/c/a99d720ed2a5258564e5e9d5f39f3184a030d354"],"weaknesses":[],"ingestedAt":"2026-10-29T20:13:26.108Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/89xxx/CVE-2026-89698.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-89698","state":"PUBLISHED","datePublished":"2026-09-11T19:46:16.551Z","dateUpdated":"2026-10-19T08:51:11.410Z","assignerShortName":"Linux","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateReserved":"2026-09-11T19:38:34.750Z"},"containers":{"cna":{"title":"nfsd: widen nfsd_genl_rqstp address fields to sockaddr_storage","descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nnfsd: widen nfsd_genl_rqstp address fields to sockaddr_storage\n\nstruct nfsd_genl_rqstp declares rq_daddr and rq_saddr as plain\n\"struct sockaddr\" (16 bytes). When an IPv6 NFS client is connected,\nnfsd_genl_rpc_status_compose_msg() casts these fields to\n\"struct sockaddr_in6 *\" (28 bytes) and reads sin6_addr at offset 8..24,\nwhich extends 8 bytes past the end of the 16-byte sockaddr field into\nthe adjacent rq_flags member. The 16-byte nla_put_in6_addr then ships 8\nbytes of truncated IPv6 address followed by 8 bytes of rq_flags to\nuserspace via the NFSD_A_RPC_STATUS_SADDR6/DADDR6 netlink attributes.\n\nThis is reachable by any unprivileged process in the network namespace\nbecause NFSD_CMD_RPC_STATUS_GET uses GENL_CMD_CAP_DUMP without\nGENL_ADMIN_PERM.\n\nFix by widening rq_daddr and rq_saddr to struct sockaddr_storage so the\nIPv6 casts operate within bounds, copying sizeof(struct sockaddr_storage)\nbytes in the memcpy calls so the full address is captured, and\nzero-initializing the genl_rqstp stack variable to prevent leaking\nuninitialized tail bytes through netlink."}],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"bd9d6a3efa9709e653aafbeb859289feccb8e70c","status":"affected","lessThan":"9a2e791639a1c5cac3f219b0d2632835d8f88d27","versionType":"git"},{"version":"bd9d6a3efa9709e653aafbeb859289feccb8e70c","status":"affected","lessThan":"03c512f22d3fbe7a3767d6df5e3d88b8e7c105e5","versionType":"git"},{"version":"bd9d6a3efa9709e653aafbeb859289feccb8e70c","status":"affected","lessThan":"dcb69ad0dafb4a24b825183bb94055d5be8a10bd","versionType":"git"},{"version":"bd9d6a3efa9709e653aafbeb859289feccb8e70c","status":"affected","lessThan":"a99d720ed2a5258564e5e9d5f39f3184a030d354","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["fs/nfsd/nfsctl.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"6.7","status":"affected"},{"version":"0","status":"unaffected","lessThan":"6.7","versionType":"semver"},{"version":"6.12.111","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.51","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"7.2.4","status":"unaffected","lessThanOrEqual":"7.2.*","versionType":"semver"},{"version":"7.3","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["fs/nfsd/nfsctl.c"]}],"references":[{"url":"https://git.kernel.org/stable/c/9a2e791639a1c5cac3f219b0d2632835d8f88d27"},{"url":"https://git.kernel.org/stable/c/03c512f22d3fbe7a3767d6df5e3d88b8e7c105e5"},{"url":"https://git.kernel.org/stable/c/dcb69ad0dafb4a24b825183bb94055d5be8a10bd"},{"url":"https://git.kernel.org/stable/c/a99d720ed2a5258564e5e9d5f39f3184a030d354"}],"providerMetadata":{"shortName":"Linux","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateUpdated":"2026-10-19T08:51:11.410Z"},"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.7","versionEndExcluding":"6.12.111"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.7","versionEndExcluding":"6.18.51"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.7","versionEndExcluding":"7.2.4"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.7","versionEndExcluding":"7.3"}]}]}],"x_generator":{"engine":"bippy-1.2.0"}}}}}