Bluetooth: L2CAP: fix chan mode for LE_CONN_REQ + EXT_FLOWCTL pchan
- 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
- Fix
- Fixed in 5.10.271, 5.15.222, 6.1.189, 6.6.158, 6.12.111, and 2 more
- 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: Bluetooth: L2CAP: fix chan mode for LE_CONN_REQ + EXT_FLOWCTL pchan l2cap_new_connection() sets default value of channel mode to match the parent channel. l2cap_le_connect_req() left this at the default, and created L2CAP_MODE_EXT_FLOWCTL channels if listening pchan has that mode. This causes FLAG_DEFER_SETUP channels to reply to L2CAP_LE_CONN_REQ with L2CAP_ECRED_CONN_RSP, which is incorrect. It can also result to stack OOB write (of l2cap_alloc_cid determined values) in l2cap_ecred_rsp_defer(), as l2cap_le_connect_req() does not limit maximum number of deferred channels or check for duplicate ident. Fix by setting chan->mode correctly in l2cap_le_connect_req(). Also check channel mode in l2cap_ecred_rsp_defer(), and do WARN_ON_ONCE instead of OOB write to make it less brittle.
Timeline
- CVE published
- Record last updated
Affected versions
- Linux Linux
From 15f02b91056253e8cdc592888f431da0731337b8 · fixed in ad0f44a3f1f688558ed876a0702bc2c82b0df689; From 15f02b91056253e8cdc592888f431da0731337b8 · fixed in 564ae0e05e598aa895b9dbd18cb7d6eb64752869; From 15f02b91056253e8cdc592888f431da0731337b8 · fixed in aab17938998b29e75c3324763411aef3e300fc67; From 15f02b91056253e8cdc592888f431da0731337b8 · fixed in 0e1fc7cab95ad958e55d70a5dfaaea687c9c639f; From 15f02b91056253e8cdc592888f431da0731337b8 · fixed in 1074bcc57f741223f9fa82ce6afe5c3d783e4d10; From 15f02b91056253e8cdc592888f431da0731337b8 · fixed in 5d5a625cbc854d4c4f68e4b16fcf6e682d9a9ed1; From 15f02b91056253e8cdc592888f431da0731337b8 · fixed in 6cb79e6499228cfdbd4b3301371ce74d01cd2f80; From 15f02b91056253e8cdc592888f431da0731337b8 · fixed in 4ef05db5b08b176a551b4a6287372045998806b0
- Linux Linux
5.7
- KernelLinux
From 5.7.0 · fixed in 5.10.271; From 5.11.0 · fixed in 5.15.222; From 5.16.0 · fixed in 6.1.189; From 6.2.0 · fixed in 6.6.158; From 6.7.0 · fixed in 6.12.111; From 6.13.0 · fixed in 6.18.53; From 6.19.0 · fixed in 7.2.7
References 8
git.kernel.org
- stable/c/ad0f44a3f1f688558ed876a0702bc2c82b0df689
- stable/c/564ae0e05e598aa895b9dbd18cb7d6eb64752869
- stable/c/aab17938998b29e75c3324763411aef3e300fc67
- stable/c/0e1fc7cab95ad958e55d70a5dfaaea687c9c639f
- stable/c/1074bcc57f741223f9fa82ce6afe5c3d783e4d10
- stable/c/5d5a625cbc854d4c4f68e4b16fcf6e682d9a9ed1
- stable/c/6cb79e6499228cfdbd4b3301371ce74d01cd2f80
- stable/c/4ef05db5b08b176a551b4a6287372045998806b0