CVE-2026-31614

In the Linux kernel, the following vulnerability has been resolved: smb: client: fix off-by-8 bounds check in check_wsl_eas() The bounds check uses (u8 *)ea + nlen + 1 + vlen as the end of the EA name and value, but ea_data sits at offset sizeof(struct smb2_file_full_ea_info) = 8 from ea, not at offset 0. The strncmp() later reads ea->ea_data[0..nlen-1] and the value bytes follow at ea_data[nlen+1..nlen+vlen], so the actual end is ea->ea_data + nlen + 1 + vlen. Isn't pointer math fun? The earlier check (u8 *)ea > end - sizeof(*ea) only guarantees the 8-byte header is in bounds, but since the last EA is placed within 8 bytes of the end of the response, the name and value bytes are read past the end of iov. Fix this mess all up by using ea->ea_data as the base for the bounds check. An "untrusted" server can use this to leak up to 8 bytes of kernel heap into the EA name comparison and influence which WSL xattr the data is interpreted as.
Configurations

Configuration 1 (hide)

OR cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*

History

11 Nov 2026, 23:10

Type Values Removed Values Added
Summary
  • (es) En el kernel de Linux, la siguiente vulnerabilidad ha sido resuelta: smb: cliente: corregir la comprobación de límites con un error de 8 bytes en check_wsl_eas() La comprobación de límites usa (u8 *)ea + nlen + 1 + vlen como el final del nombre y valor de la EA, pero ea_data se encuentra en el desplazamiento sizeof(struct smb2_file_full_ea_info) = 8 desde ea, no en el desplazamiento 0. La función strncmp() lee más tarde ea -> ea_data[0..nlen-1] y los bytes del valor siguen en ea_data[nlen+1..nlen+vlen], por lo que el final real es ea -> ea_data + nlen + 1 + vlen. ¿No es divertida la aritmética de punteros? La comprobación anterior (u8 *)ea > end - sizeof(ea) solo garantiza que la cabecera de 8 bytes está dentro de los límites, pero dado que la última EA se coloca dentro de los 8 bytes del final de la respuesta, los bytes del nombre y del valor se leen más allá del final de iov. Solucionar todo este lío usando ea -> ea_data como base para la comprobación de límites. Un servidor ’no confiable’ puede usar esto para filtrar hasta 8 bytes de la pila del kernel en la comparación del nombre de la EA e influir en cómo se interpreta el dato para qué xattr de WSL.

Information

Published : 2026-04-24 15:16

Updated : 2026-11-11 23:10


NVD link : CVE-2026-31614

Mitre link : CVE-2026-31614

CVE.ORG link : CVE-2026-31614


JSON object : View

Products Affected

linux

  • linux_kernel
CWE
CWE-125

Out-of-bounds Read