nfc: llcp: Fix use-after-free race in nfc_llcp_recv_cc()
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
Summary
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().
Timeline
- CVE published
- Record last updated
Affected versions
- Linux Linux
Version range not reported
- Linux Linux
3.6
References 8
git.kernel.org
- stable/c/dce85215a6c7b0fd753f577a4c487f647119884c
- stable/c/bd08bb7443c501d2f2a71d529e4afcf11c9b07d2
- stable/c/0b45c31746e1523d5d482fda8fcf54a35ac417f1
- stable/c/ee2d1a8a1833c5e56e9a1745e64b0b4edda732c2
- stable/c/ad8a27d63cac96bac441edd002209ebd996e12fb
- stable/c/650bdd8fdfab64a09ee474150313dbc48c374795
- stable/c/b2a60f7f846faaf5c2cdad4ea6d3a33e5f863183
- stable/c/b493ea2765cc17cb8aa7e7544a4b6dcb05b6ed77