Instituto Nacional de ciberseguridad. Sección Incibe
Instituto Nacional de Ciberseguridad. Sección INCIBE-CERT

Vulnerabilidad en Linux (CVE-2026-23316)

Gravedad CVSS v3.1:
MEDIA
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
25/03/2026
Última modificación:
23/04/2026

Descripción

En el kernel de Linux, la siguiente vulnerabilidad ha sido resuelta:<br /> <br /> net: ipv4: solucionar fallo de alineación ARM64 en la semilla de hash multipath<br /> <br /> &amp;#39;struct sysctl_fib_multipath_hash_seed&amp;#39; contiene dos campos u32 (user_seed y mp_seed), convirtiéndola en una estructura de 8 bytes con un requisito de alineación de 4 bytes.<br /> <br /> En &amp;#39;fib_multipath_hash_from_keys()&amp;#39;, el código evalúa la estructura completa atómicamente a través de &amp;#39;READ_ONCE()&amp;#39;:<br /> <br /> mp_seed = &amp;#39;READ_ONCE&amp;#39;(net-&amp;gt;ipv4.sysctl_fib_multipath_hash_seed).mp_seed;<br /> <br /> Aunque esto funciona silenciosamente en GCC al recurrir a cargas regulares no alineadas que el kernel ARM64 tolera, causa un pánico fatal del kernel cuando se compila con Clang y LTO habilitado.<br /> <br /> El commit e35123d83ee3 (&amp;#39;arm64: lto: Strengthen &amp;#39;READ_ONCE()&amp;#39; to acquire when CONFIG_LTO=y&amp;#39;) refuerza &amp;#39;READ_ONCE()&amp;#39; para usar instrucciones Load-Acquire (&amp;#39;ldar&amp;#39; / &amp;#39;ldapr&amp;#39;) para prevenir errores de reordenamiento del compilador bajo Clang LTO. Dado que la macro evalúa la estructura completa de 8 bytes, Clang emite una instrucción &amp;#39;ldar&amp;#39; de 64 bits. La arquitectura ARM64 requiere estrictamente que &amp;#39;ldar&amp;#39; esté naturalmente alineado, por lo tanto, ejecutarlo en una dirección alineada a 4 bytes desencadena un fallo de alineación estricto (FSC = 0x21).<br /> <br /> Solucionar el lado de lectura moviendo &amp;#39;READ_ONCE()&amp;#39; directamente al miembro &amp;#39;u32&amp;#39;, lo que emite un &amp;#39;ldar Wn&amp;#39; seguro de 32 bits.<br /> <br /> Además, Eric Dumazet señaló que &amp;#39;WRITE_ONCE()&amp;#39; en la estructura completa en &amp;#39;proc_fib_multipath_hash_set_seed()&amp;#39; también es defectuoso. El análisis muestra que Clang divide esta escritura de 8 bytes en dos instrucciones &amp;#39;str&amp;#39; separadas de 32 bits. Aunque esto evita un fallo de alineación, destruye la atomicidad y expone una vulnerabilidad de escritura fragmentada. Solucionar esto dividiendo explícitamente la escritura en dos operaciones &amp;#39;WRITE_ONCE()&amp;#39; de 32 bits.<br /> <br /> Finalmente, añadir el &amp;#39;READ_ONCE()&amp;#39; faltante al leer &amp;#39;user_seed&amp;#39; en &amp;#39;proc_fib_multipath_hash_seed()&amp;#39; para asegurar un emparejamiento adecuado y seguridad de concurrencia.

Productos y versiones vulnerables

CPE Desde Hasta
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.11.1 (incluyendo) 6.12.77 (excluyendo)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.13 (incluyendo) 6.18.17 (excluyendo)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.19 (incluyendo) 6.19.7 (excluyendo)
cpe:2.3:o:linux:linux_kernel:6.11:-:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.0:rc1:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.0:rc2:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.0:rc3:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.0:rc4:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.0:rc5:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.0:rc6:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.0:rc7:*:*:*:*:*:*