Las interfaces físicas y sus problemas de seguridad

Fecha de publicación 08/06/2023
Autor
INCIBE (INCIBE)
Interfaces físicas

Un alto porcentaje de dispositivos desarrollados para el mundo industrial posee interfaces físicas que permiten establecer comunicaciones secundarias. Estas comunicaciones permiten la ejecución de tareas tan importantes, como la gestión de los propios dispositivos o la modificación de su forma de interactuar con los procesos industriales. Aunque para utilizar estas interfaces en la gran mayoría de los casos es necesario tener un acceso físico al dispositivo, la manipulación de este a través de dichas interfaces permite a los atacantes manipular el funcionamiento del sistema sin dejar rastro en el caso de no tener mecanismos que protejan al activo del hardware hacking.

Cuando se habla de interfaces, generalmente, se mencionan las interfaces de entrada y de salida que manejan grandes cantidades de datos, pero también existen físicas de baja velocidad que se encuentran principalmente en microcontroladores y en dispositivos, que no requieren de un alto ancho de banda. De entre estas interfaces, se pueden diferenciar dos tipos:

  • Serie. Transmiten un único bit por ciclo de reloj.
  • Paralelo. Transmiten múltiples bits por ciclo de reloj.

Un ciclo de reloj es la cantidad de tiempo entre dos pulsos de un oscilador. En general, cuanto mayor sea el número de pulsos por segundo, más rápido se podrá procesar la información.

Existen múltiples interfaces físicas, pero, en este artículo, se detallarán las principales: UART, SPI, I2C y JTAG.

UART

Un UART (Universal Asynchronous Receiver/Transmitter) es un bloque de circuitos encargado de implementar la comunicación en serie, actuando como intermediario entre las interfaces paralelo y serie. En un extremo de la UART hay un bus de ocho o más líneas de datos (más algunos pines de control), mientras que en el otro están los dos cables en serie: RX y TX.

Ilustración  UART

- UART. Fuente -

Las UART existen como circuitos integrados independientes, pero es más común encontrarlas dentro de los microcontroladores, los cuales pueden contener incluso múltiples UART. Como indican la R y la T en el acrónimo, por ser responsables de enviar y recibir datos en serie.

  • En el lado de la transmisión, debe crear el paquete de datos, añadiendo bits de sincronización y paridad, y enviar ese paquete por la línea de transmisión con una sincronización.
  • En el lado de la recepción, tiene que muestrear la línea RX a un ritmo acorde con la tasa de baudios (número de unidades de señal por segundo) esperada, recoger los bits de sincronización y mostrar los datos.

Las UART más avanzadas pueden enviar los datos recibidos a un buffer, donde pueden permanecer hasta que el microcontrolador los solicite. Estos suelen hacer uso del principio de "first-in-first-out" (FIFO) y su tamaño puede varios desde unos pocos bits, hasta miles de bytes.

En los casos en los que el microcontrolador no contiene ningún UART, se implementa por software, de modo que la interfaz puede ser modificada por bits y controlada directamente por el procesador.

placa usb a UART  
- Placa USB a UART. -

SPI

La SPI (Serial Peripheral Interface) es una interfaz con protocolo de datos en serie síncrono, desarrollado por Motorola, que actúa como un bus de interfaz, operando en full-duplex y donde los datos pueden ser enviados y recibidos simultáneamente.

SPI es capaz de operar a velocidades de transmisión de datos más rápidas que otros periféricos como por ejemplo UART e I2C, esta velocidad puede llegar a ser de 8Mbits o más. Esta ventaja se debe a que este tipo de interfaz transfiere datos sin interrupción, ya que se trata de un flujo de bits que se están enviando y recibiendo de una forma continua.

Para mantener al maestro y al esclavo (dispositivo periférico) sincronizados, SPI utiliza líneas separadas para los datos, además de un reloj compartido que funciona como una señal oscilante que le indica, al receptor, cuándo debe muestrear los bits en la línea de datos.

Ilustración de maestro y esclavo SPI  
- Maestro y esclavo SPI. Fuente -

La transmisión de bits de datos se realiza en cada ciclo de reloj, lo que significa que la velocidad de transferencia de datos está determinada por la frecuencia de la señal de reloj que genera el maestro. Estos datos, se transmiten bit a bit.

Cuando el esclavo receptor detecta la señal de reloj, se prepara para leer los bits de datos en la línea de datos. SPI se utiliza en lugares donde la velocidad es importante, como la memoria flash (por ejemplo, tarjetas SD), módulos de visualización, lugares donde la información se actualiza y cambia rápidamente (por ejemplo, sensores, termómetros), relojes en tiempo real (RTC), convertidores analógico-digitales, etc.

I2C

I2C (Inter-Integrated Circuits) combina las mejores características de SPI y de UART ya que se pueden conectar múltiples esclavos a un solo maestro (como SPI) y se pueden tener múltiples maestros controlando uno o varios esclavos. Esto es realmente útil cuando se quiere tener más de un microcontrolador registrando datos en una sola tarjeta de memoria o mostrando texto en una sola pantalla LCD. 

