¿Las aplicaciones web a las que solo se puede acceder desde una LAN deben tener los mismos estándares de seguridad que los sitios web de acceso público?

45

Muchas medidas de seguridad están diseñadas para proteger contra usuarios hostiles que desean abusar del software o tener acceso a contenido al que no tienen permiso para acceder. Cosas como la protección CSRF, la protección SQLi, TLS y muchas otras características de seguridad protegen principalmente contra usuarios malintencionados. Pero, ¿y si se puede confiar en todos los usuarios?

Supongamos que tiene una aplicación web totalmente interna que solo se ejecutará en la intranet de la empresa y nunca será accesible desde el exterior. asuma que se puede confiar en todos los usuarios internos, no hay usuarios externos y los datos dentro de la aplicación no son de mucha utilidad para los atacantes. Esto significa que el modelo de amenaza es muy limitado y no hay mucha información confidencial.

Teniendo en cuenta estos detalles, parece que algunas de las medidas, como la protección TLS y XSS, no serían tan importantes. Después de todo, existe un riesgo muy pequeño de que los atacantes intercepten el tráfico, y se puede confiar en los usuarios para que no ingresen las cargas de XSS. En este caso, ¿tendría sentido implementar medidas de seguridad contra la intercepción de tráfico o usuarios malintencionados?

    
pregunta Nzall 14.03.2017 - 11:15
fuente

5 respuestas

64

Sí. Absolutamente sí.

Sus suposiciones sobre su red interna tienen problemas:

  • asume que ningún atacante obtendría el control de ningún dispositivo en su red, lo cual es una suposición errónea (consulte enlace , enlace ). Los atacantes tendrán bastante tiempo para establecerse en una red, y existe un mercado comercial para comprar hosts comprometidos dentro de compañías específicas.
  • asume que solo los usuarios tienen acceso, pero ¿qué pasa con los terceros, como proveedores de servicios gestionados, contratistas, empleados temporales? Además, ¿qué pasa si alguien se rompe en wifi? O obtiene acceso a un puerto con cable (por ejemplo, un pwnplug )

Más en general, también está la cuestión de por qué tener dos conjuntos de prácticas / estándares, cuando seguramente es más eficiente tener un único estándar que se aplique en todas partes.

Puede que le resulte útil leer el artículo de Google en BeyondCorp, enlace .

El tl; dr es que en su concepción de la red, usted hace afirmaciones sobre los usuarios y dispositivos, pero no sobre la red, principalmente porque es más simple asumir que todas las redes son hostiles, que asumir que algunas son, y algunos no (en parte, el costo de clasificar erróneamente una red como segura podría ser muy, muy alto).

Una posible razón para este enfoque es que las fugas de Snowden revelaron que las suposiciones previas sobre la seguridad de su red eran incorrectas: la NSA aprovechó la fibra para conectarse (en el momento sin cifrar) los flujos de datos entre DC.

Creo que la respuesta básica a su pregunta es que el punto de demarcación / límite para la seguridad ya no está en el borde de su red, son los dispositivos en su red. Y como tal, es más simple y más realista, centrarse en prevenir categorías de ataques / abusos, en lugar de considerar que una red es "mejor" que otra. Es posible que no necesite controles tan fuertes en una DMZ interna como lo haría en una externa, pero suponer que su red es segura es una suposición peligrosa.

    
respondido por el iwaseatenbyagrue 14.03.2017 - 11:39
fuente
20

La superficie de ataque en la red interna y la red externa es diferente, lo que significa que diferentes medidas de seguridad son apropiadas. Eso no significa que la superficie de ataque en la red interna sea más pequeña porque, por un lado, los usuarios suelen ser más confiables y en el otro lado hay datos más críticos a los que a menudo es fácil acceder desde dentro.

Incluso si se puede confiar en todos los usuarios, es posible que su sistema se infecte con malware. Aparte de eso, muchos de los ataques que ha mencionado como CSRF, SQLi o XSS se pueden realizar de origen cruzado, es decir, es suficiente para que un usuario interno visite un sitio web externo que luego utiliza el navegador interno como trampolín para atacar a los internos. sistemas.

