Resumen

  • Un servidor enviaba Strict-Transport-Security por una conexión HTTPS sin errores y el navegador conservaba la regla para los contactos posteriores. La RFC 6797 identificó la primera visita HTTP a un dominio desconocido como una oportunidad para el intermediario atacante.
  • En 2011, Chromium anunció que la navegación inicial a Gmail usaría HTTPS. La RFC de 2012 describió la lista HSTS precargada por el proveedor del navegador como protección para esa primera visita a los dominios elegidos.

Un mandato que llegaba tarde

Collin Jackson y Adam Barth presentaron ForceHTTPS en 2008. Proponían que un sitio o el propio usuario indicara al navegador que los fallos de HTTPS debían cortar la conexión. Su prototipo, una extensión de Firefox, desviaba las conexiones sin cifrar a HTTPS, rechazaba errores de certificado y bloqueaba contenido incrustado inseguro. El problema era práctico: por compatibilidad, los navegadores trataban muchos fallos de seguridad como molestias negociables. La propuesta permitía a un sitio pedir un trato más estricto.

La RFC 6797 convirtió esa petición en la cabecera de respuesta Strict-Transport-Security. Si llegaba por HTTPS sin errores, el navegador recordaba el dominio durante el plazo max-age y elevaba los contactos siguientes a HTTPS. Si llegaba por HTTP, debía ignorarla. Un atacante situado en el tramo sin cifrar no podía ser quien escribiera la norma de seguridad.

Pero una persona podía teclear un dominio o seguir un enlace http antes de que su navegador conociera la norma. La RFC llamó a ese momento vulnerabilidad de arranque frente a un intermediario. La cabecera esperaba dentro de la respuesta; la petición inicial ya estaba en camino. Una redirección posterior no borraba ese viaje.

La decisión salió de fábrica

El anuncio de Chromium del 14 de junio de 2011 mostraba dos rutas. Chromium 12 dejaba que usuarios avanzados forzaran HTTPS en dominios escogidos. Para Chromium 13, el equipo decía que todas las conexiones a Gmail irían por HTTPS, incluida la primera navegación cuando alguien escribiera gmail.com o mail.google.com sin indicar el esquema. También anunció que ciertos errores de certificado no admitirían el habitual clic para continuar. Eran decisiones incorporadas al navegador antes de recibir una respuesta de Gmail.

La sección 12.3 de la RFC 6797 describió el mecanismo general: el administrador de un sitio podía pedir al proveedor del navegador que incluyera su política en una lista HSTS precargada. La documentación del proyecto Chromium explica por qué una instalación nueva o un estado local borrado seguía abriendo una ventana, y cómo la lista la cerraba para los dominios incluidos. El sitio operaba HTTPS; el proveedor del navegador decidía qué nombres salían de fábrica con una orden previa.

Ahí cambió la autoridad sobre la primera petición. La cabecera del servidor gobernaba las visitas posteriores a un contacto seguro. La lista distribuida con el navegador actuaba antes de ese contacto. Una copia histórica de la lista de Chromium 13 y mediciones de las primeras visitas precisarían el alcance real. Los documentos originales muestran el cambio de mecanismo: el primer «usa HTTPS» dejó de esperar al servidor.

Fuentes