CVE-2026-89538 (GCVE-0-2026-89538)
Vulnerability from cvelistv5 – Published: 2026-09-11 19:44 – Updated: 2026-10-19 08:48
VLAI
EPSS
VEX
Title
SUNRPC: Reject krb5 v2 wrap tokens with oversized ec field
Summary
In the Linux kernel, the following vulnerability has been resolved:
SUNRPC: Reject krb5 v2 wrap tokens with oversized ec field
gss_krb5_unwrap_v2() sets buf->len to a logical
length, which can be much smaller than head[0].iov_len
(the allocated receive-page capacity). It then calls
xdr_buf_trim() with a trim length derived from the 16-bit
"extra count" (ec) field in the Kerberos v2 token header.
The ec field is authenticated by the post-decrypt memcmp()
against the encrypted header copy, so a randomly-mutated
value is rejected. However, any peer holding a valid GSS
context can legitimately encrypt a token whose ec exceeds
the plaintext length. Per RFC 4121, such a token is
structurally malformed.
Although xdr_buf_trim() now clamps the buf->len subtraction
to avoid unsigned underflow, the buffer is still left in a
semantically invalid state (zero length, inconsistent iov
lengths) when ec is oversized.
Reject these tokens before calling xdr_buf_trim(), giving
callers a well-defined GSS_S_DEFECTIVE_TOKEN error and
keeping the xdr_buf internally consistent. The wrapped blob
begins at a nonzero offset -- both callers pass len as
offset + opaque_len -- so buf->len still counts the offset
bytes that precede the blob. Compare the trim length
against the remaining wrapped segment, buf->len - offset,
rather than the whole buffer; comparing against buf->len
alone leaves an offset-wide window in which an oversized ec
passes the test and xdr_buf_trim() cuts into the bytes ahead
of the blob.
Severity
9.8 (Critical)
SSVC
Exploitation: none
Automatable: yes
Technical Impact: total
CISA Coordinator · CISA-ADP (v2.0.3)
Decision recorded 2026-10-16 19:23 UTC
Assigner
References
8 references
Impacted products
2 products
| Vendor | Product | Version | CPE status | |
|---|---|---|---|---|
| Linux | Linux |
Affected:
cf4c024b908353fcc48309374d39e3399d67dfd1 , < ac9efc29346b6942e71f0e24a3178a9121330fab
(git)
Affected: cf4c024b908353fcc48309374d39e3399d67dfd1 , < b5746095b59f4d11f39f08751d36bbdfd1e5deac (git) Affected: cf4c024b908353fcc48309374d39e3399d67dfd1 , < 9fc6d6e6db49ab55208d5dd1c424c1d0d9aa7296 (git) Affected: cf4c024b908353fcc48309374d39e3399d67dfd1 , < 4abb44a29bb515df6f49123848765c70fc9b5021 (git) Affected: cf4c024b908353fcc48309374d39e3399d67dfd1 , < dfcd81ab45613d45996fbf483d4ef54b0ec90ab9 (git) Affected: cf4c024b908353fcc48309374d39e3399d67dfd1 , < 1f9856af065b6158271687e9788407b9573fd16f (git) Affected: cf4c024b908353fcc48309374d39e3399d67dfd1 , < 880effc943ed82d6811f272ed3307c222b40f4d6 (git) Affected: cf4c024b908353fcc48309374d39e3399d67dfd1 , < ad484748eec0a66eac0f13ab53b3fbedb7333c91 (git) |
guessed | |
| Linux | Linux |
Affected:
3.13
Unaffected: 0 , < 3.13 (semver) Unaffected: 5.10.270 , ≤ 5.10.* (semver) Unaffected: 5.15.221 , ≤ 5.15.* (semver) Unaffected: 6.1.188 , ≤ 6.1.* (semver) Unaffected: 6.6.157 , ≤ 6.6.* (semver) Unaffected: 6.12.109 , ≤ 6.12.* (semver) Unaffected: 6.18.50 , ≤ 6.18.* (semver) Unaffected: 7.2.4 , ≤ 7.2.* (semver) Unaffected: 7.3 , ≤ * (original_commit_for_fix) |
guessed |
{
"containers": {
"adp": [
{
"metrics": [
{
"other": {
"content": {
"id": "CVE-2026-89538",
"options": [
{
"Exploitation": "none"
},
{
"Automatable": "yes"
},
{
"Technical Impact": "total"
}
],
"role": "CISA Coordinator",
"timestamp": "2026-10-16T19:23:19.852732Z",
"version": "2.0.3"
},
"type": "ssvc"
}
}
],
"providerMetadata": {
"dateUpdated": "2026-10-16T19:26:41.901Z",
"orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"shortName": "CISA-ADP"
},
"title": "CISA ADP Vulnrichment"
}
],
"cna": {
"affected": [
{
"defaultStatus": "unaffected",
"product": "Linux",
"programFiles": [
"net/sunrpc/auth_gss/gss_krb5_wrap.c"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"versions": [
{
"lessThan": "ac9efc29346b6942e71f0e24a3178a9121330fab",
"status": "affected",
"version": "cf4c024b908353fcc48309374d39e3399d67dfd1",
"versionType": "git"
},
{
"lessThan": "b5746095b59f4d11f39f08751d36bbdfd1e5deac",
"status": "affected",
"version": "cf4c024b908353fcc48309374d39e3399d67dfd1",
"versionType": "git"
},
{
"lessThan": "9fc6d6e6db49ab55208d5dd1c424c1d0d9aa7296",
"status": "affected",
"version": "cf4c024b908353fcc48309374d39e3399d67dfd1",
"versionType": "git"
},
{
"lessThan": "4abb44a29bb515df6f49123848765c70fc9b5021",
"status": "affected",
"version": "cf4c024b908353fcc48309374d39e3399d67dfd1",
"versionType": "git"
},
{
"lessThan": "dfcd81ab45613d45996fbf483d4ef54b0ec90ab9",
"status": "affected",
"version": "cf4c024b908353fcc48309374d39e3399d67dfd1",
"versionType": "git"
},
{
"lessThan": "1f9856af065b6158271687e9788407b9573fd16f",
"status": "affected",
"version": "cf4c024b908353fcc48309374d39e3399d67dfd1",
"versionType": "git"
},
{
"lessThan": "880effc943ed82d6811f272ed3307c222b40f4d6",
"status": "affected",
"version": "cf4c024b908353fcc48309374d39e3399d67dfd1",
"versionType": "git"
},
{
"lessThan": "ad484748eec0a66eac0f13ab53b3fbedb7333c91",
"status": "affected",
"version": "cf4c024b908353fcc48309374d39e3399d67dfd1",
"versionType": "git"
}
]
},
{
"defaultStatus": "affected",
"product": "Linux",
"programFiles": [
"net/sunrpc/auth_gss/gss_krb5_wrap.c"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"versions": [
{
"status": "affected",
"version": "3.13"
},
{
"lessThan": "3.13",
"status": "unaffected",
"version": "0",
"versionType": "semver"
},
{
"lessThanOrEqual": "5.10.*",
"status": "unaffected",
"version": "5.10.270",
"versionType": "semver"
},
{
"lessThanOrEqual": "5.15.*",
"status": "unaffected",
"version": "5.15.221",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.1.*",
"status": "unaffected",
"version": "6.1.188",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.6.*",
"status": "unaffected",
"version": "6.6.157",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.12.*",
"status": "unaffected",
"version": "6.12.109",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.18.*",
"status": "unaffected",
"version": "6.18.50",
"versionType": "semver"
},
{
"lessThanOrEqual": "7.2.*",
"status": "unaffected",
"version": "7.2.4",
"versionType": "semver"
},
{
"lessThanOrEqual": "*",
"status": "unaffected",
"version": "7.3",
"versionType": "original_commit_for_fix"
}
]
}
],
"cpeApplicability": [
{
"nodes": [
{
"cpeMatch": [
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "5.10.270",
"versionStartIncluding": "3.13",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "5.15.221",
"versionStartIncluding": "3.13",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "6.1.188",
"versionStartIncluding": "3.13",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "6.6.157",
"versionStartIncluding": "3.13",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "6.12.109",
"versionStartIncluding": "3.13",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "6.18.50",
"versionStartIncluding": "3.13",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "7.2.4",
"versionStartIncluding": "3.13",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "7.3",
"versionStartIncluding": "3.13",
"vulnerable": true
}
],
"negate": false,
"operator": "OR"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "In the Linux kernel, the following vulnerability has been resolved:\n\nSUNRPC: Reject krb5 v2 wrap tokens with oversized ec field\n\ngss_krb5_unwrap_v2() sets buf-\u003elen to a logical\nlength, which can be much smaller than head[0].iov_len\n(the allocated receive-page capacity). It then calls\nxdr_buf_trim() with a trim length derived from the 16-bit\n\"extra count\" (ec) field in the Kerberos v2 token header.\n\nThe ec field is authenticated by the post-decrypt memcmp()\nagainst the encrypted header copy, so a randomly-mutated\nvalue is rejected. However, any peer holding a valid GSS\ncontext can legitimately encrypt a token whose ec exceeds\nthe plaintext length. Per RFC 4121, such a token is\nstructurally malformed.\n\nAlthough xdr_buf_trim() now clamps the buf-\u003elen subtraction\nto avoid unsigned underflow, the buffer is still left in a\nsemantically invalid state (zero length, inconsistent iov\nlengths) when ec is oversized.\n\nReject these tokens before calling xdr_buf_trim(), giving\ncallers a well-defined GSS_S_DEFECTIVE_TOKEN error and\nkeeping the xdr_buf internally consistent. The wrapped blob\nbegins at a nonzero offset -- both callers pass len as\noffset + opaque_len -- so buf-\u003elen still counts the offset\nbytes that precede the blob. Compare the trim length\nagainst the remaining wrapped segment, buf-\u003elen - offset,\nrather than the whole buffer; comparing against buf-\u003elen\nalone leaves an offset-wide window in which an oversized ec\npasses the test and xdr_buf_trim() cuts into the bytes ahead\nof the blob."
}
],
"metrics": [
{
"cvssV3_1": {
"baseScore": 9.8,
"baseSeverity": "CRITICAL",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
"version": "3.1"
},
"scenarios": [
{
"lang": "en",
"value": "AV:N - gss_krb5_unwrap_v2() is reached from nfsd RPCSEC_GSS privacy unwrap on TCP/2049 and from the NFS client\u0027s gss_unwrap_resp_priv() on every krb5p reply, so a remote NFS peer delivers the oversized-ec wrap token over the network.\nAC:L - A peer holding the GSS session keys can encrypt a RFC 4121 wrap token whose authenticated ec exceeds the plaintext; decrypt and the header memcmp succeed, then xdr_buf_trim() runs with that chosen length and no race or layout outside attacker control.\nPR:N - A malicious or compromised NFS server that already shares a krb5p GSS context needs no account or capability on the victim client; ordinary krb5p replies and NFSv4.0 GSS callbacks are processed without local privileges on that host.\nUI:N - Once a krb5p NFS mount exists, the client unwraps every privacy-protected reply and NFSv4.0 GSS callback with no further mount, click, or open; idle revalidations and server-driven callbacks are sufficient.\nS:U - The corrupted xdr_buf and subsequent XDR decode and shift run in the host kernel that processed the RPC and do not cross a VM, IOMMU, or sandbox boundary.\nC:H - An oversized ec makes xdr_buf_trim() underflow buf-\u003elen toward UINT_MAX, so later xdr_read_pages/xdr_shrink_bufhead use that length as a copy bound and read far past the receive buffer into adjacent kernel memory.\nI:H - xdr_shrink_bufhead() then calls xdr_buf_head_shift_right() with a near-UINT_MAX length derived from the wrapped buf-\u003elen, an out-of-bounds write into kernel memory that can be used for control-flow hijacking.\nA:H - Those unbounded XDR copies and the inconsistent xdr_buf (wrapped or zero length versus iov_lens) oops or panic nfsd or the NFS client, and the peer can repeat the request at will."
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-10-19T08:48:29.976Z",
"orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"shortName": "Linux"
},
"references": [
{
"url": "https://git.kernel.org/stable/c/ac9efc29346b6942e71f0e24a3178a9121330fab"
},
{
"url": "https://git.kernel.org/stable/c/b5746095b59f4d11f39f08751d36bbdfd1e5deac"
},
{
"url": "https://git.kernel.org/stable/c/9fc6d6e6db49ab55208d5dd1c424c1d0d9aa7296"
},
{
"url": "https://git.kernel.org/stable/c/4abb44a29bb515df6f49123848765c70fc9b5021"
},
{
"url": "https://git.kernel.org/stable/c/dfcd81ab45613d45996fbf483d4ef54b0ec90ab9"
},
{
"url": "https://git.kernel.org/stable/c/1f9856af065b6158271687e9788407b9573fd16f"
},
{
"url": "https://git.kernel.org/stable/c/880effc943ed82d6811f272ed3307c222b40f4d6"
},
{
"url": "https://git.kernel.org/stable/c/ad484748eec0a66eac0f13ab53b3fbedb7333c91"
}
],
"title": "SUNRPC: Reject krb5 v2 wrap tokens with oversized ec field",
"x_generator": {
"engine": "bippy-1.2.0"
}
}
},
"cveMetadata": {
"assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"assignerShortName": "Linux",
"cveId": "CVE-2026-89538",
"datePublished": "2026-09-11T19:44:15.953Z",
"dateReserved": "2026-09-11T19:38:34.721Z",
"dateUpdated": "2026-10-19T08:48:29.976Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2",
"vulnerability-lookup:meta": {
"epss": {
"cve": "CVE-2026-89538",
"date": "2026-11-01",
"epss": "0.00714",
"percentile": "0.53692"
},
"microsoft_vex": {
"current_release_date": "2026-09-25T01:47:13.000Z",
"cve": "CVE-2026-89538",
"id": "msrc_CVE-2026-89538",
"initial_release_date": "2026-09-13T01:01:29.000Z",
"product_status:fixed": "1",
"product_status:known_affected": "2",
"source": "Microsoft CSAF VEX",
"status": "final",
"title": "SUNRPC: Reject krb5 v2 wrap tokens with oversized ec field",
"url": "https://msrc.microsoft.com/csaf/vex/2026/msrc_cve-2026-89538.json",
"version": "5"
},
"nvd": {
"cve": {
"affected": [
{
"affectedData": [
{
"defaultStatus": "unaffected",
"product": "Linux",
"programFiles": [
"net/sunrpc/auth_gss/gss_krb5_wrap.c"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"versions": [
{
"lessThan": "ac9efc29346b6942e71f0e24a3178a9121330fab",
"status": "affected",
"version": "cf4c024b908353fcc48309374d39e3399d67dfd1",
"versionType": "git"
},
{
"lessThan": "b5746095b59f4d11f39f08751d36bbdfd1e5deac",
"status": "affected",
"version": "cf4c024b908353fcc48309374d39e3399d67dfd1",
"versionType": "git"
},
{
"lessThan": "9fc6d6e6db49ab55208d5dd1c424c1d0d9aa7296",
"status": "affected",
"version": "cf4c024b908353fcc48309374d39e3399d67dfd1",
"versionType": "git"
},
{
"lessThan": "4abb44a29bb515df6f49123848765c70fc9b5021",
"status": "affected",
"version": "cf4c024b908353fcc48309374d39e3399d67dfd1",
"versionType": "git"
},
{
"lessThan": "dfcd81ab45613d45996fbf483d4ef54b0ec90ab9",
"status": "affected",
"version": "cf4c024b908353fcc48309374d39e3399d67dfd1",
"versionType": "git"
},
{
"lessThan": "1f9856af065b6158271687e9788407b9573fd16f",
"status": "affected",
"version": "cf4c024b908353fcc48309374d39e3399d67dfd1",
"versionType": "git"
},
{
"lessThan": "880effc943ed82d6811f272ed3307c222b40f4d6",
"status": "affected",
"version": "cf4c024b908353fcc48309374d39e3399d67dfd1",
"versionType": "git"
},
{
"lessThan": "ad484748eec0a66eac0f13ab53b3fbedb7333c91",
"status": "affected",
"version": "cf4c024b908353fcc48309374d39e3399d67dfd1",
"versionType": "git"
}
]
},
{
"defaultStatus": "affected",
"product": "Linux",
"programFiles": [
"net/sunrpc/auth_gss/gss_krb5_wrap.c"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"versions": [
{
"status": "affected",
"version": "3.13"
},
{
"lessThan": "3.13",
"status": "unaffected",
"version": "0",
"versionType": "semver"
},
{
"lessThanOrEqual": "5.10.*",
"status": "unaffected",
"version": "5.10.270",
"versionType": "semver"
},
{
"lessThanOrEqual": "5.15.*",
"status": "unaffected",
"version": "5.15.221",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.1.*",
"status": "unaffected",
"version": "6.1.188",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.6.*",
"status": "unaffected",
"version": "6.6.157",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.12.*",
"status": "unaffected",
"version": "6.12.109",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.18.*",
"status": "unaffected",
"version": "6.18.50",
"versionType": "semver"
},
{
"lessThanOrEqual": "7.2.*",
"status": "unaffected",
"version": "7.2.4",
"versionType": "semver"
},
{
"lessThanOrEqual": "*",
"status": "unaffected",
"version": "7.3",
"versionType": "original_commit_for_fix"
}
]
}
],
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
}
],
"cveTags": [],
"descriptions": [
{
"lang": "en",
"value": "In the Linux kernel, the following vulnerability has been resolved:\n\nSUNRPC: Reject krb5 v2 wrap tokens with oversized ec field\n\ngss_krb5_unwrap_v2() sets buf-\u003elen to a logical\nlength, which can be much smaller than head[0].iov_len\n(the allocated receive-page capacity). It then calls\nxdr_buf_trim() with a trim length derived from the 16-bit\n\"extra count\" (ec) field in the Kerberos v2 token header.\n\nThe ec field is authenticated by the post-decrypt memcmp()\nagainst the encrypted header copy, so a randomly-mutated\nvalue is rejected. However, any peer holding a valid GSS\ncontext can legitimately encrypt a token whose ec exceeds\nthe plaintext length. Per RFC 4121, such a token is\nstructurally malformed.\n\nAlthough xdr_buf_trim() now clamps the buf-\u003elen subtraction\nto avoid unsigned underflow, the buffer is still left in a\nsemantically invalid state (zero length, inconsistent iov\nlengths) when ec is oversized.\n\nReject these tokens before calling xdr_buf_trim(), giving\ncallers a well-defined GSS_S_DEFECTIVE_TOKEN error and\nkeeping the xdr_buf internally consistent. The wrapped blob\nbegins at a nonzero offset -- both callers pass len as\noffset + opaque_len -- so buf-\u003elen still counts the offset\nbytes that precede the blob. Compare the trim length\nagainst the remaining wrapped segment, buf-\u003elen - offset,\nrather than the whole buffer; comparing against buf-\u003elen\nalone leaves an offset-wide window in which an oversized ec\npasses the test and xdr_buf_trim() cuts into the bytes ahead\nof the blob."
}
],
"id": "CVE-2026-89538",
"lastModified": "2026-10-19T09:17:48.573",
"metrics": {
"cvssMetricV31": [
{
"cvssData": {
"attackComplexity": "LOW",
"attackVector": "NETWORK",
"availabilityImpact": "HIGH",
"baseScore": 9.8,
"baseSeverity": "CRITICAL",
"confidentialityImpact": "HIGH",
"integrityImpact": "HIGH",
"privilegesRequired": "NONE",
"scope": "UNCHANGED",
"userInteraction": "NONE",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
"version": "3.1"
},
"exploitabilityScore": 3.9,
"impactScore": 5.9,
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"type": "Secondary"
}
],
"ssvcV203": [
{
"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"ssvcData": {
"id": "CVE-2026-89538",
"options": [
{
"exploitation": "none"
},
{
"automatable": "yes"
},
{
"technicalImpact": "total"
}
],
"role": "CISA Coordinator",
"timestamp": "2026-10-16T19:23:19.852732Z",
"version": "2.0.3"
}
}
]
},
"published": "2026-09-11T20:19:36.850",
"references": [
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"url": "https://git.kernel.org/stable/c/1f9856af065b6158271687e9788407b9573fd16f"
},
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"url": "https://git.kernel.org/stable/c/4abb44a29bb515df6f49123848765c70fc9b5021"
},
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"url": "https://git.kernel.org/stable/c/880effc943ed82d6811f272ed3307c222b40f4d6"
},
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"url": "https://git.kernel.org/stable/c/9fc6d6e6db49ab55208d5dd1c424c1d0d9aa7296"
},
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"url": "https://git.kernel.org/stable/c/ac9efc29346b6942e71f0e24a3178a9121330fab"
},
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"url": "https://git.kernel.org/stable/c/ad484748eec0a66eac0f13ab53b3fbedb7333c91"
},
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"url": "https://git.kernel.org/stable/c/b5746095b59f4d11f39f08751d36bbdfd1e5deac"
},
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"url": "https://git.kernel.org/stable/c/dfcd81ab45613d45996fbf483d4ef54b0ec90ab9"
}
],
"sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"vulnStatus": "Received"
}
},
"redhat_vex": {
"aggregate_severity": "Moderate",
"current_release_date": "2026-10-22T03:12:28+00:00",
"cve": "CVE-2026-89538",
"id": "CVE-2026-89538",
"initial_release_date": "2026-09-11T00:00:00+00:00",
"product_status:known_affected": "278",
"source": "Red Hat CSAF VEX",
"status": "final",
"title": "kernel: SUNRPC: Reject krb5 v2 wrap tokens with oversized ec field",
"url": "https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-89538.json",
"version": "3"
},
"vulnrichment": {
"containers": {
"adp": [
{
"metrics": [
{
"other": {
"content": {
"id": "CVE-2026-89538",
"options": [
{
"Exploitation": "none"
},
{
"Automatable": "yes"
},
{
"Technical Impact": "total"
}
],
"role": "CISA Coordinator",
"timestamp": "2026-10-16T19:23:19.852732Z",
"version": "2.0.3"
},
"type": "ssvc"
}
}
],
"providerMetadata": {
"dateUpdated": "2026-10-16T19:23:20.771Z",
"orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"shortName": "CISA-ADP"
},
"title": "CISA ADP Vulnrichment"
}
],
"cna": {
"affected": [
{
"defaultStatus": "unaffected",
"product": "Linux",
"programFiles": [
"net/sunrpc/auth_gss/gss_krb5_wrap.c"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"versions": [
{
"lessThan": "ac9efc29346b6942e71f0e24a3178a9121330fab",
"status": "affected",
"version": "cf4c024b908353fcc48309374d39e3399d67dfd1",
"versionType": "git"
},
{
"lessThan": "b5746095b59f4d11f39f08751d36bbdfd1e5deac",
"status": "affected",
"version": "cf4c024b908353fcc48309374d39e3399d67dfd1",
"versionType": "git"
},
{
"lessThan": "9fc6d6e6db49ab55208d5dd1c424c1d0d9aa7296",
"status": "affected",
"version": "cf4c024b908353fcc48309374d39e3399d67dfd1",
"versionType": "git"
},
{
"lessThan": "4abb44a29bb515df6f49123848765c70fc9b5021",
"status": "affected",
"version": "cf4c024b908353fcc48309374d39e3399d67dfd1",
"versionType": "git"
},
{
"lessThan": "dfcd81ab45613d45996fbf483d4ef54b0ec90ab9",
"status": "affected",
"version": "cf4c024b908353fcc48309374d39e3399d67dfd1",
"versionType": "git"
},
{
"lessThan": "1f9856af065b6158271687e9788407b9573fd16f",
"status": "affected",
"version": "cf4c024b908353fcc48309374d39e3399d67dfd1",
"versionType": "git"
},
{
"lessThan": "880effc943ed82d6811f272ed3307c222b40f4d6",
"status": "affected",
"version": "cf4c024b908353fcc48309374d39e3399d67dfd1",
"versionType": "git"
},
{
"lessThan": "ad484748eec0a66eac0f13ab53b3fbedb7333c91",
"status": "affected",
"version": "cf4c024b908353fcc48309374d39e3399d67dfd1",
"versionType": "git"
}
]
},
{
"defaultStatus": "affected",
"product": "Linux",
"programFiles": [
"net/sunrpc/auth_gss/gss_krb5_wrap.c"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"versions": [
{
"status": "affected",
"version": "3.13"
},
{
"lessThan": "3.13",
"status": "unaffected",
"version": "0",
"versionType": "semver"
},
{
"lessThanOrEqual": "5.10.*",
"status": "unaffected",
"version": "5.10.270",
"versionType": "semver"
},
{
"lessThanOrEqual": "5.15.*",
"status": "unaffected",
"version": "5.15.221",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.1.*",
"status": "unaffected",
"version": "6.1.188",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.6.*",
"status": "unaffected",
"version": "6.6.157",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.12.*",
"status": "unaffected",
"version": "6.12.109",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.18.*",
"status": "unaffected",
"version": "6.18.50",
"versionType": "semver"
},
{
"lessThanOrEqual": "7.2.*",
"status": "unaffected",
"version": "7.2.4",
"versionType": "semver"
},
{
"lessThanOrEqual": "*",
"status": "unaffected",
"version": "7.3",
"versionType": "original_commit_for_fix"
}
]
}
],
"cpeApplicability": [
{
"nodes": [
{
"cpeMatch": [
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "5.10.270",
"versionStartIncluding": "3.13",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "5.15.221",
"versionStartIncluding": "3.13",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "6.1.188",
"versionStartIncluding": "3.13",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "6.6.157",
"versionStartIncluding": "3.13",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "6.12.109",
"versionStartIncluding": "3.13",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "6.18.50",
"versionStartIncluding": "3.13",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "7.2.4",
"versionStartIncluding": "3.13",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "7.3",
"versionStartIncluding": "3.13",
"vulnerable": true
}
],
"negate": false,
"operator": "OR"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "In the Linux kernel, the following vulnerability has been resolved:\n\nSUNRPC: Reject krb5 v2 wrap tokens with oversized ec field\n\ngss_krb5_unwrap_v2() sets buf-\u003elen to a logical\nlength, which can be much smaller than head[0].iov_len\n(the allocated receive-page capacity). It then calls\nxdr_buf_trim() with a trim length derived from the 16-bit\n\"extra count\" (ec) field in the Kerberos v2 token header.\n\nThe ec field is authenticated by the post-decrypt memcmp()\nagainst the encrypted header copy, so a randomly-mutated\nvalue is rejected. However, any peer holding a valid GSS\ncontext can legitimately encrypt a token whose ec exceeds\nthe plaintext length. Per RFC 4121, such a token is\nstructurally malformed.\n\nAlthough xdr_buf_trim() now clamps the buf-\u003elen subtraction\nto avoid unsigned underflow, the buffer is still left in a\nsemantically invalid state (zero length, inconsistent iov\nlengths) when ec is oversized.\n\nReject these tokens before calling xdr_buf_trim(), giving\ncallers a well-defined GSS_S_DEFECTIVE_TOKEN error and\nkeeping the xdr_buf internally consistent. The wrapped blob\nbegins at a nonzero offset -- both callers pass len as\noffset + opaque_len -- so buf-\u003elen still counts the offset\nbytes that precede the blob. Compare the trim length\nagainst the remaining wrapped segment, buf-\u003elen - offset,\nrather than the whole buffer; comparing against buf-\u003elen\nalone leaves an offset-wide window in which an oversized ec\npasses the test and xdr_buf_trim() cuts into the bytes ahead\nof the blob."
}
],
"metrics": [
{
"cvssV3_1": {
"baseScore": 9.8,
"baseSeverity": "CRITICAL",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
"version": "3.1"
},
"scenarios": [
{
"lang": "en",
"value": "AV:N - gss_krb5_unwrap_v2() is reached from nfsd RPCSEC_GSS privacy unwrap on TCP/2049 and from the NFS client\u0027s gss_unwrap_resp_priv() on every krb5p reply, so a remote NFS peer delivers the oversized-ec wrap token over the network.\nAC:L - A peer holding the GSS session keys can encrypt a RFC 4121 wrap token whose authenticated ec exceeds the plaintext; decrypt and the header memcmp succeed, then xdr_buf_trim() runs with that chosen length and no race or layout outside attacker control.\nPR:N - A malicious or compromised NFS server that already shares a krb5p GSS context needs no account or capability on the victim client; ordinary krb5p replies and NFSv4.0 GSS callbacks are processed without local privileges on that host.\nUI:N - Once a krb5p NFS mount exists, the client unwraps every privacy-protected reply and NFSv4.0 GSS callback with no further mount, click, or open; idle revalidations and server-driven callbacks are sufficient.\nS:U - The corrupted xdr_buf and subsequent XDR decode and shift run in the host kernel that processed the RPC and do not cross a VM, IOMMU, or sandbox boundary.\nC:H - An oversized ec makes xdr_buf_trim() underflow buf-\u003elen toward UINT_MAX, so later xdr_read_pages/xdr_shrink_bufhead use that length as a copy bound and read far past the receive buffer into adjacent kernel memory.\nI:H - xdr_shrink_bufhead() then calls xdr_buf_head_shift_right() with a near-UINT_MAX length derived from the wrapped buf-\u003elen, an out-of-bounds write into kernel memory that can be used for control-flow hijacking.\nA:H - Those unbounded XDR copies and the inconsistent xdr_buf (wrapped or zero length versus iov_lens) oops or panic nfsd or the NFS client, and the peer can repeat the request at will."
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-10-19T08:48:29.976Z",
"orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"shortName": "Linux"
},
"references": [
{
"url": "https://git.kernel.org/stable/c/ac9efc29346b6942e71f0e24a3178a9121330fab"
},
{
"url": "https://git.kernel.org/stable/c/b5746095b59f4d11f39f08751d36bbdfd1e5deac"
},
{
"url": "https://git.kernel.org/stable/c/9fc6d6e6db49ab55208d5dd1c424c1d0d9aa7296"
},
{
"url": "https://git.kernel.org/stable/c/4abb44a29bb515df6f49123848765c70fc9b5021"
},
{
"url": "https://git.kernel.org/stable/c/dfcd81ab45613d45996fbf483d4ef54b0ec90ab9"
},
{
"url": "https://git.kernel.org/stable/c/1f9856af065b6158271687e9788407b9573fd16f"
},
{
"url": "https://git.kernel.org/stable/c/880effc943ed82d6811f272ed3307c222b40f4d6"
},
{
"url": "https://git.kernel.org/stable/c/ad484748eec0a66eac0f13ab53b3fbedb7333c91"
}
],
"title": "SUNRPC: Reject krb5 v2 wrap tokens with oversized ec field",
"x_generator": {
"engine": "bippy-1.2.0"
}
}
},
"cveMetadata": {
"assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"assignerShortName": "Linux",
"cveId": "CVE-2026-89538",
"datePublished": "2026-09-11T19:44:15.953Z",
"dateReserved": "2026-09-11T19:38:34.721Z",
"dateUpdated": "2026-10-19T08:48:29.976Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
}
}
Loading…
Loading…
Drag nodes to arrange them. Double-click a related vulnerability to open it, or a source to visit its link. The Physics button on the left tunes the layout and the simulation; the legend at the bottom left hides or shows nodes by kind and by sighting type.
Experimental. This forecast is provided for visualization only and may change without notice. Do not use it for operational decisions.
Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.
Sightings
| Author | Source | Type | Date | Other |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or observed by the user.
- Confirmed: The vulnerability has been validated from an analyst's perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
- Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
- Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
- Not confirmed: The user expressed doubt about the validity of the vulnerability.
- Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.
Vulnerability timeline
Sightings and recorded dates, grouped by day · UTC
Loading timeline…
Loading…
Loading…
The MITRE ATT&CK techniques below are AI-generated suggestions, inferred from the description of the
vulnerability by the CIRCL/vulnerability-attack-technique-classification-roberta-base
model, served locally by ML-Gateway.
They have not been verified by an analyst and are provided for guidance only.
The approach is described in our paper Mapping CVEs to MITRE ATT&CK Techniques: A Curated Gold-Set Classifier and the Limits of LLM-Assisted Label Expansion.
Browse all ATT&CK techniques and the vulnerabilities related to each.
The approach is described in our paper Mapping CVEs to MITRE ATT&CK Techniques: A Curated Gold-Set Classifier and the Limits of LLM-Assisted Label Expansion.
Browse all ATT&CK techniques and the vulnerabilities related to each.
Loading…
Related by attack behaviour
Vulnerabilities whose description is nearest to this one in the vector space of the CIRCL/vulnerability-attack-technique-biencoder model. This is a similarity search over the bi-encoder space (plain cosine), not a classification, and it has no measured accuracy.