Análisis preliminar del lanzamiento de la permutación del ClientHello en TLS de Chrome
La creación de huellas digitales en TLS es una de las muchas técnicas usadas para identificar tráfico malicioso a la hora de defender una red. Lleva aplicándose de manera generalizada casi una década, en la que se han desarrollado varios algoritmos de creación de huellas para identificar a clientes y servidores. Si quieres saber más acerca de estos algoritmos, puedes leer esta entrada anterior del blog.
El 20 de enero, Chrome publicó una actualización que cambió el perfil de JA3, uno de los algoritmos más populares de creación de huellas digitales de cliente en TLS. En esta entrada, describiremos brevemente el cambio y lo que hemos observado en la red de Fastly.
Creación de huellas digitales en TLS y la actualización de Chrome
La creación de huellas digitales de clientes en TLS puede servir para clasificar el tráfico e identificar ataques en la red. Los algoritmos correspondientes suelen inspeccionar los mensajes ClientHello en TLS para extraer atributos concretos, como la versión de TLS, los cifrados que admite, las curvas elípticas compatibles, los formatos de curvas y la lista de extensiones de TLS enviadas por el cliente. JA3 es una norma de creación de huellas en TLS muy popular, desarrollada por investigadores de Salesforce y adoptada en varias herramientas comerciales y de código abierto. El aspecto más relevante que nos ocupa es que el algoritmo JA3 utiliza el orden de las extensiones de TLS enviadas por el cliente como característica de la huella digital que produce.undefined
Una funcionalidad implementada hace poco en el navegador Google Chrome permuta un conjunto de extensiones de TLS enviadas en el mensaje ClientHello, de modo que hay una huella digital JA3 distinta en cada nueva conexión del navegador.
Este cambio se realizó para impedir que los servidores previeran un cierto orden fijo de las extensiones, lo cual podía limitar la capacidad de Chrome de cambiar su implementación de TLS en el futuro con tal de reforzar la estabilidad del ecosistema de TLS. Si has oído hablar de GREASE para TLS, esto te habrá sonado. Vale la pena remarcar que el RFC de la versión 1.3 de TLS especifica que las extensiones se pueden enviar en un orden cualquiera, excepto pre_shared_key que, si está presente, es imperativo que se envíe en último lugar.
Dado que el número de permutaciones posible de las extensiones de TLS enviadas por Chrome es de casi el factorial de 15 (aproximadamente 10^12), es de esperar que todas las conexiones realizadas con la permutación de extensiones del ClientHello en TLS tengan una huella digital JA3 prácticamente única.
Esta funcionalidad iba a salir en la versión 110 de Chrome, pero ya parecía haber surtido efecto en las versiones 108 y 109, poco después de que se habilitara por defecto en el código fuente de Chromium.
Testigos directos del cambio
Antes de este cambio, la huella digital de JA3 más común y reciente en Chrome, que estaba presente en la mayoría de plataformas, era cd08e31494f9531f560d64c695473da9
. A partir del 20 de enero de 2023, observamos que el porcentaje de clientes de Chrome que se conectaban a la red de Fastly con esta huella digital (reflejado en la línea azul del siguiente gráfico) disminuía de forma significativa. Prevemos que la tendencia siga a medida que los usuarios actualizan sus navegadores con la permutación de extensiones incluida.
Esto solo es el principio
Al escribir estas líneas, el cambio solo ha llegado a Chrome, aunque Firefox está considerando una funcionalidad parecida en el futuro. Estas mejoras en la solidez de TLS pueden afectar a la utilidad de técnicas de creación de huellas digitales en TLS que, como JA3, distinguen el orden de los elementos, aunque puede ser que se desarrollen nuevos algoritmos que tengan en cuenta la ordenación aleatoria de las extensiones.
Además, Fastly y otras organizaciones colaboran con la comunidad de internet para crear tecnologías como los tokens de acceso privado, que crean protocolos abiertos que respetan la privacidad. Esta tecnología arroja un beneficio inmediato en la defensa de redes, pero puede que también acabe reemplazando las técnicas pasivas de creación de huellas digitales que se usan para identificar a navegadores.
Si quieres ponerte manos a la obra con los hashes de JA3 en la plataforma de Fastly, acude a las bibliotecas de Compute y VCL.