Description
In the Linux kernel, the following vulnerability has been resolved: nfc: llcp: Fix use-after-free race in nfc_llcp_recv_cc() A race condition exists in the NFC LLCP connection state machine where the connection acceptance packet (CC) can be processed concurrently with socket release. This can lead to a use-after-free of the socket object. When nfc_llcp_recv_cc() moves the socket from the connecting_sockets list to the sockets list, it does so without holding the socket lock. If llcp_sock_release() is executing concurrently, it might have already unlinked the socket and dropped its references, which can result in nfc_llcp_recv_cc() linking a freed socket into the live list. Fix this by holding lock_sock() during the state transition and list movement in nfc_llcp_recv_cc(). After acquiring the lock, check if the socket is still hashed to ensure it hasn't already been unlinked and marked for destruction by the release path. This aligns the locking pattern with recv_hdlc() and recv_disc().
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
a69f32af86e389dd232b1bb2269e202c1bfcc60f to < dce85215a6c7b0fd753f577a4c487f647119884caffecteda69f32af86e389dd232b1bb2269e202c1bfcc60f to < bd08bb7443c501d2f2a71d529e4afcf11c9b07d2affecteda69f32af86e389dd232b1bb2269e202c1bfcc60f to < 0b45c31746e1523d5d482fda8fcf54a35ac417f1affecteda69f32af86e389dd232b1bb2269e202c1bfcc60f to < ee2d1a8a1833c5e56e9a1745e64b0b4edda732c2affecteda69f32af86e389dd232b1bb2269e202c1bfcc60f to < ad8a27d63cac96bac441edd002209ebd996e12fbaffecteda69f32af86e389dd232b1bb2269e202c1bfcc60f to < 650bdd8fdfab64a09ee474150313dbc48c374795affecteda69f32af86e389dd232b1bb2269e202c1bfcc60f to < b2a60f7f846faaf5c2cdad4ea6d3a33e5f863183affecteda69f32af86e389dd232b1bb2269e202c1bfcc60f to < b493ea2765cc17cb8aa7e7544a4b6dcb05b6ed77affected
Linux Linux
Default version status: affected
3.6affected0 to < 3.6unaffected5.10.259 to ≤ 5.10.*unaffected5.15.210 to ≤ 5.15.*unaffected6.1.176 to ≤ 6.1.*unaffected6.6.143 to ≤ 6.6.*unaffected6.12.93 to ≤ 6.12.*unaffected6.18.35 to ≤ 6.18.*unaffected7.0.12 to ≤ 7.0.*unaffected7.1 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/dce85215a6c7b0fd753f577a4c487f647119884c ↗
- https://git.kernel.org/stable/c/bd08bb7443c501d2f2a71d529e4afcf11c9b07d2 ↗
- https://git.kernel.org/stable/c/0b45c31746e1523d5d482fda8fcf54a35ac417f1 ↗
- https://git.kernel.org/stable/c/ee2d1a8a1833c5e56e9a1745e64b0b4edda732c2 ↗
- https://git.kernel.org/stable/c/ad8a27d63cac96bac441edd002209ebd996e12fb ↗
- https://git.kernel.org/stable/c/650bdd8fdfab64a09ee474150313dbc48c374795 ↗
- https://git.kernel.org/stable/c/b2a60f7f846faaf5c2cdad4ea6d3a33e5f863183 ↗
- https://git.kernel.org/stable/c/b493ea2765cc17cb8aa7e7544a4b6dcb05b6ed77 ↗