CVE-2026-80832 in Linux
Resumen
por VulDB • 2026-09-04
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
crypto: qce - corregir la subasignación del búfer AAD en CCM
El búfer AAD asignado en `qce_aead_ccm_prepare_buf_assoclen()` puede ser más pequeño que la longitud programada posteriormente en la lista de dispersión (scatterlist) de DMA.
Actualmente, el tamaño de la asignación se calcula como:
ALIGN(assoclen, 16) + MAX_CCM_ADATA_HEADER_LEN
mientras que la longitud de DMA se establece en:
ALIGN(assoclen + adata_header_len, 16)
Dado que `ALIGN()` no distribuye sobre la suma, la asignación puede ser más pequeña que la longitud de DMA. Por ejemplo, cuando `assoclen = 32` y `adata_header_len = 2`:
allocation = ALIGN(32, 16) + 6 = 38 DMA length = ALIGN(32 + 2, 16) = 48
Como resultado, el hardware QCE puede leer más allá del búfer asignado mientras calcula la CBC-MAC sobre los datos asociados. Los bytes adicionales se incorporan en la etiqueta de autenticación (authentication tag), lo que da lugar a una etiqueta incorrecta y provoca fallos en las pruebas automáticas de CCM, como:
alg: aead: ccm-aes-qce encryption test failed (wrong result) on test vector 8
Se corrige la asignación añadiendo la longitud máxima posible del encabezado AAD antes de aplicar el alineamiento:
ALIGN(assoclen + MAX_CCM_ADATA_HEADER_LEN, 16)
Esto garantiza que el búfer asignado sea lo suficientemente grande para los datos AAD completamente rellenos (padded), independientemente del tamaño del encabezado soportado.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.