
AES-CFB-Schlüsselerzeugungs- und -verwaltungsschwachstelle in der Reolink-Desktopanwendung
Die Reolink-Desktop-Anwendung (Version 8.18.12) verwendet den AES-CFB-Algorithmus, um Konfigurationsdateien und andere sensible Daten zu verschlüsseln.
Der Verschlüsselungsschlüssel wird jedoch auf unsichere Weise verwaltet, wodurch Angreifer die geschützten Konfigurationsdaten leicht entschlüsseln können.
Die Reolink-Anwendung speichert Benutzerkonfigurationen und andere sensible Informationen unter folgendem Pfad:
%APPDATA%\reolink\<UUID>.json
<UUID> hat dieses Format: 424e044d-aa27-4e59-873a-26b9f16be9ad
Diese Konfigurationsdatei wird mit AES-CFB verschlüsselt, und der für die Entschlüsselung verwendete AES-Schlüssel wird durch den folgenden Prozess abgeleitet:
Öffnen Sie die Datei unter folgendem Pfad:
%APPDATA%\com.reolink.app.client
Die Datei enthält Daten im JSON-Format, zum Beispiel:
{
"data": "+lWlitlpr9vBiG71RCJYoPSJKVnUgGVbgu4v9W6K3N0kzgLv9HEQpqVi2fMnHdb7iWhYgb5KeRhYb6IPVWRR4kxTcwTDfQmMOvFWLuqHPRJBt9ozPSo4TYDXzjBN0YAW",
"__internal__": {
"migrations": {
"version": "8.18.12"
}
}
}
Die Anwendung verwendet MD5("com.reolink.app").upper() als primären AES-Schlüssel und bcswebapp1234567 als IV. Die verschlüsselte Zeichenfolge (data) wird base64-dekodiert und anschließend entschlüsselt. Die entschlüsselte Zeichenfolge hat dieses Format: 59083200-3875-4f67-a067-d953286114a0
Der endgültige Schlüssel ist MD5("<ENTschlüsselte_Zeichenfolge>").upper().encode(), und der IV bleibt derselbe (bcswebapp1234567). Dieser wird verwendet, um die Konfigurationsdatei <UUID>.json zu entschlüsseln.
Durch Ausführen von poc.py erhalten Sie den endgültigen Schlüssel, bevor er mit MD5 gehasht wird (im Format 59083200-3875-4f67-a067-d953286114a0), sowie den Inhalt der Konfigurationsdatei.
Ein Hash einer hartcodierten statischen Zeichenfolge wie com.reolink.app sollte nicht als primärer Schlüssel verwendet werden.
Darüber hinaus sollten Schlüssel nicht in einer vorhersehbaren lokalen Datei gespeichert werden, beispielsweise in %APPDATA%. Starke, validierte sichere Schlüsselspeicher des Betriebssystems, wie Windows DPAPI oder macOS Keychain, müssen verwendet werden, um alle sensiblen Anmeldeinformationen zu schützen.