
Vulnerabilidad de generación de IV en AES-CFB en la aplicación de escritorio 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, el vector de inicialización (IV) utilizado en este proceso se maneja de forma incorrecta, lo que genera una vulnerabilidad que permite a un atacante descifrar fácilmente los datos de configuración cifrados.
El siguiente código muestra que el IV se genera dinámicamente en tiempo de ejecución:
{
key: "fetchAesIv",
value: function () {
return window.napiDecrypt.getAesIv();
},
}
Sin embargo, el valor devuelto es siempre la misma cadena: bcswebapp1234567.
Esto significa que, aunque el IV se genera técnicamente en tiempo de ejecución, en la práctica está codificado, sin proporcionar seguridad adicional.
Mientras la aplicación está en ejecución, el valor del IV se puede recuperar dinámicamente mediante la consola de JavaScript de DevTools.
La función window.napiDecrypt.getAesIv() devuelve una Promise que se resuelve en una cadena constante bcswebapp1234567.

Esto demuestra que el IV se reutiliza en todas las operaciones de cifrado, lo que viola las mejores prácticas criptográficas.
En modos de cifrado por bloques como CFB, CBC y OFB, reutilizar un IV puede permitir a un atacante predecir patrones de texto cifrado, comprometiendo en última instancia la confidencialidad de los datos. Para cumplir con el propósito de un IV, se debe generar dinámicamente un valor nuevo e impredecible.