¿Cuáles son los riesgos potenciales de vincular una aplicación a una dirección IP o nombre de host que no controla?

0

Al configurar cualquier tipo de aplicación de servidor (como un servidor web, un servidor IRC, etc.), generalmente puede vincular la aplicación a direcciones IP o nombres de host particulares. Esto le dice a la aplicación que 'escuche' en esas direcciones.

Si tuviera que enlazar a una dirección IP que no controlo, ¿cuáles serían los posibles riesgos de seguridad? Por supuesto, ninguna solicitud alcanzaría mi solicitud, pero ¿podría haber otros riesgos o casos extremos?

En lo que respecta al enlace a un nombre de host, en algunos casos es probable que se envíe una consulta de DNS del nombre de host, lo que resultaría en la devolución de información de registro de DNS potencialmente maliciosa, así como en la divulgación de información / violaciones de privacidad, etc. ¿Hay otros riesgos aquí?

Un ejemplo de esta situación es cuando se inicia un servidor de desarrollo PHP local. Si tengo la intención de escribir php -S 127.0.0.1:8080 pero escribo incorrectamente la IP, esto hace que PHP se enlace a una IP arbitraria que no controlo. Este riesgo en particular se puede mitigar mediante el uso de localhost: 8080 (que si se escribe mal sería simplemente inválido) o estableciendo un alias de Bash.

A través de la revisión correcta del código y las buenas prácticas de seguridad, esto probablemente nunca sucederá. Sólo me interesa la teoría.

    
pregunta jamieweb 19.07.2018 - 00:21
fuente

1 respuesta

1
  

Si tuviera que enlazar a una dirección IP que no controlo, ¿cuáles serían los posibles riesgos de seguridad?

Para aclarar el comentario, esta situación puede ocurrir fácilmente en un tipo de entorno de alojamiento compartido.

El principal riesgo de seguridad aquí es que alguien más puede evitar fácilmente que su servicio escuche en este puerto IP :. Más aún, pueden ejecutar un servicio falso en el puerto IP: asumiéndolo. Luego, pueden actuar maliciosamente contra sus clientes, dependiendo de la naturaleza de su servicio y comunicaciones. Esto puede incluir muchas cosas tales como:

  • Enviar contenido malicioso a sus usuarios (si se trata de un servidor web normal que los usuarios visitan con el navegador);
  • Robo de credenciales o tokens de autenticación si su servicio requiere inicio de sesión (ya sea de usuarios o dispositivos);
  • Atacar a los clientes que se conectan (por ejemplo, si su cliente es un sensor IoT que envía datos y espera el estado "200 OK", un atacante puede intentar desbordar la RAM del sensor devolviendo una línea de estado muy larga);
  • Si su servicio escucha en más de un puerto, un atacante puede atacar MITM y realizar suplantación / inyección / modificación de tráfico (esto podría evitarse con algunas medidas como SSL, pero si está en un entorno de alojamiento compartido). , son menos efectivas).

Tenga en cuenta que no puede vincular un puerto de escucha a una IP remota, tiene que ser una de las direcciones IP locales (técnicamente puede hacerlo, pero no funcionará, porque su ISP no reenviará los paquetes relevantes a su IP). Entonces, si su ejemplo con PHP si lo escribe incorrectamente como "php -S 128.0.0.1", esto solo tendrá efecto si su dirección IP local (o una de ellas) es 128.0.0.1.

PS. El 127/8 entero (es decir, 127. . . *) Es localhost, por lo que si escuchas el 127.231.45.90 no es más accesible a distancia que el 127.0.0.1.

    
respondido por el George Y. 19.07.2018 - 01:17
fuente

Lea otras preguntas en las etiquetas