
Vulnérabilité de génération et de gestion de clés AES-CFB dans l'application de bureau Reolink
L'application de bureau Reolink (version 8.18.12) utilise l'algorithme AES-CFB pour chiffrer les fichiers de configuration et d'autres données sensibles.
Cependant, la clé de chiffrement est gérée de manière non sécurisée, ce qui permet aux attaquants de déchiffrer facilement les données de configuration protégées.
L'application Reolink stocke la configuration utilisateur et d'autres informations sensibles au chemin suivant :
%APPDATA%\reolink\<UUID>.json
<UUID> a ce format : 424e044d-aa27-4e59-873a-26b9f16be9ad
Ce fichier de configuration est chiffré à l'aide d'AES-CFB, et la clé AES utilisée pour le déchiffrement est dérivée selon le processus suivant :
Ouvrez le fichier situé au chemin suivant :
%APPDATA%\com.reolink.app.client
Le fichier contient des données au format JSON, par exemple :
{
"data": "+lWlitlpr9vBiG71RCJYoPSJKVnUgGVbgu4v9W6K3N0kzgLv9HEQpqVi2fMnHdb7iWhYgb5KeRhYb6IPVWRR4kxTcwTDfQmMOvFWLuqHPRJBt9ozPSo4TYDXzjBN0YAW",
"__internal__": {
"migrations": {
"version": "8.18.12"
}
}
}
L'application utilise MD5("com.reolink.app").upper() comme clé AES principale, et bcswebapp1234567 comme IV. La chaîne chiffrée (data) est décodée en base64 puis déchiffrée. La chaîne déchiffrée a ce format : 59083200-3875-4f67-a067-d953286114a0
La clé finale est MD5("<DECRYPTED_STRING>").upper().encode(), et l'IV reste le même (bcswebapp1234567). Elle est utilisée pour déchiffrer le fichier de configuration, <UUID>.json.
En exécutant poc.py, vous pouvez obtenir la clé finale avant son hachage MD5 (au format 59083200-3875-4f67-a067-d953286114a0) ainsi que le contenu du fichier de configuration.
Un hachage d'une chaîne statique codée en dur, telle que com.reolink.app, ne doit pas être utilisé comme clé principale.
De plus, les clés ne doivent pas être stockées dans un fichier local prévisible, comme dans %APPDATA%. Des magasins de clés sécurisés robustes et validés fournis par le système d'exploitation, tels que Windows DPAPI ou le trousseau macOS, doivent être utilisés pour protéger toutes les informations d'identification sensibles.