CVE-2026-80710 (GCVE-0-2026-80710)
Vulnerability from cvelistv5
Published
2026-08-28 06:53
Modified
2026-08-29 06:22
Severity ?
VLAI Severity ?
EPSS score ?
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.
References
Impacted products
{
"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"
}
Loading…
Loading…
Sightings
| Author | Source | Type | Date |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or seen somewhere by the user.
- Confirmed: The vulnerability is confirmed from an analyst perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: This vulnerability was exploited and seen by the user reporting the sighting.
- Patched: This vulnerability was successfully patched by the user reporting the sighting.
- Not exploited: This vulnerability was not exploited or seen by the user reporting the sighting.
- Not confirmed: The user expresses doubt about the veracity of the vulnerability.
- Not patched: This vulnerability was not successfully patched by the user reporting the sighting.
Loading…
Loading…