HIGH Introduced in 7.1
zcrypt CPRB Overflow
CVE-2026-80546
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
KernelScan AI7.7HIGH
01Description
In the Linux kernel, the following vulnerability has been resolved: s390/zcrypt: Improve CCA CPRB length and overflow checks The xcrb_msg_to_type6cprb_msgx() function lacks proper input validation, creating security vulnerabilities: 1. Integer overflow after CEIL4 alignment: Signed int variables could overflow during 4-byte boundary alignment, causing undersized buffer allocations or incorrect bounds checking. 2. Missing minimum size validation: The CPRBX structure is copied from userspace without verifying sufficient buffer length. Undersized buffers cause uninitialized memory access when reading structure fields like cprbx.cprb_len and cprbx.domain. 3. Arithmetic overflow in sum calculations: Adding control block and data block sizes could overflow, bypassing size checks and enabling buffer overflows. Fix by using size_t for length calculations, adding U32_MAX boundary checks after alignment, validating minimum control block size before copying from userspace, and detecting sum calculation overflows.
02KernelScan AI Analysis
Risk summary
A local user on an s390 system with access to the zcrypt device can trigger integer overflows and missing size validation in CCA CPRB message construction, leading to undersized buffer allocations and potential buffer overflows. This can result in kernel memory corruption, information disclosure, or denial of service. The vulnerability requires access to the zcrypt hardware crypto subsystem, which is specific to IBM s390 mainframes.
Vulnerability analysis
The IBM s390 zcrypt driver does not properly validate size values provided by userspace when building hardware crypto messages. Aligning lengths to 4-byte boundaries and adding them together can overflow, causing the driver to use undersized buffers. It also copies a control block from userspace without first checking that the supplied buffer is large enough, so later reads of that block access uninitialized memory. The corrected driver now performs length calculations with safer types, rejects values that are too large or too small, and detects arithmetic overflows before using the results. A local process that can access the zcrypt device can trigger these flaws.
Lifecycle
03Fix Versions
| Branch | Introduced | Fixed in | Patch commit |
|---|---|---|---|
| 6.12 | 6.12.114 | 6.13 | 584400144020 |
| 7.1 | 7.1 | 7.1.10 | 50fe5133dcb4 |
| mainline | 7.1 | 7.2 | 35ac6754ba6d |