
Vulnerabilidade de Geração e Gerenciamento de Chaves AES-CFB no Aplicativo de Desktop Reolink
O Aplicativo Desktop da Reolink (versão 8.18.12) usa o algoritmo AES-CFB para criptografar arquivos de configuração e outros dados sensíveis.
No entanto, a chave de criptografia é tratada de forma insegura, o que permite que atacantes descriptografem facilmente os dados de configuração protegidos.
O aplicativo da Reolink armazena a configuração do usuário e outras informações sensíveis no seguinte caminho:
%APPDATA%\reolink\<UUID>.json
<UUID> tem este formato: 424e044d-aa27-4e59-873a-26b9f16be9ad
Este arquivo de configuração é criptografado usando AES-CFB, e a chave AES usada para descriptografia é derivada através do seguinte processo:
Abra o arquivo localizado no seguinte caminho:
%APPDATA%\com.reolink.app.client
O arquivo contém dados em formato JSON, por exemplo:
{
"data": "+lWlitlpr9vBiG71RCJYoPSJKVnUgGVbgu4v9W6K3N0kzgLv9HEQpqVi2fMnHdb7iWhYgb5KeRhYb6IPVWRR4kxTcwTDfQmMOvFWLuqHPRJBt9ozPSo4TYDXzjBN0YAW",
"__internal__": {
"migrations": {
"version": "8.18.12"
}
}
}
O aplicativo usa MD5("com.reolink.app").upper() como chave AES primária, e bcswebapp1234567 como IV. A string criptografada (data) é decodificada em base64 e depois descriptografada. A string descriptografada tem este formato: 59083200-3875-4f67-a067-d953286114a0
A chave final é MD5("<DECRYPTED_STRING>").upper().encode(), e o IV permanece o mesmo (bcswebapp1234567). Isso é usado para descriptografar o arquivo de configuração, <UUID>.json.
Ao executar poc.py, você pode obter a chave final antes de ser submetida ao hash MD5 (no formato 59083200-3875-4f67-a067-d953286114a0) e o conteúdo do arquivo de configuração.
Um hash de uma string estática codificada, como com.reolink.app, não deve ser usado como chave primária.
Além disso, as chaves não devem ser armazenadas em um arquivo local previsível, como em %APPDATA%. Devem ser usados cofres de chaves seguros e validados fornecidos pelo sistema operacional, como Windows DPAPI ou macOS Keychain, para proteger todas as credenciais sensíveis.