CVE-2026-31610 json
ksmbd: fix mechToken leak when SPNEGO decode fails after token alloc
published 2026-04-24 6 mo ago modified 2026-07-24 3 mo ago also EUVD-2026-25503
- cvss
- 5.5
- version 3.1, NVD
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 0.1%
- EPSS 0.1% chance of exploitation in 30 days, percentile 3%
- public exploits
- 0
- none known
Summary
In the Linux kernel, the following vulnerability has been resolved:
ksmbd: fix mechToken leak when SPNEGO decode fails after token alloc
The kernel ASN.1 BER decoder calls action callbacks incrementally as it walks the input. When ksmbd_decode_negTokenInit() reaches the mechToken [2] OCTET STRING element, ksmbd_neg_token_alloc() allocates conn->mechToken immediately via kmemdup_nul(). If a later element in the same blob is malformed, then the decoder will return nonzero after the allocation is already live. This could happen if mechListMIC [3] overrunse the enclosing SEQUENCE.
decode_negotiation_token() then sets conn->use_spnego = false because both the negTokenInit and negTokenTarg grammars failed. The cleanup at the bottom of smb2_sess_setup() is gated on use_spnego:
if (conn->use_spnego && conn->mechToken) { kfree(conn->mechToken); conn->mechToken = NULL; }
so the kfree is skipped, causing the mechToken to never be freed.
This codepath is reachable pre-authentication, so untrusted clients can cause slow memory leaks on a server without even being properly authenticated.
Fix this up by not checking check for use_spnego, as it's not required, so the memory will always be properly freed. At the same time, always free the memory in ksmbd_conn_free() incase some other failure path forgot to free it.
Patch / fix
- Linux Linux 5.15.212, 6.1.178, 6.6.136, 6.12.83, 6.18.24, 6.19.14, 7.0.1, 7.1
- linux Debian 12 6.1.180-1
- linux Debian 13 6.12.85-1
- linux Debian 14 6.19.14-1
debian advisories DEBIAN-CVE-2026-31610
- linux Ubuntu 22.04 LTS 5.15.0-198.208
- linux Ubuntu 24.04 LTS 6.8.0-136.136
- linux Ubuntu 26.04 LTS 7.0.0-27.27
- linux-aws Ubuntu 22.04 LTS 5.15.0-1117.124
- linux-aws Ubuntu 24.04 LTS 6.8.0-1061.64
- linux-aws Ubuntu 26.04 LTS 7.0.0-1008.8
- linux-gcp Ubuntu 22.04 LTS 5.15.0-1118.128
- linux-gcp Ubuntu 24.04 LTS 6.8.0-1064.72
ubuntu advisories UBUNTU-CVE-2026-31610
Ubuntu security data © Canonical Ltd., from https://github.com/canonical/ubuntu-security-notices via OSV; changed: normalised to fixed package versions per release. CC BY-SA 4.0
- kernel-source openSUSE Tumbleweed 7.0.3-1.1
opensuse advisories openSUSE-SU-2026:10703-1
- git.kernel.org/stable/c/ae9cdb29efed20ffdee9ff3b0bb72fb369c353da commit
- git.kernel.org/stable/c/bd4a7fb04f06f419b0e93d8b52fe32067eb312d1 commit
- git.kernel.org/stable/c/745a535461bbb90a56d9357573c9f97a5c12abe1 commit
- git.kernel.org/stable/c/dd577cb55588ec3fbc66af3621280306601c4192 commit
- git.kernel.org/stable/c/dd53414e301beb915fe672dc4c4a51bafb917604 commit
- git.kernel.org/stable/c/269c800a7a7e363459291885b35f7bc72e231ed6 commit
- git.kernel.org/stable/c/6c8c44e6553b9f072f62d9875e567766eb293162 commit
- git.kernel.org/stable/c/ad0057fb91218914d6c98268718ceb9d59b388e1 commit
Vendor advisories
What the vendors themselves say about their products: affected, fixed or not affected, and what to do.
red hat product security vex CVE-2026-31610 updated
kernel: ksmbd: fix mechToken leak when SPNEGO decode fails after token alloc
-
Red Hat Enterprise Linux 6 perf, kernel, python-perf, kernel-kdump, kernel-firmware, kernel-bootwrapper, +1 more Red Hat Enterprise Linux 7 perf, kernel, bpftool, kernel-rt, python-perf, kernel-kdump, +8 more Red Hat Enterprise Linux 8 perf, kernel, bpftool, kernel-rt, kernel-core, kernel-tools, +29 more Red Hat Enterprise Linux 9 rv, perf, rtla, kernel, bpftool, libperf, +83 more Red Hat Enterprise Linux 10 kernelnot affected: vulnerable code not present
Red Hat CSAF VEX © Red Hat, Inc., from https://security.access.redhat.com/data/csaf/v2/vex/; changed: reduced to product statuses and remediations. CC BY 4.0 · csaf
Exploit prediction
0.14% chance of exploitation in the next 30 days, higher than 3% of all scored CVEs (FIRST EPSS, 2026-11-08).
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| NVD | 3.1 | 5.5 | CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H |
Affected products
- Linux Linux
Classification
- Weakness
-
- CWE-401 Missing Release of Memory after Effective Lifetime
- Technology feeds
References
- git.kernel.org /stable/c/ae9cdb29efed20ffdee9ff3b0bb72fb369c353da
- git.kernel.org /stable/c/bd4a7fb04f06f419b0e93d8b52fe32067eb312d1
-
git.kernel.org
/stable/c/745a535461bbb90a56d9357573c9f97a5c12abe1
patch
-
git.kernel.org
/stable/c/dd577cb55588ec3fbc66af3621280306601c4192
patch
-
git.kernel.org
/stable/c/dd53414e301beb915fe672dc4c4a51bafb917604
patch
-
git.kernel.org
/stable/c/269c800a7a7e363459291885b35f7bc72e231ed6
patch
-
git.kernel.org
/stable/c/6c8c44e6553b9f072f62d9875e567766eb293162
patch
-
git.kernel.org
/stable/c/ad0057fb91218914d6c98268718ceb9d59b388e1
patch
Sources
- CVE List CVE-2026-31610
- NVD CVE-2026-31610
Fencer Vulns keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.