
# Vulnerabilidad de Generación y Gestión de Claves AES-CFB en la Aplicación de Escritorio de Reolink
La aplicación de escritorio de Reolink (versión 8.18.12) utiliza el algoritmo AES-CFB para cifrar archivos de configuración y otros datos sensibles.
Sin embargo, la clave de cifrado se gestiona de manera insegura, lo que permite a los atacantes descifrar fácilmente los datos de configuración protegidos.
La aplicación de Reolink almacena la configuración del usuario y otra información sensible en la siguiente ruta:
%APPDATA%\reolink\<UUID>.json
<UUID> tiene este formato: 424e044d-aa27-4e59-873a-26b9f16be9ad
Este archivo de configuración se cifra mediante AES-CFB, y la clave AES utilizada para el descifrado se deriva mediante el siguiente proceso:
Abra el archivo ubicado en la siguiente ruta:
%APPDATA%\com.reolink.app.client
El archivo contiene datos en formato JSON, por ejemplo:
{
"data": "+lWlitlpr9vBiG71RCJYoPSJKVnUgGVbgu4v9W6K3N0kzgLv9HEQpqVi2fMnHdb7iWhYgb5KeRhYb6IPVWRR4kxTcwTDfQmMOvFWLuqHPRJBt9ozPSo4TYDXzjBN0YAW",
"__internal__": {
"migrations": {
"version": "8.18.12"
}
}
}
La aplicación utiliza MD5("com.reolink.app").upper() como clave AES principal, y bcswebapp1234567 como IV. La cadena cifrada (data) se decodifica en base64 y luego se descifra. La cadena descifrada tiene este formato: 59083200-3875-4f67-a067-d953286114a0
La clave final es MD5("<CADENA_DESCIFRADA>").upper().encode(), y el IV permanece igual (bcswebapp1234567). Esto se utiliza para descifrar el archivo de configuración, <UUID>.json.
Al ejecutar poc.py, puede obtener la clave final antes de que se aplique el hash MD5 (en el formato 59083200-3875-4f67-a067-d953286114a0) y el contenido del archivo de configuración.
No se debe utilizar un hash de una cadena estática codificada, como com.reolink.app, como clave principal.
Además, las claves no deben almacenarse en un archivo local predecible, como en %APPDATA%. Se deben utilizar almacenes de claves seguros y validados proporcionados por el sistema operativo, como Windows DPAPI o el Llavero de macOS, para proteger todas las credenciales sensibles.