CVE-2026-80832 Overview
CVE-2026-80832 is a buffer underallocation vulnerability in the Linux kernel's Qualcomm Crypto Engine (QCE) driver. The flaw resides in qce_aead_ccm_prepare_buf_assoclen(), which allocates an Additional Authenticated Data (AAD) buffer smaller than the length later programmed into the Direct Memory Access (DMA) scatterlist. The mismatch causes the QCE hardware to read beyond the allocated buffer while computing the CBC-MAC over associated data during Counter with CBC-MAC (CCM) mode operations. The result is corrupted authentication tags and observable CCM self-test failures. The issue has been resolved across multiple stable kernel branches.
Critical Impact
The QCE hardware reads memory past the end of the allocated AAD buffer, causing incorrect CCM authentication tags and potential exposure of adjacent kernel heap contents through the computed MAC.
Affected Products
- Linux kernel — drivers/crypto/qce (Qualcomm Crypto Engine driver)
- Kernel builds using QCE for AEAD CCM offload (ccm-aes-qce)
- Multiple stable branches receiving the backported fix commits
Discovery Timeline
- 2026-09-04 - CVE-2026-80832 published to NVD
- 2026-09-04 - Last updated in NVD database
Technical Details for CVE-2026-80832
Vulnerability Analysis
The defect is a classic arithmetic mismatch between allocation size and DMA-programmed length. The AAD buffer is allocated as ALIGN(assoclen, 16) + MAX_CCM_ADATA_HEADER_LEN, while the DMA transfer length is computed as ALIGN(assoclen + adata_header_len, 16). Because ALIGN() does not distribute over addition, the DMA length can exceed the allocation.
For assoclen = 32 and adata_header_len = 2, the allocation is 38 bytes while the DMA length is 48 bytes. The QCE hardware then reads 10 bytes past the buffer while computing the CBC-MAC. Those extra bytes are folded into the authentication tag, yielding an incorrect result and triggering failures such as alg: aead: ccm-aes-qce encryption test failed (wrong result) on test vector 8. Adjacent slab contents influence the tag value, which is an out-of-bounds read [CWE-125] with cryptographic integrity impact.
Root Cause
The root cause is an incorrect size calculation. ALIGN(a, 16) + b is not equivalent to ALIGN(a + b, 16) when b is small enough to fit inside the padding of a. The driver assumed the two expressions were interchangeable, so the buffer was undersized whenever the AAD header pushed the total length across the next 16-byte boundary.
Attack Vector
Exploitation requires the ability to submit AEAD CCM requests through the kernel crypto API on a system using the QCE hardware offload path. The impact is primarily cryptographic correctness: authentication tags become dependent on out-of-bounds heap memory, which can silently corrupt authenticated payloads and leak entropy about neighboring allocations through observed tag values. No verified public proof-of-concept exploit is available.
The upstream fix changes the allocation to ALIGN(assoclen + MAX_CCM_ADATA_HEADER_LEN, 16), guaranteeing the buffer covers the fully padded AAD for all supported header sizes. See the kernel patch 002f1f99 for the reference commit.
Detection Methods for CVE-2026-80832
Indicators of Compromise
- Kernel log entries reporting alg: aead: ccm-aes-qce encryption test failed (wrong result) during crypto self-tests.
- Unexpected AEAD decryption failures on workloads using ccm(aes) accelerated by the QCE driver.
- KASAN (Kernel Address Sanitizer) reports of out-of-bounds reads originating in qce_aead_ccm_prepare_buf_assoclen().
Detection Strategies
- Enable CRYPTO_MANAGER_EXTRA_TESTS and review dmesg for CCM algorithm self-test failures on QCE-equipped hardware.
- Compare kernel package versions against the fixed commits listed on git.kernel.org for each maintained stable branch.
- Audit build configurations for CONFIG_CRYPTO_DEV_QCE and CONFIG_CRYPTO_DEV_QCE_AEAD to identify exposed systems.
Monitoring Recommendations
- Forward kernel logs (dmesg, journald) to a centralized data lake and alert on crypto self-test failure strings.
- Track kernel version inventory across Qualcomm-based Linux fleets and flag hosts running pre-patch builds.
- Monitor for repeated AEAD authentication failures in applications using kernel-offloaded CCM, such as MACsec or Wi-Fi supplicants.
How to Mitigate CVE-2026-80832
Immediate Actions Required
- Update to a kernel build containing one of the fix commits referenced on git.kernel.org for your stable branch.
- Rebuild and redeploy custom or vendor kernels using the QCE driver after applying the upstream patch.
- Validate CCM correctness after patching by running the kernel crypto self-tests with extended coverage enabled.
Patch Information
The fix is available across multiple stable trees. Reference commits include 002f1f99, 11775b35, 2f65718b, 46a84efe, 4839f4c2, 7f2345f4, c9e0f06a, and cc56d2b0. The patch replaces the allocation with ALIGN(assoclen + MAX_CCM_ADATA_HEADER_LEN, 16).
Workarounds
- Disable the QCE AEAD offload by unloading or not building the qce module and falling back to the software CCM implementation.
- Blacklist the qcrypto module on affected systems until the patched kernel is deployed.
- Prefer alternative AEAD algorithms such as GCM where CCM offload is not required by the workload.
# Configuration example: disable QCE offload until patched kernel is deployed
echo 'blacklist qcrypto' | sudo tee /etc/modprobe.d/disable-qce.conf
sudo update-initramfs -u
sudo reboot
# Verify QCE module is not loaded
lsmod | grep -i qce
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.