¿La comprobación de encabezado de referencia ofrece alguna mejora de seguridad en el mundo real?

4

En el trabajo, usamos un portal central que proporciona funcionalidad básica de SSO a otras aplicaciones. Además de verificar los datos de SSO enviados, todas nuestras aplicaciones internas existentes (utilizadas por el público) también verifican el encabezado de referencia para asegurarse de que el usuario realmente proviene de nuestro portal central. Sin embargo, acabamos de experimentar un problema en el que un cambio de código de JavaScript en el portal central hizo que Internet Explorer dejara de enviar el encabezado del remitente, lo que hizo que todas las aplicaciones que verifican ese encabezado se desplomaran.

Mi pregunta es si verificar el encabezado del remitente proporciona alguna mejora de seguridad en el mundo real con solo verificar la información básica de SSO (identificación de usuario cifrada contenida en una cookie). Si no es así, ¿hay alguna documentación / investigación / etc. que podría usar para demostrar esto a la gerencia?

También debo mencionar que, desafortunadamente, el portal central es una aplicación de terceros que no tenemos mucho control sobre ... por lo tanto, todo lo que tenemos para ayudar es la información básica de SSO en forma de una cookie cifrada y la información del encabezado del remitente. cosas seguras.

    
pregunta Harry Muscle 26.08.2014 - 17:08
fuente

4 respuestas

2

Respuesta corta: no .

Respuesta larga: depende .

Referer es un encabezado enviado y controlado por el cliente. No puede confiar en ningún dato que no esté marcado desde el cliente. Como han señalado otros, puede ser fácilmente manipulado. Puede contener cualquier cosa que el atacante quiera, así que no confíe en ello.

Si su URL contiene algún token de criptografía ( http://site.com/x.php?op=1&token=-random-data- ), podría ser marginalmente útil. Tendría que verificar el token con una variable de sesión para determinar si el encabezado no fue manipulado.

Pero incluso con un token, la comprobación del remitente solo funcionará hasta que un nuevo navegador / complemento / extensión / proxy comience a eliminar el encabezado del Referente por razones de privacidad.

Si es posible, puede intentar usar la dirección IP del cliente vinculada a los encabezados de huellas digitales del navegador ( User-Agent , Accept , Accept-Language ) para obtener más capas de seguridad. Al mantener esos encabezados en una variable de sesión, puede detectar si alguien robó las credenciales de su usuario, si alguien está tratando de evitar la autenticación y otros ataques.

    
respondido por el ThoriumBR 26.08.2014 - 21:58
fuente
4

Escogerá la fruta de baja altura, pero en general, no es difícil falsificar un encabezado. Yo diría que si ha causado problemas en el pasado, es más que probable que no valga la pena el riesgo para sus aplicaciones empresariales.

    
respondido por el nrduren 26.08.2014 - 19:09
fuente
0

La mejor manera, probablemente, sería demostrarle a la administración qué tan fácil puede ser eludida esta medida de seguridad.

Puede usar, por ejemplo, el Proxy Burp ( enlace ) para interceptar y modificar / agregar el encabezado del remitente.

  1. Descargue e instale el proxy Burp (hay una edición gratuita).
  2. Configure su navegador para usar el proxy Burp.
  3. Use el navegador para autenticarse en su aplicación.
  4. Observe las solicitudes / respuestas en el Proxy Burp, es decir, la pestaña Proxy - > Pestaña de intercepción
  5. Use un botón Reenviar para enviar una solicitud (puede agregar / modificar cualquier línea, incluido el encabezado del remitente).
respondido por el sta 26.08.2014 - 19:35
fuente
0

Como otros ya han explicado, las referencias se pueden falsificar fácilmente. Además, según el estándar HTTP, son completamente opcionales. Hay configuraciones de privacidad y complementos para algunos navegadores que siempre suprimen las referencias y no hay nada malicioso en eso.

Por esa razón, le recomendaría que considere a no remitente como un remitente correcto y solo rechace la solicitud cuando el remitente señale explícitamente a un sitio web que no controla.

    
respondido por el Philipp 26.08.2014 - 22:23
fuente

Lea otras preguntas en las etiquetas