Bluedroid: Do not initiate/accept connection with device having same BDADDR.

Added BD_ADDR comparison in l2cu_lcp_allocate and removed check from
security connection request handler as it's handled in l2cu_lcp_allocate
for both connection request and create connection.
pull/6634/head
Chinmay Chhajed 2021-02-03 18:55:17 +05:30
rodzic 5596f37af1
commit fb3a382fe4
2 zmienionych plików z 11 dodań i 9 usunięć

Wyświetl plik

@ -2630,15 +2630,6 @@ void btm_sec_conn_req (UINT8 *bda, UINT8 *dc)
return;
}
/* Check if peer device's and our BD_ADDR is same or not. It
should be different to avoid 'Impersonation in the Pin Pairing
Protocol' (CVE-2020-26555) vulnerability. */
if (memcmp((uint8_t *)bda, (uint8_t *)&controller_get_interface()->get_address()->address, sizeof (BD_ADDR)) == 0) {
BTM_TRACE_ERROR ("Security Manager: connect request from device with same BD_ADDR");
btsnd_hcic_reject_conn (bda, HCI_ERR_HOST_REJECT_DEVICE);
return;
}
/* Security guys wants us not to allow connection from not paired devices */
/* Check if connection is allowed for only paired devices */

Wyświetl plik

@ -58,6 +58,17 @@ tL2C_LCB *l2cu_allocate_lcb (BD_ADDR p_bd_addr, BOOLEAN is_bonding, tBT_TRANSPOR
if(p_lcb != NULL) {
list_ret = true;
}
#if (CLASSIC_BT_INCLUDED == TRUE)
/* Check if peer device's and our BD_ADDR is same or not. It
should be different to avoid 'Impersonation in the Pin Pairing
Protocol' (CVE-2020-26555) vulnerability. */
if (memcmp((uint8_t *)p_bd_addr, (uint8_t *)&controller_get_interface()->get_address()->address, sizeof (BD_ADDR)) == 0) {
L2CAP_TRACE_ERROR ("%s connection rejected due to same BD ADDR", __func__);
return (NULL);
}
#endif
if(p_lcb == NULL && list_length(l2cb.p_lcb_pool) < MAX_L2CAP_LINKS) {
p_lcb = (tL2C_LCB *)osi_malloc(sizeof(tL2C_LCB));
if (p_lcb) {