Skip to content
KitploitKITPLOIT
أدواتالمدونة
Log in
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

الخلاصاتاتصالالخصوصية© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-39842 — ثغرة حرجة في تنفيذ التعليمات البرمجية عن بُعد في محرك القواعد الخاص بـ OpenRemote تسمح للمستخدمين المصادق عليهم بدور `write:rules` بتنفيذ تعليمات برمجية عشوائية على الخادم بصلاحيات الجذر (root). | Kitploit
أدوات/GitHubGitHub/keraattin/cve-2026-39842
الاستطلاعماسحات الثغرات الأمنيةتحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويباختبار الاختراق
GitHubkeraattin/cve-2026-39842

CVE-2026-39842

ثغرة حرجة في تنفيذ التعليمات البرمجية عن بُعد في محرك القواعد الخاص بـ OpenRemote تسمح للمستخدمين المصادق عليهم بدور `write:rules` بتنفيذ تعليمات برمجية عشوائية على الخادم بصلاحيات الجذر (root).

عرض المستودع
112منذ 5 أشهرلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

CVE-2026-39842: ثغرة حقن التعبيرات في محرك القواعد بـ OpenRemote تؤدي إلى تنفيذ أوامر عن بُعد

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

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، يمكن أن يكون مستخدمًا غير مشرف)
  • الاستغلال: تنفيذ أوامر بصلاحيات الجذر، الوصول إلى نظام الملفات، سرقة متغيرات البيئة، اختراق بيانات متعددة المستأجرين
  • النشرة الأمنية: GHSA-7mqr-33rv-p3mp

جدول المحتويات

  • حقائق سريعة
  • ما هو OpenRemote؟
  • الغوص في تفاصيل الثغرة
  • تحليل الأثر
  • الإصدارات المتأثرة
  • الاكتشاف
  • مؤشرات الاختراق
  • المعالجة
  • المراجع
  • المؤلف

حقائق سريعة

الجانبالتفاصيل
معرف CVECVE-2026-39842
معرف GHSAGHSA-7mqr-33rv-p3mp
نوع الثغرةحقن أكواد / حقن لغة تعبيرات
درجة CVSS10.0 (حرجة)
CWECWE-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 للتكامل والإدارة
  • خيارات نشر سحابية ومحلية

بنية 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 لتقييم تعبيرات القواعد المقدمة من المستخدم دون أي عزل (sandboxing) أو مدير أمان أو قيود ClassFilter. وهذا يسمح للمهاجمين بالوصول إلى فئات Java مباشرة من سياق JavaScript.

**العيب 2: تعطيل عزل Groovy**

كان محرك سكربتات Groovy يحتوي على مرشح GroovyDenyAllFilter مسجل لمنع تنفيذ التعليمات البرمجية، ولكن تم تعطيل تسجيل هذا المرشح في قاعدة التعليمات البرمجية. كان هناك فقط تطبيق لقيود Groovy على مستوى واجهة API (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 (محظورة)
- لا توجد بيئة عزل (sandboxing) لجافاسكريبت، لذا يمكن استغلال الثغرة من قبل أي مستخدم مصادق عليه يمتلك صلاحية write:rules

بالإضافة إلى ذلك، يمكن تجاوز العزل متعدد المستأجرين عبر الانعكاس (reflection) على 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

تنزيل الأداة