En resumen: también se necesita una protección adecuada para las redes internas, incluso si se puede confiar en todos los usuarios. Esto es especialmente cierto si es posible acceder tanto a la red interna como a Internet desde el mismo sistema porque esto permite ataques de origen cruzado desde Internet contra sistemas internos.

    
respondido por el Steffen Ullrich 14.03.2017 - 11:38
fuente
2

Algunas adiciones a las excelentes respuestas:

  • muchas de las cosas que debe hacer para protegerse contra XSS (codificar correctamente los datos cuando los muestra, en su mayoría) también son necesarios para evitar una variedad de errores que pueden ser activados por una entrada perfectamente inocente (no lo hace t desea que un campo de texto se rompa simplemente porque contiene un < o & en el lugar equivocado). Lo mismo se aplica a las inyecciones de SQL (no desea que una consulta rompa juste porque hay una cita en un campo). Así que debes hacer eso de todas formas, incluso si no es por seguridad.

  • hay una fuerte tendencia a que los navegadores se vuelvan cada vez más restrictivos con respecto a los sitios que no son TLS, hasta el punto de que podrían volverse bastante inutilizables en el futuro cercano (o al menos mostrar tantas advertencias que asustará a tus usuarios).

  • también, incluso si solo está apuntando a usuarios internos en una red interna y podrían ser completamente confiables (ver otras respuestas por razones por las que no deberían), las cosas pueden cambiar en el futuro. Es posible que deba abrir (partes de) el sitio a usuarios externos (socios, proveedores, clientes ...). Es mucho más fácil tomar las medidas correctas cuando realiza el desarrollo inicial que actualizar la seguridad más adelante.

respondido por el jcaron 16.03.2017 - 01:58
fuente
1

Yo diría que no, principalmente debido a esta cita de la publicación original especificada:

  

no hay usuarios externos y los datos dentro de la aplicación no son de mucha utilidad para los atacantes

La consideración principal es que, incluso en una red interna, los actores hostiles aún pueden comprometer sistemas que luego pueden usarse para obtener acceso a su aplicación web.

Su modelo de amenaza creo que todavía es una consideración importante aquí, y a pesar de las preocupaciones de que una aplicación puede se puede ingresar, si todo lo que está protegiendo es el calendario de vacaciones de Joe y las invitaciones a la fiesta de Sally, es posible que no valga la pena implementar el filtrado de HSTS, HPKP y XSS, etc.

La mayoría de los programas maliciosos que infectarán las máquinas locales probablemente no estén diseñados para ejecutar un escaneo de red y encontrar servidores web de intranet. Aquellos que están, probablemente estarán buscando paquetes conocidos (aunque algunos solo buscarán nombres comunes y explotarán todas las formas que puedan encontrar con ataques conocidos)

Esto es similar a la seguridad a través de la oscuridad, y es definitivamente una mala práctica. Sin embargo, las preocupaciones prácticas superarán los ideales en muchos escenarios. Aun así, recomendaría al menos un certificado autofirmado y HTTPS / TLS.

Un sistema como este no puede sobrevivir a un ataque dirigido, pero como eliminó la superficie de ataque más común (acceso público a Internet), la mayor parte del uso indebido automatizado no encontrará su sitio.

    
respondido por el Waddles 15.03.2017 - 07:11
fuente
0

Haz un modelo de amenaza. Dependiendo de los datos almacenados y de las amenazas que identifique, es posible que necesite diferentes estándares de seguridad o que, en definitiva, no haya ninguna diferencia crucial.

La respuesta a la pregunta en términos generales puede ir de esta manera, dependiendo de los supuestos tomados, como ya se puede ver en las respuestas dadas. Pero al final, LAN o Internet pública es solo una variable en el conjunto y no puede resolver x = y + z con solo una de las variables dadas.

    
respondido por el Tom 16.03.2017 - 09:12
fuente

Lea otras preguntas en las etiquetas