¿Es la desactivación de Firefox de la alternativa TLS no segura de la especificación HSTS?

1

He estado investigando HSTS, y puedo ver que Firefox lo ha soportado desde la versión 4, pero también puedo ver que puedes hacer clic en las advertencias del navegador de certificados que no son de confianza hasta Firefox 37.

¿La desactivación de este resguardo TLS inseguro es parte de la especificación HSTS que todos los navegadores deben cumplir, o es algo de valor agregado que Mozilla ha agregado ellos mismos?

    
pregunta gtmcclinton 22.01.2016 - 12:28
fuente

1 respuesta

7

HSTS, el mecanismo de seguridad de transporte estricto de HTTP, se define mediante RFC 6797 .

La sección relevante es sección 12.1, Sin recurso del usuario , que establece (en parte) que ( mi énfasis):

  

Fallo en el establecimiento de la conexión segura en cualquier advertencia o error   (según la Sección 8.4 ("Errores en un establecimiento de transporte seguro")) debe   hacerse con "ningún recurso del usuario". Esto significa que el usuario no debería   se le presentará un cuadro de diálogo que le da la opción de continuar. Más bien,   debe tratarse de manera similar a un error del servidor donde hay   nada más que el usuario pueda hacer con respecto a la interacción con el   aplicación web de destino, que no sea esperar y reintentar.

     

Esencialmente, "cualquier advertencia o error" significa cualquier cosa que pueda causar   La implementación de UA para anunciar al usuario que algo no está   enteramente correcto con el establecimiento de la conexión.

Lo anterior es consejos de implementación no normativos . Sin embargo, la sección referenciada 8.4, Errores en el establecimiento de transporte seguro es normativa, y declara (en su totalidad) que (mi énfasis):

  

Al conectarse a un host HSTS conocido, el UA DEBE terminar el   conexión (consulte también la Sección 12 ("Consejo de implementación del agente de usuario"))   Si hay algún error, ya sea "advertencia" o "fatal" o cualquier otro   nivel de error, con el transporte seguro subyacente. Por ejemplo, esto   incluye cualquier error encontrado en la verificación de validez de certificado que los UAs   emplear, como a través de las listas de revocación de certificados (CRL) [RFC5280], o   a través del Protocolo de estado de certificado en línea (OCSP) [RFC2560], así como   como a través de la verificación de identidad del servidor TLS [RFC6125].

Aquí, "UA" significa "agente de usuario", que es el término técnico para, entre otras cosas, un navegador web. En las RFC, "debe" realmente significa "debe" :

  
  1. DEBE Esta palabra, o los términos "REQUERIDO" o "DEBE", significan que   La definición es un requisito absoluto de la especificación.
  2.   

Entonces, si un cliente se conecta a un sitio web a través de HTTPS, que anuncia HSTS en su respuesta HTTP, entonces si el navegador web le permite al usuario continuar con la conexión a la luz de un certificado no confiable, está actuando en violación sin duda la intención y muy probablemente la letra del estándar HSTS.

Tenga en cuenta el término servidor HSTS conocido; porque un encabezado HSTS se entrega solo después de que se haya enviado la primera solicitud, y se debe establecer una conexión TLS antes de poder enviar la primera solicitud, el navegador no puede saber antes que se ha hecho si el host remoto usa o no HSTS. El propietario del sitio web puede evitar esta vulnerabilidad utilizando HSTS Preloading . Una vez que un UA ha establecido un host como HSTS, ya sea mediante la precarga o mediante un encabezado HSTS en una respuesta, se supone que esa información es en caché, idealmente persistente , por la UA para la cantidad de tiempo indicada .

TL; DR:

Por los motivos descritos anteriormente, en presencia de cualquier problema de SSL / TLS con un host que anuncia HSTS, la precarga de HSTS ausente, la primera solicitud podría tener éxito (porque el comportamiento no HSTS de permitir el clic a través de una advertencia SSL / TLS es la opción predeterminada, y el host aún no ha tenido la oportunidad de anunciar nada más). Sin embargo, cualquier conexión que se inicie después de que se complete la primera solicitud (suponiendo que esto ocurra dentro del período de antigüedad máxima de HSTS) o en presencia de la precarga de HSTS, se requiere para que falle porque en ese momento el host es un HSTS conocido host.

Parece razonable afirmar que si un UA no cumple con los requisitos MUST de una especificación relevante implementada es un error. Por esa razón, el comportamiento que describe de Firefox 4 a 36 parece haber sido un error.

    
respondido por el a CVn 22.01.2016 - 16:39
fuente

Lea otras preguntas en las etiquetas