Control de acceso a servicios Bluetooth

BR/EDR

BLE

Los servicios de Bluetooth tienen una serie de permisos de manera que se puede limitar la manera de interactuar con ellos, si hace falta autenticacion previa o si se pueden leer o escribir.

Para cada servicio Bluetooth expuesto en un dispositivo es necesario verificar si se ha implementado correctamente el control de acceso.

Esto se debe a que el estándar está enfocado a la interconectividad y por tanto hay servicios de perfiles en los que prima la interconectividad y deben de permitir el acceso sin autenticación como puede ser el caso del servicio del perfil GATT.

Un dispositivo, debido al intercambio de características (Feature Exchange), podría haber necesitado cifrado para establecer la conexión y acceder al perfil GATT. Sin embargo, dado que existen varios tipos de cifrado, es posible que no brinde un nivel de seguridad suficiente para acceder a un Servicio que requiera una mayor protección. Del mismo modo, puede ocurrir que, para acceder a ciertas funcionalidades expuestas en un servicio desde el perfil de atributos general, sea necesario incluso elevar el nivel de cifrado, pasando de la Phase 2 a la Phase 3 del emparejamiento, con el fin de acceder a dicho Servicio.

Por ello es importante verificar la cifrado configurada para cada nivel de seguridad implementado en el dispositivo.

Descripción del proceso

Para realizar esta verificación, es necesario elaborar una lista de los dispositivos disponibles BSAM-SE-01 (Servicios SDP Bluetooth ocultos) y BSAM-SE-02 (Servicios GATT Bluetooth ocultos).

Para cada servicio expuesto, es necesario realizar una comprobación sobre qué recursos se pueden acceder y modificar. Esto requiere cierta adaptación para cumplir con los protocolos que exponen el servicio. Algunos ejemplos ilustran esta necesidad:

  • Para cualquier servicio GATT se debe verificar si los atributos se pueden leer, escribir o notificar según nuestro nivel de seguridad y autenticación. Para cada resultado se debe considerar si ese acceso es adecuado o no según los datos que expone.
  • Para cada RFCOMM, se debe verificar si un usuario puede leer o escribir en ese servicio para cada nivel de seguridad disponible en ese servicio. Se debe evaluar si los datos expuestos son adecuados para el nivel de seguridad y autenticación.
  • Para el protocolo SDP, se debe verificar si es correcto obtener acceso al servicio sin autenticación y/o cifrado a nivel de Bluetooth.
  • Es importante verificar qué funcionalidades del protocolo SMP se pueden acceder sin autenticación y/o cifrado a nivel de Bluetooth.

Recursos relacionados

Para verificar este control, los siguientes recursos pueden ser útiles:

ID Descripción
BSAM-SE-01 Servicios SDP Bluetooth ocultos
BSAM-SE-02 Servicios GATT Bluetooth ocultos

Otra documentación relacionada:

ID Descripción
Documentación Modo de conexión en Bluetooth LE

Caso de ejemplo

Se va a comprobar la correcta configuración (lectura / escritura) de los servicios GATT en un dispositivo con conectividad BLE. Las pruebas se llevarán a cabo con un ordenador que se conectará (sin autorización, sin autenticación y sin cifrado) al un dispositivo. Usaremos Wireshark con BTVS (btvs.exe -Mode wireshark) para realizar la captura de paquetes para su análisis.

El perfil GATT describe la forma en que se intercambian datos con los perfiles (Profile). En él, se definen los Profile, que agrupan un conjunto de servicios (Service). Estos Service, a su vez, están compuestos por características (Characteristic), y estas Characteristic poseen descriptores (Descriptor).

Los permisos para leer, escribir o realizar acciones específicas con cada servicio y característica depende de la autorización, autenticación y cifrado. Estos requisitos (autorización, autenticación y cifrado) son específicos de cada dispositivo y los fijó el desarrollador del mismo.

El controlador de Bluetooth internamente lista los servicios GATT mediante el campo Handle o UUID. El estándar ha limitado, para un dispositivo, el número de servicios, características y descriptores a 65.535 (0xFFFF), equivalente a recorrer desde el valor 1 hasta el 65.535 (0xFFFF) el Handle. A cada Handle le corresponde un UUID y viceversa. Hay una lista de UUIDs asociados a una función concreta en el documento del SIG de Bluetooth Assigned Numbers.

Se conecta el ordenador a el dispositivo y se realiza una petición de Lectura y Escritura para cada Handle con Scapy, o alguna herramienta similar.Los posibles casos de respuesta a una petición de lectura / escritura, según el protocolo ATT, permitirán saber la configuración de cada Handle.

Las respuestas a una petición de lectura pueden ser:

Respuesta Descripción
Respuesta afirmativa a la lectura El Handle es legible sin permisos
Error por Autorización insuficiente El Handle necesita autorización para ser leído
Error por Autenticación insuficiente El Handle necesita autenticación para ser leído
Error por longitud de clave de cifrado demasiado corta El Handle necesita un cifrado con una contraseña más larga
Error por cifrado insuficiente El Handle necesita un nivel de cifrado superior (i.e., pasar de emparejamiento Legacy a Secure)
Error por Handle invalido El Handle no existe
Error por lectura no permitida El Handle no es legible

Las respuestas a una petición de escritura pueden ser:

Respuesta Descripción
Respuesta afirmativa a la Escritura El Handle se puede escribir sin permisos
Error por longitud invalida El Handle se puede escribir pero la longitud es incorrecta
Error por Autorización insuficiente Se necesita estar autorizado para escribir el Handle
Error por Autenticación insuficiente Se necesita estar autenticado para escribir el Handle
Error por longitud de clave de cifrado demasiado corta Se necesita una clave más larga para escribir en el Handle
Error por cifrado insuficiente Se necesita tener un nivel de cifrado superior para escribir el Handle (i.e., pasar de emparejamiento Legacy a Secure)
Error por Handle invalido El Handle no existe
Error por lectura no permitida El Handle no se puede escribir

Se comprueba para el dispositivo que cada configuración es correcta, cotejándolo con el documento Assigned Numbers del SIG de Bluetooth con la guía de seguridad Bluetooth del NIST.

El resultado del control será FAIL cuando un Handle tenga los permisos incorrectos para el tipo de operación asignada en función del tipo de dispositivo según las especificaciones del NIST.

Referencias externas

  • Bluetooth Core V5.3, Vol. 3, Part H, Section 2 SECURITY MANAGER
  • Bluetooth Core V5.3, Vol. 3, Part H, Section 2.1 INTRODUCTION
  • Bluetooth Core V5.3, Vol. 3, Part H, Section 3 SECURITY MANAGER PROTOCOL
  • Bluetooth Core V5.3, Vol. 3, Part H, Section 3.6 SECURITY IN BLUETOOTH LOW ENERGY