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 />
&#39;struct sysctl_fib_multipath_hash_seed&#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 &#39;fib_multipath_hash_from_keys()&#39;, el código evalúa la estructura completa atómicamente a través de &#39;READ_ONCE()&#39;:<br />
<br />
mp_seed = &#39;READ_ONCE&#39;(net-&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 (&#39;arm64: lto: Strengthen &#39;READ_ONCE()&#39; to acquire when CONFIG_LTO=y&#39;) refuerza &#39;READ_ONCE()&#39; para usar instrucciones Load-Acquire (&#39;ldar&#39; / &#39;ldapr&#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 &#39;ldar&#39; de 64 bits. La arquitectura ARM64 requiere estrictamente que &#39;ldar&#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 &#39;READ_ONCE()&#39; directamente al miembro &#39;u32&#39;, lo que emite un &#39;ldar Wn&#39; seguro de 32 bits.<br />
<br />
Además, Eric Dumazet señaló que &#39;WRITE_ONCE()&#39; en la estructura completa en &#39;proc_fib_multipath_hash_set_seed()&#39; también es defectuoso. El análisis muestra que Clang divide esta escritura de 8 bytes en dos instrucciones &#39;str&#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 &#39;WRITE_ONCE()&#39; de 32 bits.<br />
<br />
Finalmente, añadir el &#39;READ_ONCE()&#39; faltante al leer &#39;user_seed&#39; en &#39;proc_fib_multipath_hash_seed()&#39; para asegurar un emparejamiento adecuado y seguridad de concurrencia.
Impacto
Puntuación base 3.x
5.50
Gravedad 3.x
MEDIA
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:*:*:*:*:*:* |
Para consultar la lista completa de nombres de CPE con productos y versiones, ver esta página



