Cipher Block Chaining CBC-MAC
CBC
Si la cookie es solo el nombre de usuario (o la primera parte de la cookie es el nombre de usuario) y deseas hacerse pasar por el nombre de usuario "admin". Entonces, puedes crear el nombre de usuario "bdmin" y bruteforce el primer byte de la cookie.
CBC-MAC
El código de autenticación de mensajes de encadenamiento de bloques de cifrado (CBC-MAC) es un método utilizado en criptografía. Funciona tomando un mensaje y cifrándolo bloque por bloque, donde la encriptación de cada bloque está vinculada al bloque anterior. Este proceso crea una cadena de bloques, asegurando que cambiar incluso un solo bit del mensaje original conducirá a un cambio impredecible en el último bloque de datos encriptados. Para realizar o revertir dicho cambio, se requiere la clave de encriptación, garantizando la seguridad.
Vulnerabilidad
Con CBC-MAC, por lo general, el IV utilizado es 0.
Esto es un problema porque 2 mensajes conocidos (m1
y m2
) generarán 2 firmas (s1
y s2
) de forma independiente. Entonces:
E(m1 XOR 0) = s1
E(m2 XOR 0) = s2
Luego, un mensaje compuesto por m1 y m2 concatenados (m3) generará 2 firmas (s31 y s32):
E(m1 XOR 0) = s31 = s1
E(m2 XOR s1) = s32
Lo cual es posible de calcular sin conocer la clave de encriptación.
Imagina que estás encriptando el nombre Administrador en bloques de 8 bytes:
Administ
rator\00\00\00
Puedes crear un nombre de usuario llamado Administ (m1) y recuperar la firma (s1).
Luego, puedes crear un nombre de usuario llamado el resultado de rator\00\00\00 XOR s1
. Esto generará E(m2 XOR s1 XOR 0)
que es s32.
Ahora, puedes usar s32 como la firma del nombre completo Administrador.
Resumen
Obtén la firma del nombre de usuario Administ (m1) que es s1
Obtén la firma del nombre de usuario rator\x00\x00\x00 XOR s1 XOR 0 que es s32**.**
Establece la cookie como s32 y será una cookie válida para el usuario Administrador.
Ataque Controlando el IV
Si puedes controlar el IV utilizado, el ataque podría ser muy fácil. Si las cookies son solo el nombre de usuario encriptado, para hacerse pasar por el usuario "administrador" puedes crear el usuario "Administrator" y obtendrás su cookie. Ahora, si puedes controlar el IV, puedes cambiar el primer byte del IV para que IV[0] XOR "A" == IV'[0] XOR "a" y regenerar la cookie para el usuario Administrator. Esta cookie será válida para hacerse pasar por el usuario administrador con el IV inicial.
Referencias
Más información en https://en.wikipedia.org/wiki/CBC-MAC
Last updated