Description
In the Linux kernel, the following vulnerability has been resolved: sctp: avoid auth_enable sysctl UAF during netns teardown proc_sctp_do_auth() updates the SCTP control socket after changing net.sctp.auth_enable. The handler gets the per-net SCTP state from ctl->data, so an already opened sysctl file can still target a network namespace while that namespace is being torn down. SCTP previously registered its per-net sysctls from sctp_defaults_init(), while the control socket is created later from sctp_ctrlsock_init(). This exposed a window during initialization where auth_enable was writable before net->sctp.ctl_sock existed, and a teardown window where auth_enable stayed writable after inet_ctl_sock_destroy() had released the control socket. Move the per-net SCTP sysctl registration into sctp_ctrlsock_init() after sctp_ctl_sock_init() succeeds, and unregister the sysctl table before destroying the control socket in sctp_ctrlsock_exit(). If sysctl registration fails after the control socket was created, destroy the control socket in the same init path. Make sctp_sysctl_net_unregister() tolerate a missing header and clear the saved pointer so init-error and exit paths can safely share the unregister helper.
Affected products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
Linux Linux
Default version status: unaffected
10c869a52f266e40f548cc3c565d14930a5edafc to < 19573dcddb8819fd68d6cd1f916c1c99c3fa4ff4affecteddc583e7e5f8515ca489c0df28e4362a70eade382 to < ceb7190b5c873d4a1267a1600c5aa52c600e929faffectedbd2a2939423566c654545fa3e96a656662a0af9e to < fd66854a22661929245f3d2b244c432bc8b1a150affected1b67030d39f2b00f94ac1f0af11ba6657589e4d3 to < 158f3cc332dc53f43ec20060233d7c3cecd6d912affected7ec30c54f339c640aa7e49d7e9f7bbed6bd42bf6 to < 66700c0719675e0e118ae83b2d7168dacd69dd3daffectedc184bc621e3cef03ac9ba81a50dda2dae6a21d36 to < 626bda8cfe43dff19a9833ff6ba055a817b5455caffected15649fd5415eda664ef35780c2013adeb5d9c695 to < be6aae9d1b91c603adb35872d37d40e83daf8758affected15649fd5415eda664ef35780c2013adeb5d9c695 to < a50e73488e0bbdd262b3be3c9a1d8dd078382381affected15649fd5415eda664ef35780c2013adeb5d9c695 to < f8d5e7846025f4ab15a461235f8ebae9094a361aaffected5.4.290 to < 5.4.292affected5.10.234 to < 5.10.266affected5.15.177 to < 5.15.217affected6.1.125 to < 6.1.184affected6.6.72 to < 6.6.151affected6.12.10 to < 6.12.101affected
Linux Linux
Default version status: affected
6.13affected0 to < 6.13unaffected5.4.292 to ≤ 5.4.*unaffected5.10.266 to ≤ 5.10.*unaffected5.15.217 to ≤ 5.15.*unaffected6.1.184 to ≤ 6.1.*unaffected6.6.151 to ≤ 6.6.*unaffected6.12.101 to ≤ 6.12.*unaffected6.18.42 to ≤ 6.18.*unaffected7.1.6 to ≤ 7.1.*unaffected7.2 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/19573dcddb8819fd68d6cd1f916c1c99c3fa4ff4 ↗
- https://git.kernel.org/stable/c/ceb7190b5c873d4a1267a1600c5aa52c600e929f ↗
- https://git.kernel.org/stable/c/fd66854a22661929245f3d2b244c432bc8b1a150 ↗
- https://git.kernel.org/stable/c/158f3cc332dc53f43ec20060233d7c3cecd6d912 ↗
- https://git.kernel.org/stable/c/66700c0719675e0e118ae83b2d7168dacd69dd3d ↗
- https://git.kernel.org/stable/c/626bda8cfe43dff19a9833ff6ba055a817b5455c ↗
- https://git.kernel.org/stable/c/be6aae9d1b91c603adb35872d37d40e83daf8758 ↗
- https://git.kernel.org/stable/c/a50e73488e0bbdd262b3be3c9a1d8dd078382381 ↗
- https://git.kernel.org/stable/c/f8d5e7846025f4ab15a461235f8ebae9094a361a ↗