CVE-2026-80710 (GCVE-0-2026-80710)
Vulnerability from cvelistv5 – Published: 2026-08-28 06:53 – Updated: 2026-08-29 06:22
VLAI
EPSS
VEX
Title
s390/dasd: Fix undersized format-check buffer
Summary
In the Linux kernel, the following vulnerability has been resolved:
s390/dasd: Fix undersized format-check buffer
fmt_buffer_size in dasd_eckd_check_device_format() is declared as
int, even though one of the multiplicands, sizeof(struct eckd_count),
is a size_t. The expression
trkcount * rpt_max * sizeof(struct eckd_count)
is therefore correctly evaluated at 64-bit width, but the result is
silently truncated when it is stored back into the 32-bit
fmt_buffer_size variable. For a sufficiently large track range
(start_unit/stop_unit are caller-controlled) this truncation
yields a buffer size far smaller than the number of tracks actually
requested. kzalloc() then succeeds with an undersized allocation,
while the subsequent channel program build still operates on the
untruncated track count and writes past the end of that buffer.
Compute the buffer size with check_mul_overflow() and keep it in a
size_t, so that a value that no longer fits results in -EINVAL
instead of a silently truncated allocation size.
Severity
7.8 (High)
Assigner
References
Impacted products
2 products
| Vendor | Product | Version | CPE status | |
|---|---|---|---|---|
| Linux | Linux |
Affected:
8fd575200db5b53f6ea6818dd017f1b43190db12 , < aca18289c86f22d3fc2f3f6ff615286e7b1702f6
(git)
Affected: 8fd575200db5b53f6ea6818dd017f1b43190db12 , < 9f88dda2f22927d22498801a92cab6a9424eaf86 (git) Affected: 8fd575200db5b53f6ea6818dd017f1b43190db12 , < e16e0fc54120cee3c6f0362de95aab6792865857 (git) Affected: 8fd575200db5b53f6ea6818dd017f1b43190db12 , < 87f3389cd3920714c53e704778f7ca7f1cf0c39c (git) Affected: 8fd575200db5b53f6ea6818dd017f1b43190db12 , < 7f40b346462f563a0d6e841a77b5163d2a882a04 (git) |
guessed | |
| Linux | Linux |
Affected:
4.7
Unaffected: 0 , < 4.7 (semver) Unaffected: 6.6.151 , ≤ 6.6.* (semver) Unaffected: 6.12.103 , ≤ 6.12.* (semver) Unaffected: 6.18.44 , ≤ 6.18.* (semver) Unaffected: 7.1.8 , ≤ 7.1.* (semver) Unaffected: 7.2 , ≤ * (original_commit_for_fix) |
guessed |
{
"containers": {
"cna": {
"affected": [
{
"defaultStatus": "unaffected",
"product": "Linux",
"programFiles": [
"drivers/s390/block/dasd_eckd.c"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"versions": [
{
"lessThan": "aca18289c86f22d3fc2f3f6ff615286e7b1702f6",
"status": "affected",
"version": "8fd575200db5b53f6ea6818dd017f1b43190db12",
"versionType": "git"
},
{
"lessThan": "9f88dda2f22927d22498801a92cab6a9424eaf86",
"status": "affected",
"version": "8fd575200db5b53f6ea6818dd017f1b43190db12",
"versionType": "git"
},
{
"lessThan": "e16e0fc54120cee3c6f0362de95aab6792865857",
"status": "affected",
"version": "8fd575200db5b53f6ea6818dd017f1b43190db12",
"versionType": "git"
},
{
"lessThan": "87f3389cd3920714c53e704778f7ca7f1cf0c39c",
"status": "affected",
"version": "8fd575200db5b53f6ea6818dd017f1b43190db12",
"versionType": "git"
},
{
"lessThan": "7f40b346462f563a0d6e841a77b5163d2a882a04",
"status": "affected",
"version": "8fd575200db5b53f6ea6818dd017f1b43190db12",
"versionType": "git"
}
]
},
{
"defaultStatus": "affected",
"product": "Linux",
"programFiles": [
"drivers/s390/block/dasd_eckd.c"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"versions": [
{
"status": "affected",
"version": "4.7"
},
{
"lessThan": "4.7",
"status": "unaffected",
"version": "0",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.6.*",
"status": "unaffected",
"version": "6.6.151",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.12.*",
"status": "unaffected",
"version": "6.12.103",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.18.*",
"status": "unaffected",
"version": "6.18.44",
"versionType": "semver"
},
{
"lessThanOrEqual": "7.1.*",
"status": "unaffected",
"version": "7.1.8",
"versionType": "semver"
},
{
"lessThanOrEqual": "*",
"status": "unaffected",
"version": "7.2",
"versionType": "original_commit_for_fix"
}
]
}
],
"cpeApplicability": [
{
"nodes": [
{
"cpeMatch": [
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "6.6.151",
"versionStartIncluding": "4.7",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "6.12.103",
"versionStartIncluding": "4.7",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "6.18.44",
"versionStartIncluding": "4.7",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "7.1.8",
"versionStartIncluding": "4.7",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "7.2",
"versionStartIncluding": "4.7",
"vulnerable": true
}
],
"negate": false,
"operator": "OR"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "In the Linux kernel, the following vulnerability has been resolved:\n\ns390/dasd: Fix undersized format-check buffer\n\nfmt_buffer_size in dasd_eckd_check_device_format() is declared as\nint, even though one of the multiplicands, sizeof(struct eckd_count),\nis a size_t. The expression\n\n trkcount * rpt_max * sizeof(struct eckd_count)\n\nis therefore correctly evaluated at 64-bit width, but the result is\nsilently truncated when it is stored back into the 32-bit\nfmt_buffer_size variable. For a sufficiently large track range\n(start_unit/stop_unit are caller-controlled) this truncation\nyields a buffer size far smaller than the number of tracks actually\nrequested. kzalloc() then succeeds with an undersized allocation,\nwhile the subsequent channel program build still operates on the\nuntruncated track count and writes past the end of that buffer.\n\nCompute the buffer size with check_mul_overflow() and keep it in a\nsize_t, so that a value that no longer fits results in -EINVAL\ninstead of a silently truncated allocation size."
}
],
"metrics": [
{
"cvssV3_1": {
"baseScore": 7.8,
"baseSeverity": "HIGH",
"vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
"version": "3.1"
},
"scenarios": [
{
"lang": "en",
"value": "AV:L - The bug is reached only via the BIODASDCHECKFMT ioctl on an s390 DASD block device (/dev/dasd*), through blkdev_ioctl \u2192 dasd_ioctl \u2192 dasd_ioctl_check_format \u2192 dasd_eckd_check_device_format; it is not reachable over the network or by physical media insertion.\nAC:L - On large IBM Z/LinuxONE ECKD volumes (long_no_cyl geometry), an attacker who can open the device fully controls start_unit/stop_unit in the ioctl and can reliably force trkcount*rpt_max*sizeof(eckd_count) past 32 bits, causing undersized kzalloc while CCW/TCW channel programs still DMA-write the full track range.\nPR:L - Unlike BIODASDFMT, dasd_ioctl_check_format performs no CAP_SYS_ADMIN check; any local principal with permission to open the DASD block device (e.g., disk-group membership or equivalent device-node access) can issue BIODASDCHECKFMT without init-namespace root.\nUI:N - Exploitation requires only the attacker issuing the ioctl with crafted track-range parameters; no separate victim action such as mounting a filesystem or opening a file is needed.\nS:U - The heap corruption occurs entirely within the host kernel DASD driver on the same LPAR; it does not cross a VM, container, or IOMMU security boundary to affect a different authority.\nC:H - Hardware DMA via READ_COUNT CCWs/TCWs writes eckd_count structures past the kmalloc boundary, and dasd_eckd_format_evaluate_tracks then reads beyond the allocation; this out-of-bounds heap corruption can disclose adjacent kernel objects and support further memory-read primitives.\nI:H - Channel programs built in dasd_eckd_build_check/dasd_eckd_build_check_tcw DMA up to trkcount*rpt_max eight-byte eckd_count entries into an undersized GFP_KERNEL|GFP_DMA buffer, yielding a controllable kernel heap overflow writable for code-execution primitives.\nA:H - Corrupting kmalloc heap metadata and adjacent objects via large out-of-bounds DMA writes can trigger immediate kernel oops/panic or wedged I/O paths on mission-critical IBM Z storage nodes, satisfying high availability impact."
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-08-29T06:22:26.950Z",
"orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"shortName": "Linux"
},
"references": [
{
"url": "https://git.kernel.org/stable/c/aca18289c86f22d3fc2f3f6ff615286e7b1702f6"
},
{
"url": "https://git.kernel.org/stable/c/9f88dda2f22927d22498801a92cab6a9424eaf86"
},
{
"url": "https://git.kernel.org/stable/c/e16e0fc54120cee3c6f0362de95aab6792865857"
},
{
"url": "https://git.kernel.org/stable/c/87f3389cd3920714c53e704778f7ca7f1cf0c39c"
},
{
"url": "https://git.kernel.org/stable/c/7f40b346462f563a0d6e841a77b5163d2a882a04"
}
],
"title": "s390/dasd: Fix undersized format-check buffer",
"x_generator": {
"engine": "bippy-1.2.0"
}
}
},
"cveMetadata": {
"assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"assignerShortName": "Linux",
"cveId": "CVE-2026-80710",
"datePublished": "2026-08-28T06:53:10.028Z",
"dateReserved": "2026-08-26T14:34:25.787Z",
"dateUpdated": "2026-08-29T06:22:26.950Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2",
"vulnerability-lookup:meta": {
"epss": {
"cve": "CVE-2026-80710",
"date": "2026-08-28",
"epss": "0.00156",
"percentile": "0.05091"
},
"nvd": "{\"cve\":{\"id\":\"CVE-2026-80710\",\"sourceIdentifier\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"published\":\"2026-08-28T08:16:56.633\",\"lastModified\":\"2026-08-29T07:16:52.503\",\"vulnStatus\":\"Received\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"In the Linux kernel, the following vulnerability has been resolved:\\n\\ns390/dasd: Fix undersized format-check buffer\\n\\nfmt_buffer_size in dasd_eckd_check_device_format() is declared as\\nint, even though one of the multiplicands, sizeof(struct eckd_count),\\nis a size_t. The expression\\n\\n trkcount * rpt_max * sizeof(struct eckd_count)\\n\\nis therefore correctly evaluated at 64-bit width, but the result is\\nsilently truncated when it is stored back into the 32-bit\\nfmt_buffer_size variable. For a sufficiently large track range\\n(start_unit/stop_unit are caller-controlled) this truncation\\nyields a buffer size far smaller than the number of tracks actually\\nrequested. kzalloc() then succeeds with an undersized allocation,\\nwhile the subsequent channel program build still operates on the\\nuntruncated track count and writes past the end of that buffer.\\n\\nCompute the buffer size with check_mul_overflow() and keep it in a\\nsize_t, so that a value that no longer fits results in -EINVAL\\ninstead of a silently truncated allocation size.\"}],\"affected\":[{\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"affectedData\":[{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"unaffected\",\"programFiles\":[\"drivers/s390/block/dasd_eckd.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"8fd575200db5b53f6ea6818dd017f1b43190db12\",\"lessThan\":\"aca18289c86f22d3fc2f3f6ff615286e7b1702f6\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"8fd575200db5b53f6ea6818dd017f1b43190db12\",\"lessThan\":\"9f88dda2f22927d22498801a92cab6a9424eaf86\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"8fd575200db5b53f6ea6818dd017f1b43190db12\",\"lessThan\":\"e16e0fc54120cee3c6f0362de95aab6792865857\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"8fd575200db5b53f6ea6818dd017f1b43190db12\",\"lessThan\":\"87f3389cd3920714c53e704778f7ca7f1cf0c39c\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"8fd575200db5b53f6ea6818dd017f1b43190db12\",\"lessThan\":\"7f40b346462f563a0d6e841a77b5163d2a882a04\",\"versionType\":\"git\",\"status\":\"affected\"}]},{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"affected\",\"programFiles\":[\"drivers/s390/block/dasd_eckd.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"4.7\",\"status\":\"affected\"},{\"version\":\"0\",\"lessThan\":\"4.7\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.6.151\",\"lessThanOrEqual\":\"6.6.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.12.103\",\"lessThanOrEqual\":\"6.12.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.18.44\",\"lessThanOrEqual\":\"6.18.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"7.1.8\",\"lessThanOrEqual\":\"7.1.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"7.2\",\"lessThanOrEqual\":\"*\",\"versionType\":\"original_commit_for_fix\",\"status\":\"unaffected\"}]}]}],\"metrics\":{\"cvssMetricV31\":[{\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"type\":\"Secondary\",\"cvssData\":{\"version\":\"3.1\",\"vectorString\":\"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H\",\"baseScore\":7.8,\"baseSeverity\":\"HIGH\",\"attackVector\":\"LOCAL\",\"attackComplexity\":\"LOW\",\"privilegesRequired\":\"LOW\",\"userInteraction\":\"NONE\",\"scope\":\"UNCHANGED\",\"confidentialityImpact\":\"HIGH\",\"integrityImpact\":\"HIGH\",\"availabilityImpact\":\"HIGH\"},\"exploitabilityScore\":1.8,\"impactScore\":5.9}]},\"references\":[{\"url\":\"https://git.kernel.org/stable/c/7f40b346462f563a0d6e841a77b5163d2a882a04\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/87f3389cd3920714c53e704778f7ca7f1cf0c39c\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/9f88dda2f22927d22498801a92cab6a9424eaf86\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/aca18289c86f22d3fc2f3f6ff615286e7b1702f6\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/e16e0fc54120cee3c6f0362de95aab6792865857\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"}]}}"
}
}
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…
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.
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.
Loading…
Loading…