Aprender sobre la seguridad de UART y RS232 [cerrado]

0

Estoy tratando de aprender sobre UART y los problemas y soluciones relacionados.

IIUC, UART es un hardware, RS232 es una interfaz e hiperterminal es un programa. ¿Podrían estas partes trabajar juntas?

Le pregunté a un profesor experto en CS que lo ilustró con un caso de uso de la aplicación en el que entendí algunos, pero no todos.

Adjunto la ilustración de la descripción donde comprendo algunas pero no todas.

Quiero entenderlo todo. Por favor corrígeme si me equivoco

  1. ¿Por qué es relevante una cola de mensajes? Parece una matriz de msg?

  2. ¿Por qué es relevante S (tamaño de memoria)?

  3. ¿Por qué es relevante la diferencia entre DMA y MMI? ¿Es porque DMA pasa por alto la CPU y, por lo tanto, no se puede confiar en la CPU por seguridad?

  4. ¿Es ETH Ethernet y podría ser vía UART o solo UART? ¿El hiperterminio y los ejemplos estándar de I / O y TTY de UART?

Leeré más fuentes en línea, por supuesto.

K significa un archivo clave que no debería ser accesible y la conexión Ethernet, IIUC, es un ejemplo de conexión periférica a través de UART.

Se supone que P significa un puntero. Vago la hipótesis de que se trata de obtener un puntero a una parte de la RAM que se supone que es segura.

¿Puedes ayudarme a entender?

    

1 respuesta

2

RS232 es una especificación eléctrica y de conector para la forma en que los voltajes se interpretan como 1 o 0, y cómo se conectan, nada más.

Un UART básicamente realiza la conversión paralela a la serie y agrega (y elimina) una cantidad bastante mínima de trama alrededor de los bytes (generalmente) que envía, su interfaz con el procesador suele ser un registro de memoria mapeada y una interrupción o sondeo , DMA como tal sería poco común pero posible, uart serial generalmente no es tan rápido. No hay nada que requiera que RS232 sea una serie asíncrona desde un UART (pero generalmente lo es) o que un UART finalmente conduzca a RS232.

Hyperterminal es un programa que se puede configurar para hablar con un puerto serie, pero no puedes asumir que es el único vector de ataque.

El lugar donde encontrará vulnerabilidades de software es en los niveles más altos de cualquier protocolo que esté transportando a través del enlace RS232, por ejemplo, podría estar llevando TCP / IP encapsulado como SLIP sobre ese enlace, que es una gran superficie de ataque incluso si La aplicación de alto nivel es algo simple. El UART y la docena de líneas de código que leen bytes y los meten en el búfer de anillo rx rara vez son el problema, son todas las cosas complejas que suceden después. En el mejor de los casos, puedo convencer a algunas de las cosas de mayor nivel para que se bloqueen, posiblemente el desarrollador haya dejado una aserción con el volcado configurado en el puerto serie ... ¡El juego está activado!

Para las vulnerabilidades de hardware, estaría pensando en ataques de canal lateral, ya sea mirando el ruido en las líneas de señal (se puede usar para estimar el consumo de energía del procesador, que con criptografía mal hecha puede filtrar información clave). Posiblemente podría abusar de un diodo de protección de entrada para forzar la fuente de alimentación del procesador fuera de tolerancia, tal vez aprendo algo útil ... Tal vez pueda aplicar algo de RF al puerto serie y obtener un bloqueo de esa manera, tal vez aplique RF, detecte la fuga en los cables de alimentación y descubra que está modulada en fase de una manera que filtra información, hay muchas cosas que probar. He estado allí, hecho eso.

Puede encontrar interesante una charla dada en 29C3 por Timo titulada "Ordeñar la vaca digital" (se encuentra en youtube, así como en los archivos de CCC), ya que demuestra un ataque de canal lateral en el mundo real.

    
respondido por el Dan Mills

Lea otras preguntas en las etiquetas