CVE-2026-80832
NoneCVSS
—
EPSS
0.2%
Published
Sep 4, 2026
CISA due date
—
Cloudanix analysis
A bug in Linux kernel encryption support on certain hardware could cause some encrypted data checks to fail or accept the wrong data, requiring a software update to restore correct behavior.
- Exploitation
- Local Privilege
- Attacker needs
- Local User
- Complexity
- Theoretical
- Impact
- Other
- Component
- OS kernel
- Class
- Memory Corruption
- Remediation
- Patch
- Effort
- Low
- Patch risk
- Low
What it actually does
Underallocation of the AAD buffer in qce_aead_ccm_prepare_buf_assoclen() allows the QCE DMA scatterlist to program a larger length than allocated, enabling an out-of-bounds read during CBC-MAC computation over associated data and producing an incorrect authentication tag.
Why it matters to the business
Hardware-accelerated CCM encryption on affected Linux systems may silently produce invalid authentication tags, causing self-test failures, rejected packets in VPN or storage workloads, or weakened integrity protection until the kernel is updated.
How an attack unfolds
An attacker supplies CCM AEAD operations with specific assoclen and adata_header_len values that trigger the miscalculated allocation; the subsequent DMA read incorporates extra memory bytes into the tag, resulting in authentication failures or acceptance of forged data if the corrupted tag is used downstream.
How to fix it
Update the Linux kernel to a version containing the corrected allocation ALIGN(assoclen + MAX_CCM_ADATA_HEADER_LEN, 16) in the qce driver; rebuild and deploy the updated kernel image on all affected systems.
How to confirm the fix worked
After patching, run the kernel crypto self-tests (alg: aead ccm-aes-qce) and confirm the previously failing test vectors now pass; verify the allocation formula in qce_aead_ccm_prepare_buf_assoclen matches the DMA length calculation.
Typical attack path
- Trigger a CCM encryption or decryption operation with assoclen values that expose the ALIGN misalignment (e.g., 32 bytes with 2-byte header)
- Kernel allocates undersized buffer via qce_aead_ccm_prepare_buf_assoclen
- QCE hardware performs DMA read of the larger padded length, incorporating bytes beyond the buffer
- Incorrect CBC-MAC tag is computed and returned to callers
- Downstream protocols or self-tests observe authentication mismatches or failures
How to detect it
Search kernel logs and crypto selftest output for messages containing 'ccm-aes-qce encryption test failed (wrong result)' or 'on test vector 8'; inspect qce driver source or loaded module for the pre-fix allocation expression.
What your security team should do
- Prioritize kernel updates on systems using Qualcomm crypto engines with CCM AEAD (IPsec, TLS offload, dm-crypt)
- Monitor crypto self-test logs for CCM failures until patched
- Apply the fix within standard change windows given low EPSS and no known in-the-wild exploitation
The record
In the Linux kernel, the following vulnerability has been resolved: crypto: qce - fix CCM AAD buffer underallocation The AAD buffer allocated in qce_aead_ccm_prepare_buf_assoclen() can be smaller than the length later programmed into the DMA scatterlist. The allocation size is currently calculated as: ALIGN(assoclen, 16) + MAX_CCM_ADATA_HEADER_LEN while the DMA length is set to: ALIGN(assoclen + adata_header_len, 16) Since ALIGN() does not distribute over addition, the allocation can be smaller than the DMA length. For example, when assoclen = 32 and adata_header_len = 2: allocation = ALIGN(32, 16) + 6 = 38 DMA length = ALIGN(32 + 2, 16) = 48 As a result, the QCE hardware can read beyond the allocated buffer while computing the CBC-MAC over the associated data. The extra bytes are folded into the authentication tag, resulting in an incorrect tag and causing CCM self-test failures such as: alg: aead: ccm-aes-qce encryption test failed (wrong result) on test vector 8 Fix the allocation by adding the maximum possible AAD header length before alignment: ALIGN(assoclen + MAX_CCM_ADATA_HEADER_LEN, 16) This guarantees that the allocated buffer is large enough for the fully padded AAD data for all supported header sizes.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|