CVE-2026-31504

In the Linux kernel, the following vulnerability has been resolved: net: fix fanout UAF in packet_release() via NETDEV_UP race `packet_release()` has a race window where `NETDEV_UP` can re-register a socket into a fanout group's `arr[]` array. The re-registration is not cleaned up by `fanout_release()`, leaving a dangling pointer in the fanout array. `packet_release()` does NOT zero `po->num` in its `bind_lock` section. After releasing `bind_lock`, `po->num` is still non-zero and `po->ifindex` still matches the bound device. A concurrent `packet_notifier(NETDEV_UP)` that already found the socket in `sklist` can re-register the hook. For fanout sockets, this re-registration calls `__fanout_link(sk, po)` which adds the socket back into `f->arr[]` and increments `f->num_members`, but does NOT increment `f->sk_ref`. The fix sets `po->num` to zero in `packet_release` while `bind_lock` is held to prevent NETDEV_UP from linking, preventing the race window. This bug was found following an additional audit with Claude Code based on CVE-2025-38617.
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:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:3.1:-:*:*:*:*:*:*
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:*:*:*:*:*:*

History

11 Nov 2026, 23:10

Type Values Removed Values Added
Summary
  • (es) En el kernel de Linux, la siguiente vulnerabilidad ha sido resuelta: net: corrige UAF de fanout en packet_release() a través de una condición de carrera de NETDEV_UP ’packet_release()’ tiene una ventana de carrera donde ’NETDEV_UP’ puede volver a registrar un socket en el array ’arr[]’ de un grupo de fanout. El nuevo registro no es limpiado por ’fanout_release()’, dejando un puntero colgante en el array de fanout. ’packet_release()’ NO pone a cero ’po -> num’ en su sección ’bind_lock’. Después de liberar ’bind_lock’, ’po -> num’ sigue siendo distinto de cero y ’po -> ifindex’ sigue coincidiendo con el dispositivo enlazado. Un ’packet_notifier(NETDEV_UP)’ concurrente que ya encontró el socket en ’sklist’ puede volver a registrar el hook. Para sockets de fanout, este nuevo registro llama a ’__fanout_link(sk, po)’ que añade el socket de nuevo a ’f -> arr[]’ e incrementa ’f -> num_members’, pero NO incrementa ’f -> sk_ref’. La corrección pone ’po -> num’ a cero en ’packet_release’ mientras ’bind_lock’ está retenido para evitar que NETDEV_UP enlace, previniendo la ventana de carrera. Este error fue encontrado tras una auditoría adicional con Claude Code basado en CVE-2025-38617.

19 Oct 2026, 19:17

Type Values Removed Values Added
CWE CWE-362

15 Oct 2026, 02:19

Type Values Removed Values Added
References
  • () https://cert-portal.siemens.com/productcert/html/ssa-457936.html -

Information

Published : 2026-04-22 14:16

Updated : 2026-11-11 23:10


NVD link : CVE-2026-31504

Mitre link : CVE-2026-31504

CVE.ORG link : CVE-2026-31504


JSON object : View

Products Affected

linux

  • linux_kernel
CWE
CWE-416

Use After Free

CWE-362

Concurrent Execution using Shared Resource with Improper Synchronization ('Race Condition')