CVE-2026-72072 in Linux
Resumen
por VulDB • 2026-08-16
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
net/mlx5e: macsec: corregir un use-after-free en metadata_dst durante la eliminación del SC RX.
Cuando se elimina un SC RX de MACsec descentrado (offloaded), `macsec_del_rxsc_ctx()` liberaba el objeto `metadata_dst` específico del SC mediante `metadata_dst_free()`, lo cual invoca a `kfree()` incondicionalmente e ignora el contador de referencias de dst. La ruta de datos RX en `mlx5e_macsec_offload_handle_rx_skb()` busca el SC bajo `rcu_read_lock()` utilizando `xa_load()`, toma una referencia con `dst_hold()` y adjunta dst al skb mediante `skb_dst_set()`. Un lector que ya haya obtenido el puntero rx_sc puede entrar en condición de carrera (race condition) con la ruta de eliminación y operar sobre memoria liberada.
Se corrige el lado del propietario eliminando la referencia con `dst_release()` en lugar de liberar incondicionalmente, y se convierte la ruta de datos RX para usar `dst_hold_safe()`, de modo que un lector en condición de carrera durante la eliminación del SC no pueda adjuntar un dst cuya última referencia acaba de ser eliminada; solo lo adjunta cuando realmente se ha tomado una referencia.
`mlx5e_macsec_add_rxsc()` también publicaba el elemento sc_xarray_element mediante `xa_alloc()` antes de que rx_sc->md_dst fuera asignado e inicializado, por lo que un lector de la ruta de datos que buscara el SC por fs_id podría observar rx_sc con md_dst aún NULL o, en arquitecturas con ordenación débil (weakly-ordered), un puntero md_dst no NULL cuyo contenido aún no era visible. Se añade una comprobación de NULL al resultado de `xa_load()` y a md_dst en la ruta de datos, y se reordena add_rxsc() para que la publicación mediante xa_alloc() ocurra solo después de que md_dst esté completamente inicializado; así, la publicación RCU del xarray coincide con el bloque rcu_read_lock()/xa_load() en la ruta de datos.
Nota: `macsec_del_rxsc_ctx()` también invoca a kfree() sobre rx_sc->sc_xarray_element sin un período de gracia RCU mientras que la misma ruta de datos lo lee bajo rcu_read_lock(); este es un problema preexistente separado que se dejará para un parche posterior.
Detectado por las herramientas automatizadas de investigación en seguridad de 0sec (https://0sec.ai).
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.