viernes, 3 de noviembre de 2017

Google declara obsoleto HTTP Public Key Pinning (HPKP)

La misma Google acaba con este estándar que anunció hace 3 años para prevenir los ataques "Man in the Middle" usando CAs vulnerados.



Hace 3 años se anunciaba con el rfc7469 esta medida de seguridad adicional, creada por la misma Google e implementado en sus servidores y el navegador Chrome con su versión 46, que previene de un posible 'ataque MitM de sustitución' haciendo uso de una CA vulnerada en la que confía el cliente.

La medida ha sido anunciada por Chris Palmer, que trabaja en la seguridad de Google Chrome, el pasado 27 de octubre. Entre las razones que exime para declararlo obsoleto se encuentra el alto riesgo de dejar un sitio inutilizable.

HTTP Public Key Pinning (HPKP) es una cabecera adicional enviada por el servidor que contiene la declaración de las claves públicas válidas para el sitio web durante un periodo de tiempo. En caso de cambiar la clave pública utilizada, como cuando se cifra la conexión con el certificado de otra CA, el cliente corta la conexión evitando así un posible ataque MitM. El problema de esta medida es que no se diferencia entre un cambio de clave pública fidedigno y un ataque real, pudiendo dejar el sitio inaccesible.


Ejemplo de cabeceras HPKP. Fuente: rfc7469.

Además del problema antes descrito, puede que su baja adopción, con sólo un 0.1% según Netcraft, también sea una de las razones para su eliminación. Otra opción es el apoyo de Google a su otro proyecto similar (aunque complementario) Certificate Transparency.

Certificate Transparency (CT) es un proyecto de Google para el registro y monitorización de los certificados expedidos, el cual involucra a entidades de certificación, dueños de los certificados y clientes. Las CAs enviarían los cambios de los certificados que gestionan a los registros CT, los dueños podrían monitorizar los cambios indebidos sobre los certificados de sus dominios, y los clientes validarían el certificado que envía el sitio respecto al registrado en CT. Este nuevo sistema permite a los dueños saber rápidamente si están sufriendo un ataque, y a los clientes denegar el cambio fraudulento de no estar registrado.

Esta medida, que no requiere de cambios por los dueños de los sitios para su adopción, da solución a uno de los mayores problemas del ataque por reemplazo de certificado: la mayoría se realizan sin que el dueño se entere.


Juan José Oyague
joyague@hispasec.com

Más información:

Intent To Deprecate And Remove: Public Key Pinning
https://groups.google.com/a/chromium.org/forum/#!msg/blink-dev/he9tr7p3rZ8/eNMwKPmUBAAJ

Rolling out Public Key Pinning with HPKP Reporting
https://developers.google.com/web/updates/2015/09/HPKP-reporting-with-chrome-46

RFC 7469 - Public Key Pinning Extension for HTTP
https://tools.ietf.org/html/rfc7469

Is HTTP Public Key Pinning Dead?
https://blog.qualys.com/ssllabs/2016/09/06/is-http-public-key-pinning-dead

Secure websites shun HTTP Public Key Pinning
https://news.netcraft.com/archives/2016/03/22/secure-websites-shun-http-public-key-pinning.html

The fall of Public Key Pinning and rise of Certificate Transparency
https://hackernoon.com/on-guarding-against-certificate-mis-issuance-b968e61baf18

Certificate Transparency
https://www.certificate-transparency.org/