Skip to content
KitploitKITPLOIT
HerramientasBlog
Log in
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2026-39842 — Vulnerabilidad crítica de ejecución remota de código en el Rules Engine de OpenRemote que permite a usuarios autenticados con el rol `write:rules` ejecutar código arbitrario en el servidor con privilegios de root. | Kitploit
Herramientas/GitHubGitHub/keraattin/cve-2026-39842
ReconocimientoEscáneres de VulnerabilidadesAnálisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPruebas de Penetración
GitHubkeraattin/cve-2026-39842

CVE-2026-39842

Vulnerabilidad crítica de ejecución remota de código en el Rules Engine de OpenRemote que permite a usuarios autenticados con el rol `write:rules` ejecutar código arbitrario en el servidor con privilegios de root.

Ver Repositorio
112hace 5 mesesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

CVE-2026-39842: Inyección de Expresiones RCE en el Motor de Reglas de OpenRemote

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

TL;DR

Vulnerabilidad crítica de ejecución remota de código en el Motor de Reglas de OpenRemote que permite a usuarios autenticados con el rol write:rules ejecutar código arbitrario en el servidor con privilegios de root.

  • Puntuación CVSS: 10.0 (Crítica)
  • Vector CVSS: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
  • Versiones afectadas: OpenRemote <= 1.21.0
  • Versión corregida: OpenRemote >= 1.22.0
  • Autenticación requerida: Sí (rol write:rules, puede ser no superusuario)
  • Explotación: RCE como usuario root, acceso al sistema de archivos, robo de variables de entorno, violación de datos multi-tenant
  • Aviso: GHSA-7mqr-33rv-p3mp

Tabla de Contenidos

  • Datos Rápidos
  • ¿Qué es OpenRemote?
  • Análisis Profundo de la Vulnerabilidad
  • Análisis de Impacto
  • Versiones Afectadas
  • Detección
  • Indicadores de Compromiso
  • Remediación
  • Referencias
  • Autor

Datos Rápidos

AspectoDetalles
ID CVECVE-2026-39842
ID GHSAGHSA-7mqr-33rv-p3mp
Tipo de VulnerabilidadInyección de Código / Inyección de Lenguaje de Expresiones
Puntuación CVSS10.0 (Crítica)
CWECWE-94, CWE-917
ProductoOpenRemote
Versiones Afectadas<= 1.21.0
Versión Corregida>= 1.22.0
Autenticación RequeridaSí
Nivel de Privilegio NecesarioRol write:rules (no superusuario)
Endpoints VulnerablesPOST /api/{realm}/rules/realm, POST /api/{realm}/rules/asset
Nivel de Ejecución RCEroot
ExplotabilidadAlta
ComplejidadBaja
Fecha de Descubrimiento2026

¿Qué es OpenRemote?

OpenRemote es una plataforma IoT de código abierto para construir edificios, ciudades e industrias inteligentes. Proporciona gestión de dispositivos, reglas de automatización, analíticas e integraciones para el ecosistema de Internet de las Cosas.

Características Clave

  • Gestión de dispositivos y activos a través de múltiples protocolos (MQTT, Modbus, BACnet, HTTP)
  • Motor de reglas para automatización IoT y procesamiento de lógica
  • Arquitectura multi-tenant con control de acceso basado en roles
  • Paneles de control y monitoreo en tiempo real
  • Creación de reglas personalizadas usando múltiples lenguajes de script
  • API REST para integración y gestión
  • Opciones de despliegue en la nube y en las instalaciones

Arquitectura de 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 | └──────────────────────────────────┘

---

## Análisis Profundo de la Vulnerabilidad

### Análisis de la Causa Raíz

La vulnerabilidad se origina en dos fallos críticos en el motor de reglas de OpenRemote:

**Fallo 1: Motor JavaScript Nashorn sin sandbox**

El motor JavaScript Nashorn de Java se utiliza para evaluar expresiones de reglas proporcionadas por el usuario sin ningún sandbox, administrador de seguridad ni restricciones de ClassFilter. Esto permite a los atacantes acceder a clases de Java directamente desde el contexto de JavaScript.

**Fallo 2: Sandbox de Groovy deshabilitado**

El motor de scripts Groovy tenía un GroovyDenyAllFilter registrado para prevenir la ejecución de código, pero este registro de filtro estaba comentado en el código base. Solo existía una aplicación de Groovy a nivel de API (RulesResourceImpl.java:262), pero JavaScript no tenía restricciones.

### Rutas de Código Vulnerables```
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

Omisión de Autorización

La vulnerabilidad afecta a usuarios autenticados con el rol write:rules. La comprobación de autorización en RulesResourceImpl.java:262 solo bloquea Groovy para usuarios que no son superusuarios:``` if (!isUserSuperuser && isGroovy) { throw new UnauthorizedException("Groovy rules not allowed"); }

Esto significa:
- Los usuarios no superusuarios PUEDEN crear reglas JavaScript (sin bloqueo)
- Los usuarios no superusuarios NO PUEDEN crear reglas Groovy (bloqueadas)
- JavaScript no tiene sandboxing, por lo que la explotación es posible para cualquier usuario autenticado con write:rules

Además, el aislamiento multiinquilino se puede eludir mediante reflexión sobre assetStorageService para acceder a los datos de otros realms.
Descargar herramienta