Description
In the Linux kernel, the following vulnerability has been resolved: net/smc: fix socket use-after-free during link group termination __smc_lgr_terminate() drops conns_lock after finding a connection in lgr->conns_all, but before taking a reference on its socket. The connection is embedded in the socket, and its registration reference protects it only while the connection remains in the tree. A concurrent close can unregister the connection and drop that reference, freeing the socket before the termination worker reaches sock_hold(). The race is reachable when close overlaps link group termination. Local stress testing reproduced the use-after-free and KASAN reported: BUG: KASAN: slab-use-after-free in __smc_lgr_terminate.part.0 [smc] Write of size 4 by task kworker/3:3 Workqueue: events smc_lgr_terminate_work [smc] __smc_lgr_terminate.part.0 [smc] The socket was allocated by smc_create(), freed through slab_free_after_rcu_debug(), and was followed by: refcount_t: addition on 0; use-after-free. __smc_lgr_terminate.part.0 [smc] Take the socket reference while conns_lock still protects the tree entry. The unregister path then cannot drop the last reference until termination has finished using the socket.
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
69318b5215f2dc32c345a3d65b98b4b1bf29c007 to < ff44f2df57fb5560bdc75eb977867643e764a262affected69318b5215f2dc32c345a3d65b98b4b1bf29c007 to < 9fb17c95b8f0683570fca1fb2792264147af937aaffected69318b5215f2dc32c345a3d65b98b4b1bf29c007 to < bea8dc14de2d56aca749d368563e6888217710a5affected69318b5215f2dc32c345a3d65b98b4b1bf29c007 to < 5a42f162b857019a4c10ff687dc3bcdf51831865affected69318b5215f2dc32c345a3d65b98b4b1bf29c007 to < 281c103a8eaed59001ce952f231df1b07674215aaffected69318b5215f2dc32c345a3d65b98b4b1bf29c007 to < f807a63d0d95680c34f677700da9148a07d7c78faffected69318b5215f2dc32c345a3d65b98b4b1bf29c007 to < f0541a775d04c88e90ba448e35ce0d743512822aaffected69318b5215f2dc32c345a3d65b98b4b1bf29c007 to < f621d6ebeebb6374342571e4ddf45fdbc420f6cdaffected
Linux Linux
Default version status: affected
5.5affected0 to < 5.5unaffected5.10.265 to ≤ 5.10.*unaffected5.15.216 to ≤ 5.15.*unaffected6.1.183 to ≤ 6.1.*unaffected6.6.151 to ≤ 6.6.*unaffected6.12.103 to ≤ 6.12.*unaffected6.18.44 to ≤ 6.18.*unaffected7.1.8 to ≤ 7.1.*unaffected7.2 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/ff44f2df57fb5560bdc75eb977867643e764a262 ↗
- https://git.kernel.org/stable/c/9fb17c95b8f0683570fca1fb2792264147af937a ↗
- https://git.kernel.org/stable/c/bea8dc14de2d56aca749d368563e6888217710a5 ↗
- https://git.kernel.org/stable/c/5a42f162b857019a4c10ff687dc3bcdf51831865 ↗
- https://git.kernel.org/stable/c/281c103a8eaed59001ce952f231df1b07674215a ↗
- https://git.kernel.org/stable/c/f807a63d0d95680c34f677700da9148a07d7c78f ↗
- https://git.kernel.org/stable/c/f0541a775d04c88e90ba448e35ce0d743512822a ↗
- https://git.kernel.org/stable/c/f621d6ebeebb6374342571e4ddf45fdbc420f6cd ↗