
اكتشف ثغرة CVE-2025-55182 (React2Shell) RCE في مكونات الخادم الخاصة بـ React. ماسح ضوئي سريع ودقيق بدون نتائج إيجابية خاطئة.
CVSS 10.0 RCE في مكونات React الخادمية. هل تطبيقك المستند إلى React 19 معرض للخطر؟
ماسح سريع ودقيق لثغرة CVE-2025-55182 (React2Shell) - ثغرة تنفيذ أوامر عن بُعد خطيرة تم استغلالها في بيئات الإنتاج. بدون نتائج إيجابية خاطئة مع كشف ذكي لمكونات الخادم.
React2Shell هي ثغرة قصوى الخطورة (CVSS 10.0) في مكونات React الخادمية تسمح بتنفيذ أوامر عن بُعد دون مصادقة. يمكن للمهاجمين استغلالها عبر طلبات HTTP مصممة خصيصًا لنقاط نهاية الدوال الخادمية.
حقائق رئيسية:
⚠️ ملاحظة مهمة: فقط React 19.x معرضة للخطر. React 18.x والإصدارات الأقدم غير متأثرة.
# الخيار أ: ماسح Node.js (موصى به - متعدد المنصات، بدون تبعيات)
npx react2shell-scanner /path/to/your/project
# الخيار ب: تحميل وتشغيل مباشر
curl -sSL https://raw.githubusercontent.com/nxgn-kd01/react2shell-scanner/main/scan.js > scan.js
node scan.js /path/to/your/project
# الخيار ج: استنساخ وتشغيل
git clone https://github.com/nxgn-kd01/react2shell-scanner.git
cd react2shell-scanner
node scan.js /path/to/your/project
نتائج في ثوان: 🚨 معرض للخطر | ⚠️ تحذيرات | ✅ آمن
تقوم هذه الأداة بكشف الثغرات بشكل ذكي:
'use server''use server'| الخاصية | القيمة |
|---|---|
| CVE ID | CVE-2025-55182 |
| الاسم | React2Shell |
| درجة CVSS | 10.0 (حرج) |
| متجه CVSS | AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H |
| ناقل الهجوم | الشبكة |
| المصادقة | لا حاجة |
| الأثر | اختراق كامل للنظام |
React:
19.0.0, 19.1.0, 19.1.1, 19.2.0حزم React Server DOM:
react-server-dom-webpack 19.0.0 - 19.2.0react-server-dom-parcel 19.0.0 - 19.2.0react-server-dom-turbopack 19.0.0 - 19.2.0Next.js:
14.0.0 إلى 14.2.3414.3.0-canary.0 إلى 14.3.0-canary.8715.0.0 إلى 15.0.615.1.0 إلى 15.1.815.2.0 إلى 15.2.515.3.0 إلى 15.3.515.4.0 إلى 15.4.715.5.0 إلى 15.5.616.0.0 إلى 16.0.9أطر إضافية متأثرة (حسب الإعلان الرسمي من React):
react-router 7.0.0 - 7.1.3waku 0.21.0 - 0.21.5@parcel/rsc 2.12.0 - 2.13.2@vitejs/plugin-rsc 0.1.0 - 0.2.0rwsdk (Redwood SDK) 0.1.0 - 0.4.0expo 52.0.0 - 52.0.9React: 19.2.1 أو أحدث
Next.js:
14.2.35+, 14.3.0-canary.88+15.0.7+, 15.1.9+, 15.2.6+, 15.3.6+, 15.4.8+, 15.5.7+16.0.10+أطر أخرى:
react-router: 7.1.4+waku: 0.21.6+@parcel/rsc: 2.13.3+@vitejs/plugin-rsc: 0.2.1+rwsdk: 0.4.1+expo: 52.0.10+ماسح Node.js (موصى به):
ماسح Bash:
# تثبيت jq (إذا كنت تستخدم ماسح Bash)
# macOS
brew install jq
# Ubuntu/Debian
sudo apt-get install jq
# RHEL/CentOS
sudo yum install jq
الخيار أ: الاستنساخ (موصى به للمستخدمين)
# استنساخ المستودع
git clone https://github.com/nxgn-kd01/react2shell-scanner.git
cd react2shell-scanner
# جعل البرامج النصية قابلة للتنفيذ
chmod +x scan.sh scan.js
الخيار ب: التفرع (موصى به للمساهمين)
# تفرع على GitHub (انقر على زر "Fork" في صفحة المستودع)
# ثم استنساخ التفرع الخاص بك
git clone https://github.com/YOUR_USERNAME/react2shell-scanner.git
cd react2shell-scanner
# جعل البرامج النصية قابلة للتنفيذ
chmod +x scan.sh scan.js
# إضافة ال remote upstream للبقاء محدثًا
git remote add upstream https://github.com/nxgn-kd01/react2shell-scanner.git
الخيار ج: التحميل المباشر
# إصدار Node.js (موصى به - متعدد المنصات)
curl -O https://raw.githubusercontent.com/nxgn-kd01/react2shell-scanner/main/scan.js
chmod +x scan.js
# إصدار Bash (Unix/Linux/macOS فقط)
curl -O https://raw.githubusercontent.com/nxgn-kd01/react2shell-scanner/main/scan.sh
chmod +x scan.sh
🔍 فحص الدليل الحالي:
# باستخدام Node.js (موصى به)
node scan.js
# باستخدام Bash
./scan.sh
📁 فحص مشروع محدد:
node scan.js /path/to/project
./scan.sh /path/to/project
🗂️ فحص متكرر (جميع الأدلة الفرعية):
node scan.js -r
./scan.sh -r
إخراج JSON (للأتمتة):
node scan.js --json
./scan.sh --json
وضع CI/CD (يخرج برمز 1 إذا كان معرضًا للخطر):
node scan.js --ci
./scan.sh --ci
إخراج مفصل:
node scan.js -v
./scan.sh -v
دمج الخيارات:
node scan.js /path/to/projects -r --json --ci
./scan.sh /path/to/projects -r --json --ci
| الخيار | الوصف |
|---|---|
-r, --recursive | فحص جميع الأدلة الفرعية بحثًا عن مشاريع Node.js |
-v, --verbose | عرض إخراج مفصل |
--json | إخراج النتائج بصيغة JSON |
--ci | الخروج برمز 1 إذا تم العثور على ثغرات (لـ CI/CD) |
-h, --help | عرض رسالة المساعدة |
| الرمز | المعنى |
|---|---|
| 0 | لم يتم العثور على ثغرات |
| 1 | تم العثور على ثغرات (عند استخدام علامة --ci) |
| 2 | حدث خطأ في الفحص |
$ node scan.js ~/my-react-app
╔════════════════════════════════════════════════════════════╗
║ CVE-2025-55182 Scanner (React2Shell) ║
╚════════════════════════════════════════════════════════════╝
Severity: CRITICAL (CVSS 10.0)
Description: Unauthenticated RCE in React Server Components
Scan Summary:
Total projects: 1
Vulnerable: 1
Safe: 0
⚠ VULNERABLE PROJECTS FOUND:
1. /Users/user/my-react-app
└─ react 19.0.0 → 19.2.1
└─ next 15.0.3 → 15.0.5
Fix command:
$ cd /Users/user/my-react-app
$ npm install [email protected] [email protected]
$ node scan.js ~/projects -r --json > results.json
{
"vulnerability": "CVE-2025-55182",
"severity": "CRITICAL",
"cvss": 10.0,
"scanned": 5,
"vulnerable": 2,
"results": [
{
"path": "/Users/user/projects/app1",
"vulnerable": true,
"packages": [
{
"name": "react",
"version": "19.0.0",
"fixVersion": "19.2.1"
}
],
"packageManager": "npm",
"fixCommands": [
"cd /Users/user/projects/app1",
"npm install [email protected]"
]
}
]
}
.github/workflows/security-scan.yml
name: CVE-2025-55182 Security Scan
on: [push, pull_request]
jobs:
scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up Node.js
uses: actions/setup-node@v3
with:
node-version: '18'
- name: Download CVE-2025-55182 Scanner
run: |
curl -O https://raw.githubusercontent.com/nxgn-kd01/cve-2025-55182-scanner/main/scan.js
chmod +x scan.js
- name: Scan for vulnerabilities
run: node scan.js --ci
GitLab CI (.gitlab-ci.yml)
security-scan:
stage: test
image: node:18
script:
- curl -O https://raw.githubusercontent.com/nxgn-kd01/cve-2025-55182-scanner/main/scan.js
- chmod +x scan.js
- node scan.js --ci
allow_failure: false
يقوم الماسح بإجراء الفحوصات التالية:
package.jsondependencies و devDependencies'use server' في ملفات المصدر'use server' (يشير إلى استخدام دوال خادمية)يتضمن الماسح كشفًا ذكيًا لمنع النتائج الإيجابية الخاطئة:
output: 'export' على أنها على الأرجح آمنة'use server' لتأكيد الاستخدام الفعلي لمكونات الخادممثال على الإخراج:
✓ No vulnerable projects found
ℹ Projects with analysis notes:
1. /path/to/project
ℹ Next.js ^15.1.3 is in vulnerable range, but using React 18 (safe - only React 19 affected)
2. /path/to/another-project
ℹ Next.js 16.0.5 with React 19 detected, but no 'use server' directives found (likely safe).
Note: dynamically imported Server Functions require manual review.
node scan.js -r
لكل مشروع معرض، قم بتشغيل أمر الإصلاح المقترح:
cd /path/to/project
npm install [email protected] [email protected] # مثال
أو مع yarn:
yarn upgrade [email protected] [email protected]
أو مع pnpm:
pnpm update [email protected] [email protected]
npm test
npm run build
node scan.js --ci
ج: حاليًا، يتحقق الماسح من التبعيات المباشرة في package.json. لفحص التبعيات العميقة، استخدم npm audit أو yarn audit بالاشتراك مع هذه الأداة.
ج: لا، React 18 غير متأثرة ✅
CVE-2025-55182 تؤثر فقط على مكونات الخادم في React 19.x. سيقوم الماسح بتحديد تطبيقات React 18 بشكل صحيح على أنها آمنة، حتى إذا كانت تستخدم إصدارات Next.js 15.x أو 16.x الموجودة في النطاق المعرض.
ج: نعم! استخدم العلامة --ci لجعل الماسح يخرج برمز 1 إذا تم العثور على ثغرات، مما سيفشل خط الأنابيب. انظر أمثلة التكامل مع CI/CD أعلاه.
ج: تخفيفات مؤقتة (الترقية هي الإصلاح الوحيد القاطع):
⚠️ مهم: هذه إجراءات مؤقتة فقط. قم بالترقية إلى الإصدارات المصححة في أسرع وقت ممكن.
ج: دقيق جدًا مع منع ذكي للنتائج الإيجابية الخاطئة:
'use server' لتأكيد الثغرة الفعليةج: يكتشف الماسح توجيهات 'use server' في ملفات المصدر الخاصة بك. ومع ذلك، قد لا يتم اكتشاف الدوال الخادمية المستوردة ديناميكيًا (المُحمّلة في وقت التشغيل عبر import()) بشكل ثابت. إذا أبلغ الماسح عن "لم يتم العثور على توجيهات 'use server'" ولكنك تستخدم الاستيراد الديناميكي للدوال الخادمية، فيجب عليك مراجعة تلك الملفات يدويًا. سيتضمن الماسح ملاحظة تذكيرك بهذا.
المساهمات مرحب بها! لا تتردد في تقديم المشكلات أو طلبات السحب.
# اختبار على مشاريع نموذجية
./test-scanner.sh
يكتشف هذا الماسح الآن جميع الأطر الرئيسية المُمكّنة لـ RSC وفقًا للإعلان الرسمي من React:
للأطر الإضافية، يرجى فتح مشكلة أو تقديم PR.
رخصة MIT - راجع ملف LICENSE للحصول على التفاصيل
تم توفير هذه الأداة كما هي للمجتمع للمساعدة في تحديد المشاريع المعرضة للخطر. تحقق دائمًا من نتائج الماسح واختبر التحديثات في بيئة آمنة قبل النشر في بيئة الإنتاج.
إذا وجدت هذه الأداة مفيدة، يرجى:
ابق آمنًا وحافظ على تحديث تبعياتك!