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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
أدوات/GitHubGitHub/airis101/cve-2025-55182-analysis
تحليل الثغرات الأمنيةتحليل الكودالاستغلالاستغلال تطبيقات الويبالأوراق والأبحاثالتعلم والتعليم
GitHubairis101/cve-2025-55182-analysis

CVE-2025-55182-analysis

تحليل موجز لثغرة RCE في React Server Components

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

الأكثر شعبية

عرض الكل →

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

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

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

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

1. نظرة عامة على الثغرة

في اليومين الماضيين، انتشرت أنباء عن ثغرة RCE (تنفيذ التعليمات البرمجية عن بُعد) في React عبر إلغاء التسلسل، وقد منحها التقييم الرسمي CVSS درجة كاملة 10.0، مماثلة لـ Log4j في ذلك الوقت. على الفور، انتشرت شائعات زعمت أنها "Log4j للواجهات الأمامية الحديثة"، مما تسبب في حالة من الذعر بين المطورين في العديد من الشركات، فاستيقظ الجميع وهم يبحثون عن الوثائق ويطبقون التصحيحات... وفي الوقت نفسه، ظهرت على الإنترنت أصوات تشكك عديدة، حيث اختبرها البعض ووجدوا أن الثغرة ليست كما تم الترويج لها، بل تتطلب شروطًا معينة للاستغلال. لذلك قررت أن أخصص وقتًا لدراسة هذه الثغرة بعمق.

1.1 معلومات الثغرة

  • رقم CVE: CVE-2025-55182
  • درجة CVSS: 10.0 (حرجة)
  • نوع الثغرة: تلوث سلسلة النموذج الأولي → تنفيذ تعليمات برمجية عن بُعد
  • الإصدارات المتأثرة: react-server-dom-webpack < 19.2.0، react-server-dom-turbopack < 19.2.0
  • نطاق التأثير: التطبيقات التي تستخدم مكونات خادم React

2. تحليل مبدأ الثغرة

2.1 السبب الجذري للثغرة

سبب هذه الثغرة هو ما يلي، في [email protected]، الدالة الرئيسية التي يقوم الخادم من خلالها بتحليل إجراء الخادم هي requireModule (شفرة زائفة):

root@kitploit:~
function requireModule(metadata) {
  var moduleExports = __webpack_require__(metadata[0]);
  // ...
  return "*" === metadata[2]
    ? moduleExports
    : "" === metadata[2]
      ? moduleExports.__esModule
        ? moduleExports.default
        : moduleExports
      : moduleExports[metadata[2]];  // ← نقطة الثغرة
}

2.2 المشكلة الأساسية للثغرة

المشكلة الأساسية للثغرة تكمن في الجزء moduleExports[metadata[2]]، حيث لا يتم التحقق من صحة الجزء metadata[2]، مما يسمح للمهاجم ليس فقط بالوصول إلى خصائص التصدير الخاصة بالوحدة نفسها، بل أيضًا إلى الخصائص الموجودة في سلسلة النموذج الأولي (مثل constructor، __proto__، إلخ). عندما يقوم المهاجم ببناء metadata[0] (على سبيل المثال، توجيهه إلى vm)، يمكنه بعد ذلك بناء metadata[2] لتحقيق تصدير طرق خطيرة من وحدة محددة، مثل vm.runInThisContext، مما يؤدي إلى استغلال الثغرة.


3. تحليل استغلال الثغرة

أثناء تحليلي، قمت بالرجوع إلى بيئة الاختبار واستغلال الثغرة التي قدمها ejpir، وتناولت أداة Code Execution gadget vm_runInThisContext كمثال للتحليل، وكانت العملية على النحو التالي (لاحظ أنه في البيئة الحقيقية، ستكون عملية استغلال الثغرة مختلفة إلى حد ما!):

الخطوة 1: استقبال الطلب

أولاً، بعد إرسال الطلب مع الحمولة، نقطة التوقف للحصول على موقع الطلب تكون كما يلي:

الخطوة 2: تحليل بيانات النموذج

بعد ذلك، يتم تنفيذ البرنامج حتى الموقع const formData = parseMultipart(buffer, boundaryMatch[1]);، ثم ندخل إلى parseMultipart

يقوم parseMultipart باستخراج بيانات جسم الطلب وإرجاعها إلى formData

الخطوة 3: استدعاء decodeAction (مدخل الثغرة)

ندخل إلى const actionFn = await decodeAction(formData, serverManifest); موقع حدوث الثغرة

ندخل إلى loadServerReference

الخطوة 4: الكود الأساسي للثغرة requireModule

الآن نصل إلى موقع الكود الأساسي للثغرة requireModule، ندخل إليه

يعيد قيمة id مع ما قبل وبعد # كطريقة للوحدة، ويعيد قيمة المعلمة bound كمعامل للطريقة

الخطوة 5: تنفيذ الحمولة

ندخل إلى actionFn، وننفذ الحمولة النهائية

وبهذا، انتهى استغلال الثغرة!


4. ملخص && دفاع

