CVE-2026-98169 (GCVE-0-2026-98169)
Vulnerability from cvelistv5 – Published: 2026-10-06 08:44 – Updated: 2026-10-07 06:49
VLAI
EPSS
VEX
Title
smb: client: fix potential OOB read in smb3_enum_snapshots()
Summary
In the Linux kernel, the following vulnerability has been resolved:
smb: client: fix potential OOB read in smb3_enum_snapshots()
If snapshot_array_size is smaller than GMT_TOKEN_SIZE,
smb3_enum_snapshots() sets ret_data_len to
sizeof(struct smb_snapshot_array) without verifying the actual length
of the server's reply.
Because SMB2_ioctl() places no lower bound on the server-supplied
OutputCount and allocates retbuf to exactly that length, a short reply
results in ret_data_len exceeding the size of retbuf. The subsequent
copy_to_user() then reads past the end of retbuf, leaking adjacent slab
memory to userspace. The subsequent clamp check is ineffective as it
only reduces ret_data_len.
Fix this by rejecting replies shorter than
sizeof(struct smb_snapshot_array) with -EIO. Note that the bound is set
to the 12-byte struct size rather than the 16-byte
MIN_SNAPSHOT_ARRAY_SIZE defined in MS-SMB2 3.3.5.15.1, because 12 bytes
is exactly what copy_to_user() attempts to read.
Severity
7.1 (High)
Assigner
References
6 references
Impacted products
2 products
| Vendor | Product | Version | CPE status | |
|---|---|---|---|---|
| Linux | Linux |
Affected:
e02789a53d71334b067ad72eee5d4e88a0158083 , < 15a221c734b9d044ab769e7e3606b2cab96fb65a
(git)
Affected: e02789a53d71334b067ad72eee5d4e88a0158083 , < 74995ee8305a7c4d76ee70d6acd996a75eda3c03 (git) Affected: e02789a53d71334b067ad72eee5d4e88a0158083 , < 210f0f1f67817e7d2348b86b5115a9b85ef5c98b (git) Affected: e02789a53d71334b067ad72eee5d4e88a0158083 , < 1cdf0d304d820fb13bf0faf532c3459600f9ea43 (git) Affected: e02789a53d71334b067ad72eee5d4e88a0158083 , < dbe452a905dfe2804647530a9ff3d7e3826ed04d (git) Affected: e02789a53d71334b067ad72eee5d4e88a0158083 , < 4775c3b7a597907e0b97556c7986fda238a377ae (git) Affected: a94703ff8e3647f8a9a3a92a468450299a7b77e9 (git) Affected: 82a856f527334ffd69aae26e7dd9e03b19c4a520 (git) Affected: 25b981bfe192fd208ba04c81f4aa30ffb5141660 (git) Affected: 4.9.125 , < 4.10 (semver) Affected: 4.14.68 , < 4.15 (semver) Affected: 4.18.6 , < 4.19 (semver) |
guessed | |
| Linux | Linux |
Affected:
4.19
Unaffected: 0 , < 4.19 (semver) Unaffected: 6.1.189 , ≤ 6.1.* (semver) Unaffected: 6.6.158 , ≤ 6.6.* (semver) Unaffected: 6.12.112 , ≤ 6.12.* (semver) Unaffected: 6.18.54 , ≤ 6.18.* (semver) Unaffected: 7.2.8 , ≤ 7.2.* (semver) Unaffected: 7.3-rc4 , ≤ * (original_commit_for_fix) |
guessed |
{
"containers": {
"cna": {
"affected": [
{
"defaultStatus": "unaffected",
"product": "Linux",
"programFiles": [
"fs/smb/client/smb2ops.c"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"versions": [
{
"lessThan": "15a221c734b9d044ab769e7e3606b2cab96fb65a",
"status": "affected",
"version": "e02789a53d71334b067ad72eee5d4e88a0158083",
"versionType": "git"
},
{
"lessThan": "74995ee8305a7c4d76ee70d6acd996a75eda3c03",
"status": "affected",
"version": "e02789a53d71334b067ad72eee5d4e88a0158083",
"versionType": "git"
},
{
"lessThan": "210f0f1f67817e7d2348b86b5115a9b85ef5c98b",
"status": "affected",
"version": "e02789a53d71334b067ad72eee5d4e88a0158083",
"versionType": "git"
},
{
"lessThan": "1cdf0d304d820fb13bf0faf532c3459600f9ea43",
"status": "affected",
"version": "e02789a53d71334b067ad72eee5d4e88a0158083",
"versionType": "git"
},
{
"lessThan": "dbe452a905dfe2804647530a9ff3d7e3826ed04d",
"status": "affected",
"version": "e02789a53d71334b067ad72eee5d4e88a0158083",
"versionType": "git"
},
{
"lessThan": "4775c3b7a597907e0b97556c7986fda238a377ae",
"status": "affected",
"version": "e02789a53d71334b067ad72eee5d4e88a0158083",
"versionType": "git"
},
{
"status": "affected",
"version": "a94703ff8e3647f8a9a3a92a468450299a7b77e9",
"versionType": "git"
},
{
"status": "affected",
"version": "82a856f527334ffd69aae26e7dd9e03b19c4a520",
"versionType": "git"
},
{
"status": "affected",
"version": "25b981bfe192fd208ba04c81f4aa30ffb5141660",
"versionType": "git"
},
{
"lessThan": "4.10",
"status": "affected",
"version": "4.9.125",
"versionType": "semver"
},
{
"lessThan": "4.15",
"status": "affected",
"version": "4.14.68",
"versionType": "semver"
},
{
"lessThan": "4.19",
"status": "affected",
"version": "4.18.6",
"versionType": "semver"
}
]
},
{
"defaultStatus": "affected",
"product": "Linux",
"programFiles": [
"fs/smb/client/smb2ops.c"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"versions": [
{
"status": "affected",
"version": "4.19"
},
{
"lessThan": "4.19",
"status": "unaffected",
"version": "0",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.1.*",
"status": "unaffected",
"version": "6.1.189",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.6.*",
"status": "unaffected",
"version": "6.6.158",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.12.*",
"status": "unaffected",
"version": "6.12.112",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.18.*",
"status": "unaffected",
"version": "6.18.54",
"versionType": "semver"
},
{
"lessThanOrEqual": "7.2.*",
"status": "unaffected",
"version": "7.2.8",
"versionType": "semver"
},
{
"lessThanOrEqual": "*",
"status": "unaffected",
"version": "7.3-rc4",
"versionType": "original_commit_for_fix"
}
]
}
],
"cpeApplicability": [
{
"nodes": [
{
"cpeMatch": [
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "6.1.189",
"versionStartIncluding": "4.19",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "6.6.158",
"versionStartIncluding": "4.19",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "6.12.112",
"versionStartIncluding": "4.19",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "6.18.54",
"versionStartIncluding": "4.19",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "7.2.8",
"versionStartIncluding": "4.19",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "7.3-rc4",
"versionStartIncluding": "4.19",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "4.9.125",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "4.14.68",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "4.18.6",
"vulnerable": true
}
],
"negate": false,
"operator": "OR"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "In the Linux kernel, the following vulnerability has been resolved:\n\nsmb: client: fix potential OOB read in smb3_enum_snapshots()\n\nIf snapshot_array_size is smaller than GMT_TOKEN_SIZE,\nsmb3_enum_snapshots() sets ret_data_len to\nsizeof(struct smb_snapshot_array) without verifying the actual length\nof the server\u0027s reply.\n\nBecause SMB2_ioctl() places no lower bound on the server-supplied\nOutputCount and allocates retbuf to exactly that length, a short reply\nresults in ret_data_len exceeding the size of retbuf. The subsequent\ncopy_to_user() then reads past the end of retbuf, leaking adjacent slab\nmemory to userspace. The subsequent clamp check is ineffective as it\nonly reduces ret_data_len.\n\nFix this by rejecting replies shorter than\nsizeof(struct smb_snapshot_array) with -EIO. Note that the bound is set\nto the 12-byte struct size rather than the 16-byte\nMIN_SNAPSHOT_ARRAY_SIZE defined in MS-SMB2 3.3.5.15.1, because 12 bytes\nis exactly what copy_to_user() attempts to read."
}
],
"metrics": [
{
"cvssV3_1": {
"baseScore": 7.1,
"baseSeverity": "HIGH",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:N/A:H",
"version": "3.1"
},
"scenarios": [
{
"lang": "en",
"value": "AV:N - The bad input is the OutputCount field of the SMB2 IOCTL response to FSCTL_SRV_ENUMERATE_SNAPSHOTS, sent by the SMB server over TCP. SMB2_ioctl() rejects only 0 or oversized values and kmemdup()s 1-11 bytes, and smb3_enum_snapshots() then copies 12 bytes from that buffer.\nAC:L - A server that always answers the snapshot FSCTL with OutputCount 1-11 hits the bug every time a caller passes snapshot_array_size \u003c GMT_TOKEN_SIZE, which is the normal first sizing query. No race or memory layout outside the server\u0027s control is needed.\nPR:N - The attacker is the SMB server answering the client\u0027s request. It needs no account or privilege on the client to send a short IOCTL response.\nUI:R - A victim has to mount the attacker\u0027s share, and a process on the client has to issue ioctl(CIFS_ENUMERATE_SNAPSHOTS) on a file there to make smb3_enum_snapshots() run.\nS:U - The out-of-bounds read and the crash both stay inside the client kernel. No VM, IOMMU or other security boundary is crossed.\nC:L - copy_to_user() reads at most 11 bytes past the kmemdup\u0027d retbuf, from the next kmalloc-8 object or the unused tail of a kmalloc-16 object. The leak is small and fixed in size, and it goes to the ioctl caller, not back over the wire.\nI:N - The defect is a read only: retbuf is copied out to user space, and no kernel memory is written out of bounds.\nA:H - With CONFIG_HARDENED_USERCOPY (common on distro and Android kernels), a 12-byte copy_to_user() from a kmalloc-8 retbuf (OutputCount 1-8) fails the heap object check. usercopy_abort() then calls BUG() and the kernel oopses, or panics if panic_on_oops is set. The server can trigger this on every enumeration."
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-10-07T06:49:19.327Z",
"orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"shortName": "Linux"
},
"references": [
{
"url": "https://git.kernel.org/stable/c/15a221c734b9d044ab769e7e3606b2cab96fb65a"
},
{
"url": "https://git.kernel.org/stable/c/74995ee8305a7c4d76ee70d6acd996a75eda3c03"
},
{
"url": "https://git.kernel.org/stable/c/210f0f1f67817e7d2348b86b5115a9b85ef5c98b"
},
{
"url": "https://git.kernel.org/stable/c/1cdf0d304d820fb13bf0faf532c3459600f9ea43"
},
{
"url": "https://git.kernel.org/stable/c/dbe452a905dfe2804647530a9ff3d7e3826ed04d"
},
{
"url": "https://git.kernel.org/stable/c/4775c3b7a597907e0b97556c7986fda238a377ae"
}
],
"title": "smb: client: fix potential OOB read in smb3_enum_snapshots()",
"x_generator": {
"engine": "bippy-1.2.0"
}
}
},
"cveMetadata": {
"assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"assignerShortName": "Linux",
"cveId": "CVE-2026-98169",
"datePublished": "2026-10-06T08:44:14.339Z",
"dateReserved": "2026-09-25T10:25:14.322Z",
"dateUpdated": "2026-10-07T06:49:19.327Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2",
"vulnerability-lookup:meta": {
"epss": {
"cve": "CVE-2026-98169",
"date": "2026-10-07",
"epss": "0.00432",
"percentile": "0.35507"
},
"nvd": {
"cve": {
"affected": [
{
"affectedData": [
{
"defaultStatus": "unaffected",
"product": "Linux",
"programFiles": [
"fs/smb/client/smb2ops.c"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"versions": [
{
"lessThan": "15a221c734b9d044ab769e7e3606b2cab96fb65a",
"status": "affected",
"version": "e02789a53d71334b067ad72eee5d4e88a0158083",
"versionType": "git"
},
{
"lessThan": "74995ee8305a7c4d76ee70d6acd996a75eda3c03",
"status": "affected",
"version": "e02789a53d71334b067ad72eee5d4e88a0158083",
"versionType": "git"
},
{
"lessThan": "210f0f1f67817e7d2348b86b5115a9b85ef5c98b",
"status": "affected",
"version": "e02789a53d71334b067ad72eee5d4e88a0158083",
"versionType": "git"
},
{
"lessThan": "1cdf0d304d820fb13bf0faf532c3459600f9ea43",
"status": "affected",
"version": "e02789a53d71334b067ad72eee5d4e88a0158083",
"versionType": "git"
},
{
"lessThan": "dbe452a905dfe2804647530a9ff3d7e3826ed04d",
"status": "affected",
"version": "e02789a53d71334b067ad72eee5d4e88a0158083",
"versionType": "git"
},
{
"lessThan": "4775c3b7a597907e0b97556c7986fda238a377ae",
"status": "affected",
"version": "e02789a53d71334b067ad72eee5d4e88a0158083",
"versionType": "git"
},
{
"status": "affected",
"version": "a94703ff8e3647f8a9a3a92a468450299a7b77e9",
"versionType": "git"
},
{
"status": "affected",
"version": "82a856f527334ffd69aae26e7dd9e03b19c4a520",
"versionType": "git"
},
{
"status": "affected",
"version": "25b981bfe192fd208ba04c81f4aa30ffb5141660",
"versionType": "git"
},
{
"lessThan": "4.10",
"status": "affected",
"version": "4.9.125",
"versionType": "semver"
},
{
"lessThan": "4.15",
"status": "affected",
"version": "4.14.68",
"versionType": "semver"
},
{
"lessThan": "4.19",
"status": "affected",
"version": "4.18.6",
"versionType": "semver"
}
]
},
{
"defaultStatus": "affected",
"product": "Linux",
"programFiles": [
"fs/smb/client/smb2ops.c"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"versions": [
{
"status": "affected",
"version": "4.19"
},
{
"lessThan": "4.19",
"status": "unaffected",
"version": "0",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.1.*",
"status": "unaffected",
"version": "6.1.189",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.6.*",
"status": "unaffected",
"version": "6.6.158",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.12.*",
"status": "unaffected",
"version": "6.12.112",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.18.*",
"status": "unaffected",
"version": "6.18.54",
"versionType": "semver"
},
{
"lessThanOrEqual": "7.2.*",
"status": "unaffected",
"version": "7.2.8",
"versionType": "semver"
},
{
"lessThanOrEqual": "*",
"status": "unaffected",
"version": "7.3-rc4",
"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\nsmb: client: fix potential OOB read in smb3_enum_snapshots()\n\nIf snapshot_array_size is smaller than GMT_TOKEN_SIZE,\nsmb3_enum_snapshots() sets ret_data_len to\nsizeof(struct smb_snapshot_array) without verifying the actual length\nof the server\u0027s reply.\n\nBecause SMB2_ioctl() places no lower bound on the server-supplied\nOutputCount and allocates retbuf to exactly that length, a short reply\nresults in ret_data_len exceeding the size of retbuf. The subsequent\ncopy_to_user() then reads past the end of retbuf, leaking adjacent slab\nmemory to userspace. The subsequent clamp check is ineffective as it\nonly reduces ret_data_len.\n\nFix this by rejecting replies shorter than\nsizeof(struct smb_snapshot_array) with -EIO. Note that the bound is set\nto the 12-byte struct size rather than the 16-byte\nMIN_SNAPSHOT_ARRAY_SIZE defined in MS-SMB2 3.3.5.15.1, because 12 bytes\nis exactly what copy_to_user() attempts to read."
}
],
"id": "CVE-2026-98169",
"lastModified": "2026-10-07T07:17:03.450",
"metrics": {
"cvssMetricV31": [
{
"cvssData": {
"attackComplexity": "LOW",
"attackVector": "NETWORK",
"availabilityImpact": "HIGH",
"baseScore": 7.1,
"baseSeverity": "HIGH",
"confidentialityImpact": "LOW",
"integrityImpact": "NONE",
"privilegesRequired": "NONE",
"scope": "UNCHANGED",
"userInteraction": "REQUIRED",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:N/A:H",
"version": "3.1"
},
"exploitabilityScore": 2.8,
"impactScore": 4.2,
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"type": "Secondary"
}
]
},
"published": "2026-10-06T09:17:58.480",
"references": [
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"url": "https://git.kernel.org/stable/c/15a221c734b9d044ab769e7e3606b2cab96fb65a"
},
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"url": "https://git.kernel.org/stable/c/1cdf0d304d820fb13bf0faf532c3459600f9ea43"
},
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"url": "https://git.kernel.org/stable/c/210f0f1f67817e7d2348b86b5115a9b85ef5c98b"
},
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"url": "https://git.kernel.org/stable/c/4775c3b7a597907e0b97556c7986fda238a377ae"
},
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"url": "https://git.kernel.org/stable/c/74995ee8305a7c4d76ee70d6acd996a75eda3c03"
},
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"url": "https://git.kernel.org/stable/c/dbe452a905dfe2804647530a9ff3d7e3826ed04d"
}
],
"sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"vulnStatus": "Received"
}
},
"redhat_vex": {
"aggregate_severity": "Moderate",
"current_release_date": "2026-10-07T07:19:06+00:00",
"cve": "CVE-2026-98169",
"id": "CVE-2026-98169",
"initial_release_date": "2026-10-06T00:00:00+00:00",
"product_status:known_affected": "235",
"product_status:known_not_affected": "42",
"source": "Red Hat CSAF VEX",
"status": "final",
"title": "kernel: smb: client: fix potential OOB read in smb3_enum_snapshots()",
"url": "https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-98169.json",
"version": "3"
},
"suse_vex": {
"aggregate_severity": "low",
"current_release_date": "2026-10-07T00:01:07Z",
"cve": "CVE-2026-98169",
"id": "CVE-2026-98169",
"initial_release_date": "2026-10-07T00:01:07Z",
"product_status:known_affected": "341",
"product_status:known_not_affected": "6",
"source": "SUSE CSAF VEX",
"status": "interim",
"title": "SUSE CVE CVE-2026-98169",
"url": "https://ftp.suse.com/pub/projects/security/csaf-vex/cve-2026-98169.json",
"version": "2"
}
}
}
Loading…
Loading…
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.
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.
Loading…