CVE-2026-31707: ksmbd: validate response sizes in ipc_validate_msg()
In the Linux kernel, the following vulnerability has been resolved:
ksmbd: validate response sizes in ipc_validate_msg()
ipc_validate_msg() computes the expected message size for each
response type by adding (or multiplying) attacker-controlled fields
from the daemon response to a fixed struct size in unsigned int
arithmetic. Three cases can overflow:
KSMBD_EVENT_RPC_REQUEST:
msg_sz = sizeof(struct ksmbd_rpc_command) + resp->payload_sz;
KSMBD_EVENT_SHARE_CONFIG_REQUEST:
msg_sz = sizeof(struct ksmbd_share_config_response) +
resp->payload_sz;
KSMBD_EVENT_LOGIN_REQUEST_EXT:
msg_sz = sizeof(struct ksmbd_login_response_ext) +
resp->ngroups * sizeof(gid_t);
resp->payload_sz is __u32 and resp->ngroups is __s32. Each addition
can wrap in unsigned int; the multiplication by sizeof(gid_t) mixes
signed and size_t, so a negative ngroups is converted to SIZE_MAX
before the multiply. A wrapped value of msg_sz that happens to
equal entry->msg_sz bypasses the size check on the next line, and
downstream consumers (smb2pdu.c:6742 memcpy using rpc_resp->payload_sz,
kmemdup in ksmbd_alloc_user using resp_ext->ngroups) then trust the
unverified length.
Use check_add_overflow() on the RPC_REQUEST and SHARE_CONFIG_REQUEST
paths to detect integer overflow without constraining functional
payload size; userspace ksmbd-tools grows NDR responses in 4096-byte
chunks for calls like NetShareEnumAll, so a hard transport cap is
unworkable on the response side. For LOGIN_REQUEST_EXT, reject
resp->ngroups outside the signed [0, NGROUPS_MAX] range up front and
report the error from ipc_validate_msg() so it fires at the IPC
boundary; with that bound the subsequent multiplication and addition
stay well below UINT_MAX. The now-redundant ngroups check and
pr_err in ksmbd_alloc_user() are removed.
This is the response-side analogue of aab98e2dbd64 ("ksmbd: fix
integer overflows on 32 bit systems"), which hardened the request
side.
Security readout for executives and security teams
Plain-English summary
A flaw in Linux’s ksmbd SMB server can let malformed daemon responses bypass size checks through integer overflow. Later kernel operations may trust unsafe lengths, creating potential confidentiality loss or system crashes. Risk is limited to systems using affected kernels and the ksmbd path.
Executive priority
Prioritize affected systems actively providing SMB through ksmbd, especially shared or multi-user hosts. Treat remediation as high priority because successful exploitation could expose kernel memory or disrupt availability, while recognizing that the supplied evidence indicates a local rather than directly remote attack vector.
Technical view
ipc_validate_msg() calculates response sizes using attacker-controlled payload_sz or ngroups values. Unsigned addition, and signed-to-unsigned conversion during multiplication, can wrap msg_sz and defeat equality validation. Downstream memcpy or kmemdup operations then consume unverified lengths. The fix uses overflow-checked addition and validates ngroups within 0 to NGROUPS_MAX at the IPC boundary.
Likely exposure
Exposure requires an affected Linux kernel and use of ksmbd. The bundle names affected releases across several kernel lines, but does not provide sufficiently clear version ranges for reliable inventory matching. Confirm status against the listed stable fixes and distribution guidance.
Exploitation context
The CVSS vector describes local access, low complexity, low privileges, and no user interaction, with potential high confidentiality and availability impact. The supplied record marks KEV false and provides no evidence of active exploitation or a public exploit.
Researcher notes
The vulnerable boundary is response-side IPC validation for RPC_REQUEST, SHARE_CONFIG_REQUEST, and LOGIN_REQUEST_EXT. The source explicitly identifies wrapped equality checks followed by memcpy or kmemdup using unverified fields. It does not establish practical exploit reliability, affected distribution packages, public proof-of-concept availability, or exploitation in the wild.
Mitigation direction
Install a vendor-supported kernel update containing the applicable listed stable fix.
Check Linux distribution advisories for exact package versions and backport status.
If immediate updating is impossible, obtain vendor guidance for supported temporary risk reduction.
Validation and detection
Identify kernel versions on systems where ksmbd is enabled or used.
Compare installed kernel packages with distribution advisories and the listed stable commits.
After updating, confirm the running kernel includes the applicable fix.
Monitor affected hosts for unusual ksmbd crashes or kernel memory-related faults.
Generated from the cited source records. This long-tail analysis has not been individually reviewed by a named human.
Potential ATT&CK relevance
Conservative CVE-to-ATT&CK context
These mappings and lookup hints may be relevant to the vulnerability behavior, CWE, affected product, or exposure path. Glexia-inferred context is not an official MITRE, ATT&CK, CWE, or CVE Program mapping.
ATT&CK lookup starting points
Use these exact CWE pages and searches to review the Glexia ATT&CK library from this CVE's weakness and description context.
cve · low confidence lookup
CVE-2026-31707 mapping review
Open the CVE-to-ATT&CK bridge for reviewed, inferred, or future official mappings tied to this CVE.
These fields come from the CVE record and ADP containers, not from Glexia's Take. They preserve time-varying source decisions such as CISA SSVC, KEV status, CVSS metrics, and provider references.
1CVSS vectors
3Timeline events
0ADP providers
6Source links
CVSS vector scores
1 official score
We collect every scored CVSS vector available in the official CNA and ADP containers. When more than one version is present, the table keeps the source vectors side by side instead of collapsing them into the highest score.