
TPM Genie es un interpositivo de bus I2C para Módulos de Plataforma Confiable discretos.
TPM Genie está diseñado para ayudar en la investigación de vulnerabilidades de los Módulos de Plataforma Confiable (TPM). Como un interpositor de bus serie, TPM Genie es capaz de interceptar y modificar todo el tráfico que se envía a través del canal I2C entre la máquina anfitriona y un chip TPM discreto.
Fuera del ámbito de la investigación, el modelo de amenaza demostrado por TPM Genie requeriría que un atacante tenga acceso físico temporal a la máquina afectada para implantar el dispositivo interpositor. Dicho ataque podría llevarse a cabo en un escenario de "Evil Maid", por un empleado malintencionado en un centro de datos que contenga servidores empresariales con TPM habilitado, o mediante un ataque de interdicción en la cadena de suministro al estilo de los encontrados en el catálogo NSA ANT de implantes de hardware.
Muchos TPM discretos están conectados a una tarjeta hija que se conecta a la placa principal mediante un simple conector o zócalo. En consecuencia, el proceso de implantar un interpositor es bastante sencillo, ya que no requeriría que el atacante realice ninguna modificación del circuito. El implante podría instalarse en solo unos segundos.
TPM Genie fue probado exhaustivamente con el Infineon SLB9645 I2C TPM, que cumple con la especificación del protocolo TPM v1.2.
Esta herramienta fue desarrollada principalmente para manipular paquetes de respuesta del TPM con el fin de desencadenar errores de análisis en los controladores TPM del lado anfitrión. Estos errores se pueden encontrar en el kernel de Linux, así como en una variedad de cargadores de arranque como Tboot y Tianocore EDKII. Aprovechando estas vulnerabilidades, un atacante podría comprometer una máquina anfitriona después de que se haya iniciado correctamente en un estado completamente medido y atestiguado.
TPM Genie también es capaz de interceptar (man-in-the-middle) las operaciones de Extensión PCR, lo que permite socavar la mayoría de los propósitos declarados de un TPM: arranque medido, atestación remota y almacenamiento sellado. Normalmente, la atestación o el desellado deberían fallar si un atacante modifica algún componente del proceso de arranque medido. Sin embargo, el interpositor hace posible falsificar estas mediciones reemplazando la carga útil asociada con el ordinal de Extensión PCR a medida que se transmite a través del bus.
Adicionalmente, TPM Genie puede debilitar el generador de números aleatorios por hardware de Linux. En algunos sistemas, /dev/hwrng está vinculado al Módulo de Plataforma Confiable de modo que todas las lecturas en el dispositivo de caracteres resultan en que el chip TPM proporcione los bytes aleatorios. De esta forma, el interpositor puede alterar sutilmente el RNG de la plataforma, lo que puede perjudicar las operaciones criptográficas en el anfitrión.
Finalmente, TPM Genie se puede utilizar simplemente para esnifar el bus y capturar secretos, como los datos de sesión asociados con los comandos OIAP y OSAP. Y con un esfuerzo de ingeniería adicional nominal, TPM Genie debería poder falsificar la Clave de Endoso (Endorsement Key), obtener control de AuthData y recalcular el HMAC de la Sesión de Autorización. (Más información sobre esto en mi documento técnico. Prometo implementarlo pronto).