Nuevo plugin inteligente para FaasT: HPKP y HSTS

Tres años después, FaasT sigue evolucionando con más y mejores Plugins, cada vez más inteligentes y completos. Ahora FaasT evalúa de forma inteligente no solo la presencia de cabeceras HSTS y HPKP en las páginas analizadas, sino que además realiza comprobaciones que permiten conocer hasta qué punto su configuración es la adecuada y están cumpliendo su misión.
HSTS
El protocolo HTTP Strict Transport Security (HSTS) permite transformar las peticiones HTTP en HTTPS desde el propio navegador. Si un servidor decide enviar cabeceras HSTS a un navegador, cualquier visita posterior de ese navegador al dominio, será convertida automáticamente y de forma transparente a HTTPS desde el propio navegador, evitando así peticiones inseguras desde el mismo punto de partida de la conexión. La aplicación del protocolo HSTS es transparente al usuario, es decir, los navegadores son los encargados de recordar los dominios que le han indicado por HSTS durante cuánto tiempo deben ser visitados por HTTPS y gestionan el cambio sin que el usuario deba preocuparse de nada. En el caso de Firefox, es posible utilizar nuestro addon PinPatrol para comprobar tanto la información HSTS como HPKP. El dominio transmite la información de HSTS al navegador a través de la cabecera Strict-Transport-Security. En esta cabecera se facilitan tres campos más: max-age, includeSubdomains y preload (opcional).

Pero no solo la presencia o ausencia de esta cabecera es determinante. La correcta configuración y combinación de sus diferentes campos, además de bajo qué circunstancias y dominios se emiten, determinan la seguridad total del conjunto. El plugin de FaasT tiene en cuenta recomendaciones presentes en el RFC definido, además de otras propias basadas en descubrimientos de nuestro propio laboratorio, y que constituyen errores típicos que merman la seguridad proporcionada teóricamente por la cabecera.
HPKP
La idea detrás del certificate pinning reside en poder detectar cuándo una cadena de confianza ha sido modificada. Para ello se busca asociar (habitualmente, en el navegador) inequívocamente un certificado digital a un dominio concreto (se recuerda certificados presentes en una cadena de certificación y se avisa ante cualquier alteración). El pinning se puede realizar desde el lado del cliente o servidor o con la colaboración de ambos, como es el caso de la solución HPKP. Este protocolo HTTP Public Key Pinning (HPKP) define una nueva cabecera HTTP (Public-Key-Pins) en la que el dominio envía información al navegador sobre sus certificados y política de pinning.
Un ejemplo de esta cabecera podría ser:
Public-Key-Pins:
pin-sha256="d+Nzzj/kBbW36XgzHd3iQz7lzmMFM7UedINRmVf+ie4=";
pin-sha256="U7ZybtJ2wCBeg7QSvWZppKSa06gOYkSCIZkaR2ft3DM=";
pin-sha256="JNFyeZHEFDpGO41RvpVRuQY1Oi19xtLFeF99j0EYduE=";
max-age=15768000; includeSubDomains
En esta cabecera se facilitan distintas directivas: pin-sha256, max-age., includeSubdomains y report-uri (opcional).
Igualmente, el correcto uso de estas cabeceras determinará la seguridad de la implementación: Los pines proporcionados deben ser los correctos representando la cadena de certificación la entidad adecuada con la criptografía más robusta. Además, el pin de respaldo debe estar presente y a ser posible no encontrarse firmado … estas son algunas de las recomendaciones evaluadas por el plugin de FaasT.

No solo la evaluación debe ser persistente sino también inteligente. La mera presencia de cabeceras web, por ejemplo, no garantiza la seguridad. Es necesario evaluarlas y comprobar que cumplen su misión. El plugin de HSTS y HPKP para FaasT (en constante evolución) no solo recordará a los administradores que es necesaria su implementaición, sino que recomendará la mejor manera de hacerlo.