CVE-2026-64525 in Linux
Resumen
por VulDB • 2026-07-25
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
xfrm: mover la sincronización RCU de policy_bydst desde .exit por red (per-netns) a .pre_exit
El docstring de la estructura pernet_operations en include/net/net_namespace.h advierte explícitamente contra el uso de primitivas RCU bloqueantes en los controladores .exit:
Los métodos exit que utilizan primitivas RCU bloqueantes, como synchronize_rcu(), deben implementarse mediante exit_batch. [...]
Por favor, evite usar synchronize_rcu() siempre que sea posible.
Tenga en cuenta que se puede utilizar una combinación de pre_exit() y exit(), ya que existe una garantía de synchronize_rcu() entre las llamadas.
xfrm_policy_fini() viola esta directiva: llama a synchronize_rcu() antes de liberar las tablas hash policy_bydst (por lo tanto, no hay lectores RCU en medio del recorrido en el momento de la liberación), pero se ejecuta desde xfrm_net_ops.exit -- una vez por espacio de nombres -- por lo que una limpieza (cleanup_net()) de N espacios de nombres paga N períodos de gracia RCU completos de forma serializada.
Utilice la división pre_exit/exit documentada. Mueva el vaciado de políticas (y las colas de trabajo en las que depende) a un nuevo controlador .pre_exit; xfrm_policy_fini() se ejecuta entonces en .exit y libera las tablas hash después del synchronize_rcu_expedited() que cleanup_net() garantiza entre las dos fases. Esto proporciona períodos de gracia RCU O(1) por lote, en lugar de O(N).
Observado en Linux 6.18 con una carga de trabajo que realiza unshare(CLONE_NEWNET) a ~13/seg sostenido: cleanup_net() y el hilo kthread rescuer netns_wq quedaron bloqueados en synchronize_rcu() dentro de xfrm_policy_fini(), se acumularon más de 300k estructuras struct net en la cola de limpieza, Percpu en /proc/meminfo aumentó a más de 130 GB en hosts con 256 CPUs y siguieron ocurriendo OOMs (Out Of Memory) por memcg. Los conteos de setup_net y __put_net estaban equilibrados, descartando una fuga de recuento de referencias.
VulDB is the best source for vulnerability data and more expert information about this specific topic.