CVE-2022-49808

In the Linux kernel, the following vulnerability has been resolved: net: dsa: don't leak tagger-owned storage on switch driver unbind In the initial commit dc452a471dba ("net: dsa: introduce tagger-owned storage for private and shared data"), we had a call to tag_ops->disconnect(dst) issued from dsa_tree_free(), which is called at tree teardown time. There were problems with connecting to a switch tree as a whole, so this got reworked to connecting to individual switches within the tree. In this process, tag_ops->disconnect(ds) was made to be called only from switch.c (cross-chip notifiers emitted as a result of dynamic tag proto changes), but the normal driver teardown code path wasn't replaced with anything. Solve this problem by adding a function that does the opposite of dsa_switch_setup_tag_protocol(), which is called from the equivalent spot in dsa_switch_teardown(). The positioning here also ensures that we won't have any use-after-free in tagging protocol (*rcv) ops, since the teardown sequence is as follows: dsa_tree_teardown -> dsa_tree_teardown_master -> dsa_master_teardown -> unsets master->dsa_ptr, making no further packets match the ETH_P_XDSA packet type handler -> dsa_tree_teardown_ports -> dsa_port_teardown -> dsa_slave_destroy -> unregisters DSA net devices, there is even a synchronize_net() in unregister_netdevice_many() -> dsa_tree_teardown_switches -> dsa_switch_teardown -> dsa_switch_teardown_tag_protocol -> finally frees the tagger-owned storage
Configurations

Configuration 1 (hide)

OR cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.1:rc1:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.1:rc2:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.1:rc3:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.1:rc4:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.1:rc5:*:*:*:*:*:*

History

07 Nov 2025, 19:20

Type Values Removed Values Added
CWE NVD-CWE-noinfo
CPE cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.1:rc1:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.1:rc3:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.1:rc5:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.1:rc2:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.1:rc4:*:*:*:*:*:*
CVSS v2 : unknown
v3 : unknown
v2 : unknown
v3 : 5.5
References () https://git.kernel.org/stable/c/4e0c19fcb8b5323716140fa82b79aa9f60e60407 - () https://git.kernel.org/stable/c/4e0c19fcb8b5323716140fa82b79aa9f60e60407 - Patch
References () https://git.kernel.org/stable/c/5809fb03942dbac25144db5bebea84fa003ecaca - () https://git.kernel.org/stable/c/5809fb03942dbac25144db5bebea84fa003ecaca - Patch
First Time Linux
Linux linux Kernel

02 May 2025, 13:53

Type Values Removed Values Added
Summary
  • (es) En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: net: dsa: no filtrar almacenamiento propiedad del etiquetador al desvincular el controlador del conmutador. En la confirmación inicial dc452a471dba ("net: dsa: introducir almacenamiento propiedad del etiquetador para datos privados y compartidos"), teníamos una llamada a tag_ops->disconnect(dst) emitida desde dsa_tree_free(), que se llama en el momento del desmontaje del árbol. Había problemas con la conexión a un árbol de conmutadores como un todo, por lo que esto se modificó para conectarse a conmutadores individuales dentro del árbol. En este proceso, tag_ops->disconnect(ds) se hizo para que se llamara solo desde switch.c (notificadores entre chips emitidos como resultado de cambios dinámicos de protocolo de etiqueta), pero la ruta de código normal para el desmontaje del controlador no se reemplazó con nada. Resuelva este problema añadiendo una función que haga lo contrario de dsa_switch_setup_tag_protocol(), que se llama desde el punto equivalente en dsa_switch_teardown(). El posicionamiento aquí también asegura que no tendremos ningún use-after-free en las operaciones del protocolo de etiquetado (*rcv), ya que la secuencia de desmontaje es la siguiente: dsa_tree_teardown -> dsa_tree_teardown_master -> dsa_master_teardown -> anula el ajuste master->dsa_ptr, lo que hace que no haya más paquetes que coincidan con el controlador de tipo de paquete ETH_P_XDSA -> dsa_tree_teardown_ports -> dsa_port_teardown -> dsa_slave_destroy -> anula el registro de los dispositivos de red DSA, incluso hay un synchronize_net() en unregister_netdevice_many() -> dsa_tree_teardown_switches -> dsa_switch_teardown -> dsa_switch_teardown_tag_protocol -> finalmente libera el almacenamiento propiedad del etiquetador

01 May 2025, 15:16

Type Values Removed Values Added
New CVE

Information

Published : 2025-05-01 15:16

Updated : 2025-11-07 19:20


NVD link : CVE-2022-49808

Mitre link : CVE-2022-49808

CVE.ORG link : CVE-2022-49808


JSON object : View

Products Affected

linux

  • linux_kernel