Description
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.
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
15f02b91056253e8cdc592888f431da0731337b8 to < ad0f44a3f1f688558ed876a0702bc2c82b0df689affected15f02b91056253e8cdc592888f431da0731337b8 to < 564ae0e05e598aa895b9dbd18cb7d6eb64752869affected15f02b91056253e8cdc592888f431da0731337b8 to < aab17938998b29e75c3324763411aef3e300fc67affected15f02b91056253e8cdc592888f431da0731337b8 to < 0e1fc7cab95ad958e55d70a5dfaaea687c9c639faffected15f02b91056253e8cdc592888f431da0731337b8 to < 1074bcc57f741223f9fa82ce6afe5c3d783e4d10affected15f02b91056253e8cdc592888f431da0731337b8 to < 5d5a625cbc854d4c4f68e4b16fcf6e682d9a9ed1affected15f02b91056253e8cdc592888f431da0731337b8 to < 6cb79e6499228cfdbd4b3301371ce74d01cd2f80affected15f02b91056253e8cdc592888f431da0731337b8 to < 4ef05db5b08b176a551b4a6287372045998806b0affected
Linux Linux
Default version status: affected
5.7affected0 to < 5.7unaffected5.10.271 to ≤ 5.10.*unaffected5.15.222 to ≤ 5.15.*unaffected6.1.189 to ≤ 6.1.*unaffected6.6.158 to ≤ 6.6.*unaffected6.12.111 to ≤ 6.12.*unaffected6.18.53 to ≤ 6.18.*unaffected7.2.7 to ≤ 7.2.*unaffected7.3 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/ad0f44a3f1f688558ed876a0702bc2c82b0df689 ↗
- https://git.kernel.org/stable/c/564ae0e05e598aa895b9dbd18cb7d6eb64752869 ↗
- https://git.kernel.org/stable/c/aab17938998b29e75c3324763411aef3e300fc67 ↗
- https://git.kernel.org/stable/c/0e1fc7cab95ad958e55d70a5dfaaea687c9c639f ↗
- https://git.kernel.org/stable/c/1074bcc57f741223f9fa82ce6afe5c3d783e4d10 ↗
- https://git.kernel.org/stable/c/5d5a625cbc854d4c4f68e4b16fcf6e682d9a9ed1 ↗
- https://git.kernel.org/stable/c/6cb79e6499228cfdbd4b3301371ce74d01cd2f80 ↗
- https://git.kernel.org/stable/c/4ef05db5b08b176a551b4a6287372045998806b0 ↗