
ماسح أمني لـ CVE-2025-55182 - ثغرة RCE حرجة في مكونات React Server. امسح ملفات lockfiles الخاصة بـ npm/pnpm/yarn، وصور Docker، وSBOMs، وعناوين URL الحية. إصلاح تلقائي، إخراج SARIF، GitHub Actions، تكامل Vercel، ووسيطة حماية وقت التشغيل.
ماسح أمان لـ CVE-2025-55182 - ثغرة حرجة (CVSS 10.0) غير مصادق عليها لتنفيذ تعليمات برمجية عن بُعد في مكونات خادم React.
⚠️ إخلاء مسؤولية
هذه أداة مسح أمني، وليست أداة استغلال. صُممت لمساعدة المطورين وفرق الأمان في تحديد التبعيات الضعيفة في مشاريعهم.
هذا مشروع مفتوح المصدر يحركه المجتمع مقدم "كما هو" دون أي ضمان، صريح أو ضمني. لا يتحمل المؤلفون والمساهمون أي مسؤولية عن الأضرار أو الحوادث الأمنية الناتجة عن استخدام هذه الأداة.
استخدمها على مسؤوليتك الخاصة. تحقق دائمًا من النتائج يدويًا واتبع سياسات الأمان في مؤسستك. إذا وجدت أي مشكلات أو أخطاء أو لديك اقتراحات، فيُرجى المساهمة مرة أخرى للمساعدة في تحسين المشروع للجميع.
🤝 المساهمون مطلوبون
هذا المشروع يبحث بنشاط عن مختبِرين ومساهمين! سواء كنت ترغب في الإبلاغ عن أخطاء، أو اقتراح ميزات، أو تحسين التوثيق، أو تقديم كود - كل المساهمات مرحب بها. اطلع على دليل المساهمة لبدء المساهمة.
يوجد هذا المشروع لمساعدة المجتمع في الاستجابة لـ CVE-2025-55182. نعترف بالشكر والتقدير لـ:
أسرع طريقة للتحقق مما إذا كان مشروعك معرضًا للخطر:```bash npx react2shell-guard .
هذا كل شيء! سيقوم هذا بفحص دليلك الحالي وعرض النتائج فورًا.
### 2. فحص مشروع محدد```bash
npx react2shell-guard /path/to/your/project
هل وجدت ثغرات؟ أصلحها تلقائيًا:```bash
npx react2shell-guard fix --dry-run
npx react2shell-guard fix
npx react2shell-guard fix --install
### 4. مسح عناوين URL الحية
تحقق مما إذا كان التطبيق المنشور معرضًا للخطر:```bash
npx react2shell-guard scan-url https://your-app.com
تأكد من أن الإصلاح الذي نشرته يعمل:```bash npx react2shell-guard verify-patch https://your-app.com
### 6. فحص صور الحاويات
تحقق مما إذا كانت صور Docker الخاصة بك تحتوي على حزم ضعيفة:```bash
npx react2shell-guard scan-image myapp:latest
قم بإنشاء PR على GitHub تلقائيًا لإصلاح الثغرات الأمنية:```bash npx react2shell-guard create-pr --dry-run # Preview npx react2shell-guard create-pr # Create PR
---
## ما هو CVE-2025-55182؟
في 29 نوفمبر 2025، اكتشف باحث الأمن Lachlan Davidson وكشف بمسؤولية عن ثغرة أمنية حرجة في React Server Components. العيب موجود في كيفية فك تشفير React للحمولات المرسلة إلى نقاط نهاية React Server Function، مما يسمح للمهاجمين غير الموثقين بتحقيق تنفيذ تعليمات برمجية عن بُعد على الخوادم المتأثرة دون أي تفاعل من المستخدم.
تم تصنيف CVE-2025-55182 بـ CVSS 10.0 (حرج) ويؤثر على React Server Components (RSC) والأطر التي تستخدم بروتوكول RSC "Flight".
**الحزم المتأثرة:**
- `react-server-dom-webpack` 19.0.0, 19.1.0-19.1.1, 19.2.0
- `react-server-dom-parcel` (same versions)
- `react-server-dom-turbopack` (same versions)
- `next` 15.0.0-15.0.4, 15.1.0-15.1.8, 15.2.0-15.2.5, 15.3.0-15.3.5, 15.4.0-15.4.7, 15.5.0-15.5.6, 16.0.0-16.0.6
**مزيد من المعلومات:**
- [إعلان أمان React](https://react.dev/blog/2025/12/03/critical-security-vulnerability-in-react-server-components)
- [بحث Wiz](https://www.wiz.io/blog/critical-vulnerability-in-react-cve-2025-55182)
---
## التثبيت (اختياري)
للاستخدام المتكرر، قم بالتثبيت عالميًا:```bash
npm install -g react2shell-guard
ثم استخدم بدون npx:```bash
react2shell-guard .
---
## دليل الاستخدام
### المسح الأساسي```bash
# Scan current directory
react2shell-guard .
# Scan specific directory
react2shell-guard /path/to/project
# Scan and ignore certain paths
react2shell-guard . --ignore-path "examples/**" "test/**"
react2shell-guard .
react2shell-guard . --json
react2shell-guard . --sarif
react2shell-guard . --html report.html
### خيارات واجهة سطر الأوامر
| الخيار | الوصف |
|--------|-------------|
| `--json` | إخراج النتائج بتنسيق JSON |
| `--sarif` | إخراج النتائج بتنسيق SARIF 2.1.0 |
| `--html <file>` | إنشاء تقرير HTML مستقل |
| `--no-exit-on-vuln` | لا تخرج برمز 1 عند العثور على ثغرات |
| `--ignore-path <patterns>` | المسارات المراد تجاهلها (مثل `examples/**`) |
| `--debug` | تمكين إخراج التصحيح |
### رموز الخروج
| الرمز | المعنى |
|------|---------|
| `0` | لم يتم العثور على ثغرات |
| `1` | تم اكتشاف ثغرات |
| `2+` | خطأ فادح |
## فحص عناوين URL الحية
فحص نقاط النهاية الحية للكشف عما إذا كانت معرضة للخطر:```bash
# Scan a single URL
react2shell-guard scan-url https://example.com
# Batch scan from a file (one URL per line)
react2shell-guard scan-url urls.txt --list
# With options
react2shell-guard scan-url https://example.com --timeout 5000 --json
يستخدم الماسح البصمة السلبية لاكتشاف نقاط نهاية مكونات خادم React الضعيفة دون استغلال الثغرة:
طلب الاستكشاف: يرسل طلب POST مخصص يحاكي استدعاء إجراء خادم RSC بحمولة صغيرة:
multipart/form-data مع بنية بيانات شبيهة بـ RSCNext-Action لبدء معالجة إجراء الخادمتحليل الاستجابة: يحلل استجابة HTTP بحثًا عن تواقيع الثغرة:
^[0-9]+:E{ - تنسيق خطأ بروتوكول RSC Flight"digest":"...RSC - ملخص RSC في استجابات الخطأReactServerComponentsError - أسماء فئات خطأ Reacttext/x-component.*error - نوع محتوى خطأ المكونغير مدمر: هذه آلية كشف بحتة - لا تنفذ أي حمولة ضارة أو تستغل الثغرة. يستخدم الاستكشاف بيانات حميدة تؤدي إلى استجابات خطأ على الخوادم الضعيفة ولكنها لا تسبب أي ضرر.
ملاحظة: الكشف الإيجابي يعني أن الخادم يعمل بإصدار ضعيف وأعاد توقيع خطأ خاص بـ RSC. لا يعني أنه تم استغلال الخادم.
التحقق مما إذا كان الهدف قد تم تصحيحه ضد الثغرة:```bash
react2shell-guard verify-patch https://example.com
react2shell-guard verify-patch https://example.com --json
### كيف يعمل التحقق من التصحيح
يقوم التحقق من التصحيح بإجراء **عدة عمليات مسح متتالية** (الافتراضي: 3) مع تأخيرات قصيرة بينها لضمان الكشف الدقيق:
1. **عدة اختبارات**: يشغل نفس فحص البصمة السلبية 3 مرات مع تأخيرات 500 مللي ثانية
2. **تسجيل الثقة**:
- **ثقة عالية**: عمليتا مسح ناجحتان أو أكثر بنتائج متسقة
- **ثقة متوسطة**: عملية مسح ناجحة واحدة بنتيجة قاطعة
- **ثقة منخفضة**: فشلت جميع عمليات المسح أو كانت النتائج غير حاسمة
3. **تصنيف النتيجة**:
- **تم التصحيح**: لم يتم اكتشاف أي توقيعات ثغرات عبر جميع عمليات المسح الناجحة
- **قابل للاختراق**: تم اكتشاف توقيع ثغرة في عملية مسح واحدة أو أكثر
- **غير حاسم**: نتائج مختلطة أو فشلت جميع عمليات المسح
يقلل هذا النهج متعدد المسح من النتائج الإيجابية الخاطئة الناتجة عن مشكلات الشبكة المؤقتة ويوفر ثقة أعلى في حالة التصحيح.
### خيارات التحقق
| الخيار | الوصف |
|--------|--------|
| `--timeout <ms>` | مهلة الطلب بالميلي ثانية (الافتراضي: 10000) |
| `--json` | إخراج النتائج بصيغة JSON |
| `--skip-ssl-verify` | تخطي التحقق من شهادة SSL |
## فحص صور الحاويات
فحص صور حاويات Docker/OCI للحصول على الحزم القابلة للاختراق:```bash
# Scan a local or remote image
react2shell-guard scan-image myapp:latest
# Scan from a registry
react2shell-guard scan-image registry.example.com/myapp:v1.0
# Skip pulling (use local image only)
react2shell-guard scan-image myapp:latest --skip-pull
# With JSON output
react2shell-guard scan-image myapp:latest --json
# With SARIF output
react2shell-guard scan-image myapp:latest --sarif
المتطلبات:
احظر النشرات الضعيفة قبل وصولها إلى مرحلة الإنتاج:```bash
react2shell-guard vercel-check
{ "scripts": { "vercel-build": "react2shell-guard vercel-check && next build" } }
{ "buildCommand": "npx react2shell-guard vercel-check && npm run build" }
### Vercel Check Options
| الخيار | الوصف |
|--------|-------------|
| `--no-fail` | تحذير ولكن لا تفشل البناء عند وجود ثغرات |
| `--ignore-path <patterns>` | المسارات التي سيتم تجاهلها (أنماط glob) |
| `--debug` | تمكين مخرجات التصحيح |
## أتمتة طلبات السحب على GitHub
أنشئ طلب سحب تلقائيًا لإصلاح الثغرات:```bash
# Preview what will be done
react2shell-guard create-pr --dry-run
# Create branch and PR
react2shell-guard create-pr
# Create branch but don't push/create PR
react2shell-guard create-pr --no-push
# Custom branch name
react2shell-guard create-pr --branch fix/security-update
| الخيار | الوصف |
|---|---|
--branch <name> | اسم الفرع للإصلاح (الافتراضي: fix/cve-2025-55182) |
--dry-run | عرض ما سيتم فعله دون إجراء تغييرات |
--no-push | إنشاء الفرع والالتزامات ولكن لا تدفع أو تنشئ PR |
المتطلبات:
react2shell-guard - CVE-2025-55182 Scanner ──────────────────────────────────────────────────
Scanned 1 project(s)
✗ my-app [VULNERABLE] Path: /path/to/my-app Framework: nextjs v15.2.1 App Router: Yes (RSC enabled)
Vulnerabilities found: - react-server-dom-webpack @ 19.1.0 Upgrade to: 19.1.2 Advisory: https://react.dev/blog/2025/12/03/... - next @ 15.2.1 Upgrade to: 15.2.6 Advisory: https://react.dev/blog/2025/12/03/...
────────────────────────────────────────────────── VULNERABLE - Action required! Upgrade affected packages to patched versions immediately.
## تكامل مع GitHub Actions
> **ملاحظة:** نحن نُصدر بانتظام إصدارات جديدة بأنماط كشف محسّنة وإصلاحات. استخدم `@v1` للإصدارات المستقرة أو `@latest` لأحدث إصدار.
### إجراء GitHub Marketplace
أسهل طريقة للتكامل هي استخدام إجراء GitHub الرسمي الخاص بنا:```yaml
name: Security Scan
on: [push, pull_request]
jobs:
scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Scan for CVE-2025-55182
uses: gensecaihq/react2shell-scanner@v1
with:
path: '.'
fail-on-vuln: true
name: Security Scan
on: [push, pull_request]
jobs: scan: runs-on: ubuntu-latest permissions: security-events: write # For SARIF upload pull-requests: write # For PR comments
steps:
- uses: actions/checkout@v4
- name: Scan for CVE-2025-55182
uses: gensecaihq/react2shell-scanner@v1
with:
path: '.'
format: sarif
fail-on-vuln: true
upload-sarif: true # Upload to GitHub Security tab
add-pr-comment: true # Comment on PRs with results
ignore-paths: 'examples/**,test/fixtures/**'
### مدخلات الإجراء
| المدخل | الوصف | الافتراضي |
|--------|-------|-----------|
| `path` | المسار المراد فحصه | `.` |
| `scan-type` | نوع الفحص: `repo`, `sbom`, `container` | `repo` |
| `format` | تنسيق المخرجات: `text`, `json`, `sarif` | `text` |
| `fail-on-vuln` | فشل في حال العثور على ثغرات | `true` |
| `upload-sarif` | رفع SARIF إلى GitHub Security | `false` |
| `add-pr-comment` | إضافة تعليق على طلب السحب (PR) مع النتائج | `false` |
| `ignore-paths` | مسارات مفصولة بفواصل لتجاهلها | `''` |
| `sbom-file` | مسار ملف SBOM (عندما يكون scan-type هو sbom) | `''` |
| `container-image` | صورة Docker (عندما يكون scan-type هو container) | `''` |
### مخرجات الإجراء
| المخرج | الوصف |
|--------|-------|
| `vulnerable` | ما إذا تم العثور على ثغرات (`true`/`false`) |
| `findings-count` | عدد الحزم المعرضة للخطر |
| `scan-result` | نتيجة الفحص الكاملة (تنسيق JSON) |
| `sarif-file` | مسار ملف مخرجات SARIF |
### فحص صور الحاويات```yaml
- name: Scan Docker image
uses: gensecaihq/react2shell-scanner@v1
with:
scan-type: container
container-image: myapp:latest
### الاستخدام اليدوي لواجهة CLI
إذا كنت تفضل استخدام CLI مباشرة:```yaml
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Scan for vulnerabilities
run: npx react2shell-guard@latest .
يكتشف ويحلل react2shell-guard ملفات القفل تلقائيًا من:
package-lock.json (الصيغ v2 و v3)pnpm-lock.yamlyarn.lock (صيغ Classic و Berry)قم بتحديث ملف package.json تلقائيًا لاستخدام الإصدارات المصححة:```bash
react2shell-guard fix --dry-run
react2shell-guard fix
react2shell-guard fix --install
## Pre-Commit Hooks
قم بتثبيت خطافات git لمنع الالتزام بالتبعيات الضعيفة:```bash
# Auto-detect hook framework and install
react2shell-guard init-hooks
# Preview what would be installed
react2shell-guard init-hooks --dry-run
# Force specific hook type
react2shell-guard init-hooks --hook-type husky
react2shell-guard init-hooks --hook-type lefthook
react2shell-guard init-hooks --hook-type standalone
أطر hook المدعومة:
.husky/pre-commitlefthook.yml.git/hooks/pre-commitسيمنع الـ hook عمليات الـ commit عندما يحتوي package.json على تبعيات ضعيفة وسيقترح تشغيل react2shell-guard fix للمعالجة.
امسح ملفات SBOM من نوع CycloneDX للبحث عن الثغرات:```bash
react2shell-guard scan-sbom bom.json
react2shell-guard scan-sbom bom.json --json
react2shell-guard scan-sbom bom.json --sarif
## خادم MCP (تكامل المساعد الذكي)
ابدأ تشغيل خادم Model Context Protocol لتكامل المساعد الذكي:```bash
react2shell-guard mcp-server
أدوات MCP المتاحة:
scan_repo - فحص مستودع للكشف عن الثغرات الأمنيةscan_sbom - فحص ملف SBOM بصيغة CycloneDXالتكوين مع عملاء متوافقين مع MCP (مثال على التكوين):```json { "mcpServers": { "react2shell-guard": { "command": "npx", "args": ["react2shell-guard", "mcp-server"] } } }
## الوسيطة الوقائية لوقت التشغيل
وسيطة دفاعية متعددة الطبقات تكتشف وتحظر محاولات استغلال CVE-2025-55182 في وقت التشغيل.
### Express.js```typescript
import express from 'express';
import { createExpressMiddleware } from 'react2shell-guard/middleware';
const app = express();
// Add raw body parser for RSC payloads
app.use(express.raw({ type: 'text/x-component' }));
app.use(express.json());
// Add protection middleware
app.use(createExpressMiddleware({
action: 'block', // 'block' | 'log' | 'alert'
onAlert: (result, req) => {
// Send to your alerting system (Slack, PagerDuty, etc.)
console.error('CVE-2025-55182 exploit attempt:', result);
},
skipPaths: ['/health', '/metrics'],
}));
// middleware.ts import { withReact2ShellGuard } from 'react2shell-guard/middleware';
export const middleware = withReact2ShellGuard({ action: 'block', rscEndpointsOnly: true, // Only check RSC endpoints (recommended) });
export const config = { matcher: ['/((?!_next/static|_next/image|favicon.ico).*)'], };
**الأنماط المكتشفة:**
- حقن الدوال المسلسلة
- محاولات تلويث النموذج الأولي
- مراجع الوحدات التالفة
- التلاعب بإجراءات الخادم
- الحمولات الضارة المشفرة
- إساءة استخدام تنسيق البث RSC
## استخدام API```typescript
import { scan } from 'react2shell-guard';
const result = scan({
path: '/path/to/project',
ignorePaths: ['examples/**'],
debug: false,
});
console.log(result.vulnerable); // boolean
console.log(result.projects); // ProjectResult[]
{ "cve": "CVE-2025-55182", "vulnerable": true, "scanTime": "2025-12-04T10:30:00Z", "projects": [ { "name": "my-app", "path": "/path/to/my-app", "framework": { "type": "nextjs", "version": "15.2.1", "appRouterDetected": true }, "findings": [ { "package": "react-server-dom-webpack", "currentVersion": "19.1.0", "fixedVersion": "19.1.2", "severity": "critical", "advisoryUrl": "https://..." } ], "vulnerable": true } ], "errors": [] }
## التصحيح
**الإصلاح التلقائي (مُوصى به):**```bash
react2shell-guard fix --install
الترقية اليدوية - حزم React:```bash npm install [email protected] # or 19.0.1, 19.2.1
**الترقية اليدوية - Next.js:**```bash
npm install [email protected] # or other patched version for your release line
إصدارات Next.js المُصحَّحة حسب خط الإصدار:
npm install
npm run build
npm test
npm run dev
## الترخيص
MIT
| الخيار | الوصف |
|---|
--list | معالجة الهدف كملف يحتوي على عناوين URL |
--threads <n> | عدد الخيوط المتزامنة (الافتراضي: 10) |
--timeout <ms> | مهلة الطلب بالميلي ثانية (الافتراضي: 10000) |
--json | إخراج النتائج بصيغة JSON |
--skip-ssl-verify | تخطي التحقق من شهادة SSL |
--verbose | عرض جميع النتائج بما في ذلك المضيفات غير الضعيفة |
| Option | Description |
|---|
--timeout <ms> | مهلة العملية بالمللي ثانية (الافتراضي: 120000) |
--skip-pull | تخطي سحب الصورة من السجل (استخدم المحلي فقط) |
--json | إخراج النتائج بتنسيق JSON |
--sarif | إخراج النتائج بتنسيق SARIF 2.1.0 |
--no-exit-on-vuln | لا تخرج برمز 1 عند العثور على ثغرات |
--debug | تمكين إخراج التصحيح |