]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
4.14-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 23 Oct 2023 09:33:34 +0000 (11:33 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 23 Oct 2023 09:33:34 +0000 (11:33 +0200)
added patches:
bluetooth-hci_event-fix-using-memcmp-when-comparing-keys.patch

queue-4.14/bluetooth-hci_event-fix-using-memcmp-when-comparing-keys.patch [new file with mode: 0644]
queue-4.14/series

diff --git a/queue-4.14/bluetooth-hci_event-fix-using-memcmp-when-comparing-keys.patch b/queue-4.14/bluetooth-hci_event-fix-using-memcmp-when-comparing-keys.patch
new file mode 100644 (file)
index 0000000..d85dc64
--- /dev/null
@@ -0,0 +1,69 @@
+From b541260615f601ae1b5d6d0cc54e790de706303b Mon Sep 17 00:00:00 2001
+From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
+Date: Thu, 5 Oct 2023 13:59:59 -0700
+Subject: Bluetooth: hci_event: Fix using memcmp when comparing keys
+
+From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
+
+commit b541260615f601ae1b5d6d0cc54e790de706303b upstream.
+
+memcmp is not consider safe to use with cryptographic secrets:
+
+ 'Do  not  use memcmp() to compare security critical data, such as
+ cryptographic secrets, because the required CPU time depends on the
+ number of equal bytes.'
+
+While usage of memcmp for ZERO_KEY may not be considered a security
+critical data, it can lead to more usage of memcmp with pairing keys
+which could introduce more security problems.
+
+Fixes: 455c2ff0a558 ("Bluetooth: Fix BR/EDR out-of-band pairing with only initiator data")
+Fixes: 33155c4aae52 ("Bluetooth: hci_event: Ignore NULL link key")
+Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ net/bluetooth/hci_event.c |   12 +++++++-----
+ 1 file changed, 7 insertions(+), 5 deletions(-)
+
+--- a/net/bluetooth/hci_event.c
++++ b/net/bluetooth/hci_event.c
+@@ -25,6 +25,8 @@
+ /* Bluetooth HCI event handling. */
+ #include <asm/unaligned.h>
++#include <linux/crypto.h>
++#include <crypto/algapi.h>
+ #include <net/bluetooth/bluetooth.h>
+ #include <net/bluetooth/hci_core.h>
+@@ -3505,7 +3507,7 @@ static void hci_link_key_notify_evt(stru
+               goto unlock;
+       /* Ignore NULL link key against CVE-2020-26555 */
+-      if (!memcmp(ev->link_key, ZERO_KEY, HCI_LINK_KEY_SIZE)) {
++      if (!crypto_memneq(ev->link_key, ZERO_KEY, HCI_LINK_KEY_SIZE)) {
+               bt_dev_dbg(hdev, "Ignore NULL link key (ZERO KEY) for %pMR",
+                          &ev->bdaddr);
+               hci_disconnect(conn, HCI_ERROR_AUTH_FAILURE);
+@@ -3991,8 +3993,8 @@ static u8 bredr_oob_data_present(struct
+                * available, then do not declare that OOB data is
+                * present.
+                */
+-              if (!memcmp(data->rand256, ZERO_KEY, 16) ||
+-                  !memcmp(data->hash256, ZERO_KEY, 16))
++              if (!crypto_memneq(data->rand256, ZERO_KEY, 16) ||
++                  !crypto_memneq(data->hash256, ZERO_KEY, 16))
+                       return 0x00;
+               return 0x02;
+@@ -4002,8 +4004,8 @@ static u8 bredr_oob_data_present(struct
+        * not supported by the hardware, then check that if
+        * P-192 data values are present.
+        */
+-      if (!memcmp(data->rand192, ZERO_KEY, 16) ||
+-          !memcmp(data->hash192, ZERO_KEY, 16))
++      if (!crypto_memneq(data->rand192, ZERO_KEY, 16) ||
++          !crypto_memneq(data->hash192, ZERO_KEY, 16))
+               return 0x00;
+       return 0x01;
index 81ac4b3226e67e590ca47938a5f8b6ee353192a6..06a8fc7973f539289e7fa0a0f84aa385be1f2f91 100644 (file)
@@ -63,3 +63,4 @@ s390-pci-fix-iommu-bitmap-allocation.patch
 gpio-vf610-set-value-before-the-direction-to-avoid-a-glitch.patch
 bluetooth-hci_sock-fix-slab-oob-read-in-create_monitor_event.patch
 bluetooth-hci_sock-correctly-bounds-check-and-pad-hci_mon_new_index-name.patch
+bluetooth-hci_event-fix-using-memcmp-when-comparing-keys.patch