]> git.hungrycats.org Git - linux/commitdiff
Bluetooth: hci_event: Align BR/EDR JUST_WORKS paring with LE
authorLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
Thu, 12 Sep 2024 16:17:00 +0000 (12:17 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 10 Oct 2024 10:01:05 +0000 (12:01 +0200)
commit b25e11f978b63cb7857890edb3a698599cddb10e upstream.

This aligned BR/EDR JUST_WORKS method with LE which since 92516cd97fd4
("Bluetooth: Always request for user confirmation for Just Works")
always request user confirmation with confirm_hint set since the
likes of bluetoothd have dedicated policy around JUST_WORKS method
(e.g. main.conf:JustWorksRepairing).

CVE: CVE-2024-8805
Cc: stable@vger.kernel.org
Fixes: ba15a58b179e ("Bluetooth: Fix SSP acceptor just-works confirmation without MITM")
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Tested-by: Kiran K <kiran.k@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
net/bluetooth/hci_event.c

index b2053bbe226c8c60515437c26f1480e93e82b5ae..f47da4aa0d708c215b3750afccddb660f2d34d97 100644 (file)
@@ -5325,19 +5325,16 @@ static void hci_user_confirm_request_evt(struct hci_dev *hdev, void *data,
                goto unlock;
        }
 
-       /* If no side requires MITM protection; auto-accept */
+       /* If no side requires MITM protection; use JUST_CFM method */
        if ((!loc_mitm || conn->remote_cap == HCI_IO_NO_INPUT_OUTPUT) &&
            (!rem_mitm || conn->io_capability == HCI_IO_NO_INPUT_OUTPUT)) {
 
-               /* If we're not the initiators request authorization to
-                * proceed from user space (mgmt_user_confirm with
-                * confirm_hint set to 1). The exception is if neither
-                * side had MITM or if the local IO capability is
-                * NoInputNoOutput, in which case we do auto-accept
+               /* If we're not the initiator of request authorization and the
+                * local IO capability is not NoInputNoOutput, use JUST_WORKS
+                * method (mgmt_user_confirm with confirm_hint set to 1).
                 */
                if (!test_bit(HCI_CONN_AUTH_PEND, &conn->flags) &&
-                   conn->io_capability != HCI_IO_NO_INPUT_OUTPUT &&
-                   (loc_mitm || rem_mitm)) {
+                   conn->io_capability != HCI_IO_NO_INPUT_OUTPUT) {
                        bt_dev_dbg(hdev, "Confirming auto-accept as acceptor");
                        confirm_hint = 1;
                        goto confirm;