CVE-2026-80546: s390/zcrypt: Improve CCA CPRB length and overflow checks
In the Linux kernel, the following vulnerability has been resolved:
s390/zcrypt: Improve CCA CPRB length and overflow checks
The xcrbmsgtotype6cprbmsgx() 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.cprblen 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 sizet for length calculations, adding U32MAX boundary checks after alignment, validating minimum control block size before copying from userspace, and detecting sum calculation overflows.
Affected Software
Event History
Frequently Asked Questions
What access is required to reach the vulnerable code path?
The affected function copies CPRB-related input from userspace, so exploitation requires the ability to submit crafted userspace requests that reach the s390 zcrypt CCA CPRB handling path.
What conditions make a crafted request dangerous?
Malformed inputs with an undersized CPRBX control block or length values that overflow during 4-byte alignment or control-block/data-block size addition can bypass intended bounds checks. This can result in uninitialized-memory access or buffer overflow conditions.
How can I determine whether the issue is addressed in my kernel?
Check whether your kernel includes the fixes referenced by commits 50fe5133dcb46449daf2435fa705264364411129 or 35ac6754ba6da45fd193f5ce3f665f7490b830d5. The corrected code uses size_t length calculations, validates minimum control-block size before copying from userspace, checks alignment against U32_MAX, and detects size-addition overflows.