¿Cómo se modifica el campo TLS contra la longitud del encabezado que se está modificando?

3

Sé que esta pregunta parece muy tonta, pero me ha estado molestando por un tiempo y no puedo dar una respuesta por mi cuenta. Así que, aquí va ...

Los paquetes en el protocolo TLS consisten en un encabezado de 5 bytes seguido de datos que se cifran una vez que se realiza el protocolo de enlace. El encabezado de 5 bytes siempre se transmite en claro y también contiene un campo de longitud de 2 bytes.

Ahora, el atacante MiTM solo puede modificar el campo de longitud solo en el encabezado, por lo que la parte receptora termina esperando una gran cantidad de datos, incluso después de recibir la cantidad real de bytes enviados originalmente por el interlocutor. Por ejemplo: digamos que el lado igual ha enviado un paquete de 20 bytes, y el atacante MiTM simplemente modifica el campo de longitud del encabezado para que sea de 65535 bytes. Ahora, si el interlocutor no envía otros datos, la parte receptora esperará indefinidamente para recibir los 65515 bytes (65535-20) que nunca se enviaron en primer lugar.

El TLS incluye el encabezado en el cálculo de MAC, por lo que cualquier manipulación del encabezado dará lugar a un fallo y al cierre efectivo de la conexión. Pero, ¿cómo se resuelve el caso de bloqueo en socket para recibir datos?

El receptor puede evitarlo mediante el uso de sockets no bloqueadores con select (nuevamente, la selección debería tener un tiempo de espera) o el uso del timeout con sockets. Pero, ¿qué tal el caso de bloqueo de sockets? ¿Hay alguna forma de evitar el bloqueo del lado receptor en el zócalo?

    
pregunta Jay 01.05.2013 - 16:15
fuente

1 respuesta

3

Un atacante que puede modificar los encabezados de registro TLS puede bloquear paquetes por completo, haciendo que el receptor espere "indefinidamente". No hay nada que el protocolo TLS pueda hacer para evitarlo.

TLS implementations puede usar estrategias de tiempo de espera, es decir, si no se ha recibido ninguna actividad del interlocutor durante algún tiempo (por ejemplo, 15 segundos), la conexión se puede interrumpir automáticamente. Esto es necesario de todos modos para manejar el caso de que los clientes se bloqueen: cuando una máquina falla, deja de enviar paquetes, pero no indica que ya no puede enviar paquetes, ya que se bloquea.

Es una propiedad genérica de TLS. TLS no intenta recuperar de una falla de transporte; simplemente intenta detectar de manera confiable las alteraciones . Los atacantes siempre pueden cortar el alambre o posponer el tráfico por un tiempo arbitrario. En este sentido, los registros TLS se consideran "transporte" al igual que la conexión TCP subyacente. El MAC utilizado en los registros es donde se produce la detección, y cubre el registro payloads solamente.

    
respondido por el Tom Leek 01.05.2013 - 16:34
fuente

Lea otras preguntas en las etiquetas