Al igual que la comunicación UART, I2C sólo utiliza dos hilos para transmitir datos entre dispositivos:

  • SDA (Serial Data). La línea para que el maestro y el esclavo envíen y reciban datos.
  • SCL (Serial Clock). La línea que lleva la señal de reloj.

I2C es un protocolo de comunicación en serie, por lo que los datos se transfieren bit a bit a lo largo de un único cable (la línea SDA) y, al igual que SPI, I2C es síncrono, por lo que la salida de bits está sincronizada con el muestreo de bits por una señal de reloj compartida entre el maestro y el esclavo, la cual siempre está controlada por el maestro.

Ilustración maestro y esclavo I2C  
- Maestro y esclavo I2C. Fuente -

La comunicación I2C se considera un poco más compleja que la comunicación SPI y UART. Inicialmente, el mensaje que se transmite se divide en dos tipos de tramas: una trama de dirección, y una o más tramas de datos. La trama de dirección es donde el maestro indica al esclavo a qué lugar se están enviando los datos. Puede haber más de una trama de datos compuesta por datos de ocho bits que pasan del maestro al esclavo. Después de que la línea de reloj pase a nivel bajo, los datos se colocan en la línea de datos. Estos datos se muestrean después de que la SCL pase a alto. Cuando el dispositivo maestro deja de utilizar la SCL alta y empieza a usar la SDA baja, quiere indicar a los dispositivos esclavos que la transmisión está a punto de comenzar. Si hay más de un dispositivo maestro para iniciar la comunicación a la vez, el dispositivo que sea el primero en usar SDA bajo tomará primero el control de los buses.

Módulo de visualización I2C

- Módulo de visualización I2C. Fuente -

JTAG

JTAG (Joint Test Action Group) es esencialmente un estándar que se utiliza para la verificación, la prueba y la exploración de las PCB (Printed Circuit Boards) después de su fabricación. Se trata de una interfaz que ofrece un canal para comunicarse y controlar los chips de la placa de circuito de una determinada pieza de hardware. Esta interfaz también permite depurarloen tiempo real, al permitir tomar directamente el control de los ciclos de reloj a través del software.

JTAG se introdujo en la década de 1980 con el fin de hacer que las pruebas de las placas de circuitos impresos fueran relativamente más fáciles y completas. Desde entonces, la interfaz JTAG se utiliza para todo tipo de fines, como la programación, la depuración y las pruebas. Se conecta a un puerto de acceso a pruebas en el chip, o TAP (Test Access Port), mediante el cual logra acceder a un conjunto de registros de prueba, que presentan los niveles lógicos del chip y las capacidades del dispositivo que se está probando.

Una de las aplicaciones en las que JTAG resulta muy útil es en los escaneos de límites, en los que permite probar las interconexiones presentes entre los diversos circuitos integrados o chips en la placa sin tener que conseguir o utilizar un sondeo de pruebas físicas. La principal ventaja de este escaneo es que no es necesario acceder físicamente a los pines, pero se pueden leer los valores y analizarlos como sea necesario.

Ejemplo de ataque vía interfaces físicas

Las interfaces físicas mencionadas anteriormente se están implementando cada vez más en entornos industriales, este tipo de interfaz tiene muchos beneficios, pero también tiene la desventaja de que no son lo suficientemente seguros.

Debido a la baja seguridad de estas interfaces se han creado diferentes técnicas y tecnologías que pueden producir ciberataques capaces de ocasionar grandes problemas a este tipo de interfaces.

Por ejemplo, una de esas tecnologías es el BusPirate, se trata de un microcontrolador capaz de realizar comunicaciones con los protocolos, como UART, SPI, I2C y JTAG mediante la interfaz USB provocando que se pueda realizar ciberataques de una forma sencilla.

Ilustración Bus pirate  
 

- Bus pirate. Fuente -

Contramedidas y conclusiones

Ahora bien, proteger las interfaces no es una tarea sencilla, y menos si son accedidas físicamente. La manera más eficaz para protegerlas es mediante el uso de otras placas físicas que ejercerán como capa intermedia entre las interfaces y el dispositivo. Estas placas contienen un chip FTDI mediante el cual se pueden comunicar a través de los protocolos más utilizados y poder, así, interpretar y analizar todo el tráfico de estos.

En caso de no disponer de estas placas de seguridad, se pueden aplicar medidas por medio de software. Esta opción funciona especialmente bien en dispositivos IoT, pero pierde eficacia si se trata de dispositivos embebidos, por lo que esta opción solo se recomienda en caso de no poder instalar algún dispositivo de seguridad físico como las placas recién mencionadas.

En definitiva, las interfaces físicas pasan a menudo desapercibidas y se da una baja prioridad a la hora de establecer medidas de ciberseguridad en la mayoría de infraestructuras y, la realidad es que son una herramienta muy potente y mediante la cual un atacante podría llegar a realizar muchas operaciones, que pondrían en riesgo la confidencialidad de la empresa, e incluso la seguridad física de los trabajadores.