Goal Reached Thanks to every supporter — we hit 100%!

Goal: 1000 CNY · Raised: 1359 CNY

100%

CVE-2025-56802 PoC — Reolink desktop application 安全漏洞

Source
Associated Vulnerability
Title: Reolink desktop application 安全漏洞 (CVE-2025-56802)
Description:The Reolink desktop application uses a hard-coded and predictable AES encryption key to encrypt user configuration files allowing attackers with local access to decrypt sensitive application data stored in %APPDATA%. A different vulnerability than CVE-2025-56801. NOTE: the Supplier's position is that material is not hardcoded and is instead randomly generated on each installation of the application.
Description
AES-CFB Key Generation and Management Vulnerability in Reolink Desktop Application
Readme
# CVE-2025-56802
### AES-CFB Key Generation and Management Vulnerability in Reolink Desktop Application
## 1. Overview

<img src="images/reolink-icon.png" alt="Reolink Icon" align="left" width="150" hspace="10"/>
<br clear="left"/>

- **Name**: Reolink Desktop Application
- **Version**: 8.18.12
- **Vendor**: Reolink
- **CWE**: [CWE-321: Use of Hard-coded Cryptographic Key](https://cwe.mitre.org/data/definitions/321.html), [CWE-522: Insufficiently Protected Credentials](https://cwe.mitre.org/data/definitions/522.html)
- **CVSS**: 5.1 MEDIUM
- **Vector String**: CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:L
## 2. Summary
The Reolink Desktop Application (version 8.18.12) uses the AES-CFB algorithm to encrypt configuration files and other sensitive data.  

However, the encryption key is handled in an insecure manner, which allows attackers to easily decrypt the protected configuration data.

## 3. Details
The Reolink application stores user configuration and other sensitive information at the following path:
```
%APPDATA%\reolink\<UUID>.json
```
`<UUID>` has this format: `424e044d-aa27-4e59-873a-26b9f16be9ad`

This configuration file is encrypted using AES-CFB, and the AES key used for decryption is derived through the following process:
  1. Open the file located at the following path: 
     ```
     %APPDATA%\com.reolink.app.client
     ```
     The file contains data in JSON format, for example:
     ```
           {
      	"data": "+lWlitlpr9vBiG71RCJYoPSJKVnUgGVbgu4v9W6K3N0kzgLv9HEQpqVi2fMnHdb7iWhYgb5KeRhYb6IPVWRR4kxTcwTDfQmMOvFWLuqHPRJBt9ozPSo4TYDXzjBN0YAW",
      	"__internal__": {
      		"migrations": {
      			"version": "8.18.12"
      		}
      	}
      }
     ```
  2. The application uses `MD5("com.reolink.app").upper()` as the primary AES key, and `bcswebapp1234567` as the IV. The encrypted string (`data`) is base64-decoded and then decrypted. The decrypted string has this format: `59083200-3875-4f67-a067-d953286114a0`
     
  3. The final key is `MD5("<DECRYPTED_STRING>").upper().encode()`, and the IV remains the same (`bcswebapp1234567`). This is used to decrypt the configuration file, `<UUID>.json`.
     
## 4. Proof of Concept (PoC)
By executing [poc.py](poc.py), you can get the final key before it is MD5 hashed (in the format `59083200-3875-4f67-a067-d953286114a0`) and the contents of the configuration file.

## 5. Recommendations
A hash of a hard-coded static string, such as `com.reolink.app`, should not be used as the primary key.  

Additionally, keys should not be stored in a predictable local file, such as in `%APPDATA%`. Strong, validated secure keystores provided by the operating system, such as Windows DPAPI or macOS Keychain, must be used to protect all sensitive credentials.
## 6. References
- https://www.cve.org/CVERecord?id=CVE-2025-56802
- https://nvd.nist.gov/vuln/detail/CVE-2025-56802
- https://github.com/shinyColumn/CVE-2025-56799
- https://github.com/shinyColumn/CVE-2025-56801
File Snapshot

Log in to view the POC file snapshot cached by Shenlong Bot

Log in to view
Remarks
    1. It is advised to access via the original source first.
    2. Local POC snapshots are reserved for subscribers — if the original source is unavailable, the local mirror is part of the paid plan.
    3. Mirroring, verifying, and maintaining this POC archive takes ongoing effort, so local snapshots are a paid feature. Your subscription keeps the archive online — thank you for the support. View subscription plans →