Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2026-39842 — Критическая уязвимость удалённого выполнения кода в Rules Engine от OpenRemote позволяет аутентифицированным пользователям с ролью `write:rules` выполнять произвольный код на сервере с правами root. | Kitploit
Инструменты/GitHubGitHub/keraattin/cve-2026-39842
РазведкаСканеры уязвимостейАнализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийТестирование на Проникновение
GitHubkeraattin/cve-2026-39842

CVE-2026-39842

Критическая уязвимость удалённого выполнения кода в Rules Engine от OpenRemote позволяет аутентифицированным пользователям с ролью `write:rules` выполнять произвольный код на сервере с правами root.

Репозиторий
1125 месяцев назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

CVE-2026-39842: Выполнение произвольного кода через внедрение выражений в Rules Engine OpenRemote

CVE-2026-39842 CVSS 10.0 Critical CWE-94 CWE-917 OpenRemote Status FIXED

Краткое описание

Критическая уязвимость удалённого выполнения кода в Rules Engine OpenRemote позволяет аутентифицированным пользователям с ролью write:rules выполнять произвольный код на сервере с правами root.

  • Оценка CVSS: 10.0 (Critical)
  • Вектор 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, может быть не суперпользователем)
  • Эксплуатация: RCE от имени root, доступ к файловой системе, кража переменных окружения, утечка данных в мультитенантной среде
  • Консультация: GHSA-7mqr-33rv-p3mp

Содержание

  • Краткие факты
  • Что такое OpenRemote?
  • Глубокий анализ уязвимости
  • Анализ воздействия
  • Затронутые версии
  • Обнаружение
  • Индикаторы компрометации
  • Устранение
  • Ссылки
  • Автор

Краткие факты

АспектДетали
ID CVECVE-2026-39842
ID GHSAGHSA-7mqr-33rv-p3mp
Тип уязвимостиВнедрение кода / внедрение выражений
Оценка CVSS10.0 (Critical)
CWECWE-94, CWE-917
ПродуктOpenRemote
Затронутые версии<= 1.21.0
Исправленная версия>= 1.22.0
Требуется аутентификацияДа
Необходимый уровень привилегийРоль write:rules (не суперпользователь)
Уязвимые конечные точкиPOST /api/{realm}/rules/realm, POST /api/{realm}/rules/asset
Уровень выполнения RCEroot
ЭксплуатируемостьВысокая
СложностьНизкая
Дата обнаружения2026

Что такое OpenRemote?

OpenRemote — это платформа Интернета вещей с открытым исходным кодом для создания умных зданий, городов и промышленных объектов. Она предоставляет управление устройствами, правила автоматизации, аналитику и интеграции для экосистемы Интернета вещей.

Ключевые возможности

  • Управление устройствами и активами через несколько протоколов (MQTT, Modbus, BACnet, HTTP)
  • Механизм правил для автоматизации IoT и обработки логики
  • Мультитенантная архитектура с управлением доступом на основе ролей
  • Информационные панели и мониторинг в реальном времени
  • Создание пользовательских правил с использованием нескольких языков сценариев
  • 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 | └──────────────────────────────────┘

---

## Глубокий анализ уязвимости

### Анализ первопричины

Уязвимость проистекает из двух критических недостатков в Rules Engine проекта OpenRemote:

**Недостаток 1: Неизолированный движок JavaScript Nashorn**

Движок JavaScript Nashorn (Java) используется для оценки пользовательских выражений правил без какой-либо изоляции, менеджера безопасности или ограничений ClassFilter. Это позволяет злоумышленникам получать прямой доступ к классам Java из контекста JavaScript.

**Недостаток 2: Отключенная изоляция Groovy**

В движке сценариев Groovy был зарегистрирован GroovyDenyAllFilter для предотвращения выполнения кода, однако эта регистрация фильтра была закомментирована в кодовой базе. На уровне API применялось только ограничение для Groovy (RulesResourceImpl.java:262), тогда как для 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 для доступа к данным других тенантов.
Скачать инструмент