Una vez establecido, ¿son seguros los sockets en localhost?

9

Una vez que se ha establecido un socket TCP en localhost , y una conexión realizada usando accept , ¿es posible que un usuario sin privilegios intercepte o modifique los bytes enviados a través de esta conexión, o puede garantizarse que esta conexión sea segura? ?

Los sistemas operativos en cuestión son Windows y cualquier variación moderna en Unix. Windows es lo más importante, ya que puedo usar sockets de dominio Unix en otras plataformas.

Usaré la autenticación (clave aleatoria de 16 bytes almacenada en un archivo) para garantizar que las conexiones maliciosas se eliminen de inmediato.

    
pregunta Demi 19.12.2015 - 02:24
fuente

1 respuesta

6

Usted está seguro con respecto a la amenaza descrita, ya que, en cualquier caso, interceptar y alterar el tráfico de red a bajo nivel siempre requiere que el usuario tenga privilegios elevados en la máquina local. Si un usuario final sin privilegios no puede interceptarlo ni manipularlo, por lo tanto, puede considerar las conexiones locales como seguras .

Sin embargo, su pregunta plantea un punto interesante que me gustaría profundizar un poco, especialmente si relajamos un poco la perspectiva del "usuario final sin privilegios". De hecho, menciona Windows y Unix en su pregunta, pero la situación es bastante diferente para estos.

En Windows (y en algunos Unixes, a saber, Solaris y HP-UX), para fines de optimización (supongo) las comunicaciones de bucle invertido no pasan por una pila de IP completa. Por lo tanto, en circunstancias normales no es posible interceptar, y más aún alterar la comunicación local.

Digo " en circunstancias normales " porque todavía existe la posibilidad de forzar al host de Windows a enrutar su tráfico local a través de un enrutador cercano, lo que obliga a los datos a viajar a través de la pila IP del host completo . Esto se puede usar para investigar una comunicación que no podría ser interceptada de otra manera, sin embargo, sería necesario ser administrador de la máquina local para hacer cumplir dicho enrutamiento y la operación no será discreta en absoluto (tabla de rutas con una nueva entrada, el interruptor / enrutador que verá tráfico inusual, la aplicación que de repente se volverá muy lenta, etc.).

Alternativamente, todavía existe la posibilidad de acceder a la comunicación de socket sin formato y también hay algunos programas comerciales que ofrecen detección de IP en interfaces locales. No estoy seguro de si esa solución puede permitir que se modifique la comunicación y parece que requeriría mucho más trabajo de todos modos. Puede encontrar más información sobre el tema en el sitio web de Wireshark .

En la parte opuesta, la mayoría de los sistemas Unix y Unix implementan el loopback como cualquier otro dispositivo de red, permitiendo interceptar la comunicación que se produce en él como lo haría con cualquier otra interfaz de red, y permitiendo así al menos teóricamente que la comunicación ser alterado. Sin embargo, recuerdo que esto aún requeriría que el atacante potencial haya adquirido ya suficientes privilegios en el host, en tal punto es posible que haya formas más fáciles de explotar su aplicación.

    
respondido por el WhiteWinterWolf 19.12.2015 - 11:47
fuente

Lea otras preguntas en las etiquetas