هذه الثغرة في جوهرها ناتجة عن عدم صرامة التحقق من الإدخال، وهذا يتطابق مع Log4j و fastjson. اختبرت أعلاه vm_runInThisContext، في الواقع هذه الثغرة بها أدوات متعددة قابلة للاستغلال، مثل

  • vm#runInThisContext
  • vm#runInNewContext
  • child_process#execSync
  • child_process#execFileSync
  • child_process#spawnSync
  • fs#readFileSync
  • fs#writeFileSync
  • #constructor
  • #__proto__
  • #prototype

يمكن للمهاجم باستخدام هذه الثغرة تحقيق:

  • تنفيذ التعليمات البرمجية عن بُعد (RCE): عبر vm#runInThisContext أو child_process#execSync لتنفيذ أي أمر نظام
  • عمليات نظام الملفات: عبر fs#readFileSync، fs#writeFileSync لقراءة/كتابة أي ملف
  • هجمات الثبات: كتابة مفتاح SSH عام، تعديل .bashrc، استبدال ملفات التطبيق، إلخ
  • تسريب المعلومات: قراءة ملفات التكوين الحساسة (.env، المفاتيح الخاصة، بيانات اعتماد قاعدة البيانات، إلخ)

بناءً على ذلك، يمكن تقديم إجراءات دفاعية ذات صلة، على النحو التالي

1. دفاع مؤقت

بناءً على ذلك، يمكن أن ينطلق الدفاع المؤقت من هذه الزوايا، يمكن تكوين قواعد في جدار الحماية من تطبيقات الويب (WAF) لاعتراض هذه الحقول الخطيرة، وبالتالي اعتراض الهجمات الضارة في الوقت المناسب. بالإضافة إلى ذلك، يمكن أيضًا إجراء تطابق واعتراض في nginx، على النحو التالي:

root@kitploit:~
# مثال تكوين Nginx
location /formaction {
    # اعتراض الطلبات التي تحتوي على مراجع وحدات خطيرة
    if ($request_body ~* "(vm#|child_process#|fs#|module#)") {
        return 403;
    }
    # اعتراض محاولات تلوث سلسلة النموذج الأولي
    if ($request_body ~* "(#constructor|#__proto__|#prototype)") {
        return 403;
    }
}

2. التحديث في أقرب وقت

قامت الجهة الرسمية حاليًا بإصدار تحديث أمني، قم بالترقية فورًا إلى الإصدار الآمن!:

root@kitploit:~
# ترقية react-server-dom-webpack
npm install react-server-dom-webpack@>=19.2.0

# ترقية react-server-dom-turbopack
npm install react-server-dom-turbopack@>=19.2.0

# مستخدمو Next.js
npm install next@>=15.0.5

الإصدارات التي تم إصلاحها:

  • react-server-dom-webpack: >= 19.2.0
  • react-server-dom-turbopack: >= 19.2.0
  • next.js: >= 15.0.5

أثناء تحليلي للثغرة أعلاه، رجعت إلى الاستغلال ذي الصلة من whiteov3rflow، وقمت بكتابة أداة كشف الثغرات لبيئة الاختبار بشكل أكبر، ووضعتها في مستودع GitHub. يمكن للطلاب الذين يحتاجون إلى الفحص الذاتي الوصول إليها للحصول عليها (لاحظ أنه نظرًا لبيئة اختبار المؤلف الأصلي، قد تكون مناسبة حاليًا فقط لبيئة الاختبار الأصلية، وسيتم تحسينها لاحقًا، يمكن للطلاب الذين يحتاجون أيضًا أخذها وتعديلها بأنفسهم...)، لاحظ أن الاستخدام يجب أن يكون مصرحًا به قانونيًا، ممنوع التدمير غير المصرح به!

3. كن حذرًا في القول والفعل!

حتى الآن، 5 ديسمبر 2025، ما أراه على الإنترنت هو أن "ضجة" هذه الثغرة تتقلب مثل الأفعوانية، تارة "قنبلة نووية"، وتارة "ثغرة مائية"، وبعد فترة تتحول مرة أخرى إلى "قنبلة نووية"... طرق استغلال الثغرة ذات الصلة تظهر بشكل لا ينتهي. حاليًا، وفقًا للأخبار ذات الصلة، قد يتم تأكيد "القنبلة النووية"، لكن نطاق التأثير سيكون أصغر مقارنة بـ Log4j، ولكن على أي حال، يجب على جميع المعنيين التحديث في أقرب وقت لاستئصال المشكلة!!!

كما أعطي نصيحة أمنية للمطورين، لا تثق أبدًا في إدخال المستخدم، Log4j و fastjson و ReactRCE الحالية جميعها أصيبت بسبب هذه النقطة، لذلك عند تطوير الأعمال الفعلية، يجب استخدام طرق مثل الصندوق الرمل أو القائمة البيضاء للتحقق الصارم من المواقع الخطرة، لتجنب حدوث المآسي!!!

ما نقرأه في الكتب يبدو سطحيًا، ولكي نتيقن من الأمر، يجب أن نكون حذرين في الفعل.


المراجع

  • الإعلان الرسمي لـ CVE-2025-55182
  • التنبيه الأمني لـ React
  • إثبات المفهوم على GitHub بواسطة ejpir
  • وثائق مكونات خادم React
تنزيل الأداة