Re: [PATCH v3 1/2] Bluetooth: SMP: honor local HIGH security when selecting legacy pairing method

From: Luiz Augusto von Dentz

Date: Mon Mar 30 2026 - 12:28:56 EST


Hi @Christian Eggers,

On Mon, Mar 30, 2026 at 11:33 AM Oleh Konko <security@xxxxxxxxx> wrote:
>
> tk_request() currently forces JUST_CFM whenever the remote auth_req
> omits SMP_AUTH_MITM. That ignores the local pending_sec_level, even
> though the responder may still require BT_SECURITY_HIGH.
>
> The pairing-request path already rejects JUST_WORKS/JUST_CFM when
> pending_sec_level >= BT_SECURITY_HIGH, so letting tk_request() ignore the
> local MITM requirement can make method selection inconsistent with the
> policy the stack already enforces.
>
> Only select JUST_CFM when the remote does not request MITM and the local
> side does not require HIGH security. Otherwise, derive the method from
> the IO capability table.
>
> Fixes: 2b64d153a0cc ("Bluetooth: Add MITM mechanism to LE-SMP")
> Cc: stable@xxxxxxxxxxxxxxx
> Suggested-by: Luiz Augusto von Dentz <luiz.dentz@xxxxxxxxx>
> Signed-off-by: Oleh Konko <security@xxxxxxxxx>
> ---
> net/bluetooth/smp.c | 13 +++++++------
> 1 file changed, 7 insertions(+), 6 deletions(-)
>
> diff --git a/net/bluetooth/smp.c b/net/bluetooth/smp.c
> index e67bf7b34ea..a9fb9b513d6 100644
> --- a/net/bluetooth/smp.c
> +++ b/net/bluetooth/smp.c
> @@ -863,13 +863,14 @@ static int tk_request(struct l2cap_conn *conn, u8 remote_oob, u8 auth,
> bt_dev_dbg(hcon->hdev, "auth:%u lcl:%u rem:%u", auth, local_io,
> remote_io);
>
> - /* If neither side wants MITM, either "just" confirm an incoming
> - * request or use just-works for outgoing ones. The JUST_CFM
> - * will be converted to JUST_WORKS if necessary later in this
> - * function. If either side has MITM look up the method from the
> - * table.
> + /* If the remote doesn't request MITM and the local side doesn't
> + * require HIGH security, either "just" confirm an incoming request
> + * or use just-works for outgoing ones. The JUST_CFM will be
> + * converted to JUST_WORKS if necessary later in this function.
> + * Otherwise, look up the method from the table.
> */
> - if (!(auth & SMP_AUTH_MITM))
> + if (!(auth & SMP_AUTH_MITM) &&
> + hcon->pending_sec_level < BT_SECURITY_HIGH)
> smp->method = JUST_CFM;
> else
> smp->method = get_auth_method(smp, local_io, remote_io);
> --
> 2.50.0

Do you have any capacity to test if such change affects any SMP test with PTS?

--
Luiz Augusto von Dentz