¿Cuáles son los riesgos de cargar y descargar datos en formato binario (no codificado) a servidores y navegadores?

0

Admito por adelantado que esta pregunta puede ser el resultado de una paranoia infundada. Pero me preocupa que cargar y descargar datos en forma binaria abre la puerta a explotaciones que podrían no ser posibles si los datos se codificaran durante la transferencia y se decodificaran en el destino.

Estipularé definiciones porque veo que el término "binario" está muy difundido y no estoy seguro de que todos tengan el mismo significado al usarlo. Cuando digo "binario" en el contexto de esta pregunta, me refiero a un flujo de bytes que puede tener los bits de alto orden establecidos en al menos algunos de esos bytes. No me refiero a un flujo de bytes que simplemente representa datos binarios, como la codificación base64.

Estoy imaginando que en los niveles más bajos de algunos posibles protocolos de red utilizados para las transferencias de datos de Internet, puede haber varios "apretones de manos" que utilizan bytes con bits de orden superior establecidos. Si esto fuera cierto, entonces un servidor web o navegador que acepte flujos de datos de 8 bits arbitrarios podría volverse vulnerable a algunas formas de ataques que emplean algún tipo de "dopaje de saludo" o similar.

Podría estar de acuerdo en que en el servidor web / navegador "nivel" de la jerarquía de transmisión de datos, quizás este problema sea irrelevante. Eso es lo que quiero saber: ¿Es una "conexión" de la web (intercambio de información y transferencias de datos asociadas) inmune a la manipulación de esta manera?

El escenario en el que estoy pensando podría resultar si un navegador o servidor ha estado funcionando durante algún tiempo y sus tablas de páginas de datos internos se han saturado y posiblemente corrompido, tal vez por algún defecto menor en javascript o perl (¿cómo me atrevo a insinuar eso? !). En ese momento, parece que los navegadores y servidores podrían volverse particularmente vulnerables. (Y estoy de acuerdo en que el uso de un sistema operativo confiable y un software confiable ayudará mucho a prevenir este y otros espectáculos de horror).

No estoy pidiendo consejo sobre salvaguardas y recuperación; Solo pregunto si existe la posibilidad del tipo de escenario que sugiero.

    
pregunta Phelonius 29.07.2013 - 08:19
fuente

1 respuesta

1

En la red, los bytes son enviados y recibidos. Lo que representan estos bytes es una cuestión de convención entre el cliente y el servidor. Sin embargo, si el cliente y el servidor utilizan algún tipo de codificación abierta (por ejemplo, Base64) que todos conocen, entonces es fácil para cualquier atacante intermedio aplicar y desaplicar esa codificación a voluntad. Así que esto tendrá cero beneficio para la seguridad.

Si la codificación utiliza una convención secreta entre el cliente y el servidor, ingresamos al ámbito de la criptografía y luego "depende".

No hay nada intrínsecamente tóxico en los "datos binarios"; Por el contrario, no hay nada domesticado en "personajes". Los bytes son bytes. Si algún código tiene problemas con los bytes arbitrarios, que no tendría con los "caracteres", esto significa que el código en cuestión está interpretando los bytes en bruto como caracteres, y eso es un error. Puede llamarlo "tablas de páginas de datos corruptas" si lo desea; no cambia las cosas de ninguna manera: un error es un error. No ocurre por acumulación de tiempo; Se produce a través de errores de programación o errores de hardware. No hay un valor de byte que haga que estos problemas sean más probables que cualquier otro.

Lo que hace más probables los errores son suposiciones injustificadas de programadores descuidados . P.ej. un programador que espera, en su código, algunos bytes que representan caracteres , y que no ingrese ningún código para tratar con bytes nulos u otros datos entrantes "no válidos". Ese es el trato con los atacantes: no siempre siguen las reglas de codificación. No hay ninguna cosa de codificación que proteja a un programador descuidado contra el descuido. Existen herramientas que mitigarán las consecuencias, por ejemplo, lenguajes de programación que comprueban los límites de la matriz y aplican una tipificación fuerte pero estos operan a otro nivel.

    
respondido por el Tom Leek 29.07.2013 - 15:34
fuente

Lea otras preguntas en las etiquetas