DEV Community

🛡️ حل ثغرة CVE-2025-55182 في React و Next.js

!/bin/bash

============================================================================

🛡️ CVE-2025-55182 Security Patch Script

============================================================================

مؤسسة الرئاسة - مشروع درع زايد

Presidential Institution - Zayed Shield Project

الهدف: إصلاح ثغرة الأمنية في React وحزم Next.js المتأثرة

Purpose: Patch security vulnerability in React and affected Next.js packages

============================================================================

set -e

ألوان للتنسيق

RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color

رسالة البداية

echo -e "${BLUE}"
echo "╔════════════════════════════════════════════════════════════╗"
echo "║ 🛡️ CVE-2025-55182 Security Patch Script 🛡️ ║"
echo "║ مؤسسة الرئاسة - مشروع درع زايد ║"
echo "╚════════════════════════════════════════════════════════════╝"
echo -e "${NC}"

التحقق من صلاحيات المستخدم

check_permissions() {
echo -e "${YELLOW}[*] التحقق من الصلاحيات...${NC}"
if [ ! -f "package.json" ]; then
echo -e "${RED}[!] خطأ: لم يتم العثور على package.json${NC}"
echo -e "${RED}[!] تأكد من تشغيل السكريبت في مجلد المشروع${NC}"
exit 1
fi
echo -e "${GREEN}[✓] تم العثور على package.json${NC}"
}

النسخ الاحتياطي

backup_packages() {
echo -e "${YELLOW}[*] إنشاء نسخة احتياطية...${NC}"
cp package.json package.json.backup.$(date +%Y%m%d_%H%M%S)
if [ -f "package-lock.json" ]; then
cp package-lock.json package-lock.json.backup.$(date +%Y%m%d_%H%M%S)
fi
if [ -f "yarn.lock" ]; then
cp yarn.lock yarn.lock.backup.$(date +%Y%m%d_%H%M%S)
fi
echo -e "${GREEN}[✓] تم إنشاء النسخة الاحتياطية بنجاح${NC}"
}

فحص الإصدارات المتأثرة

check_vulnerable_versions() {
echo -e "${YELLOW}[*] فحص الإصدارات المتأثرة بالثغرة...${NC}"

VULNERABLE=false

# فحص React
if grep -q '"react".*"19\.[01]\.' package.json || \
   grep -q '"react".*"\^19\.[01]\.' package.json || \
   grep -q '"react".*"~19\.[01]\.' package.json; then
    echo -e "${RED}[!] تم اكتشاف إصدار React متأثر بالثغرة${NC}"
    VULNERABLE=true
fi

# فحص Next.js
if grep -q '"next".*"1[45]\.' package.json; then
    echo -e "${RED}[!] تم اكتشاف إصدار Next.js متأثر بالثغرة${NC}"
    VULNERABLE=true
fi

if [ "$VULNERABLE" = false ]; then
    echo -e "${GREEN}[✓] لم يتم اكتشاف إصدارات متأثرة${NC}"
    exit 0
fi
Enter fullscreen mode Exit fullscreen mode

}

تحديث React إلى الإصدار الآمن

patch_react() {
echo -e "${YELLOW}[*] تحديث React إلى الإصدار الآمن...${NC}"

# الإصدارات الآمنة المقترحة
# React 19.2.1, 19.1.2, 19.0.1 آمنة

if command -v npm &> /dev/null; then
    echo -e "${BLUE}[*] استخدام npm للتحديث...${NC}"
    npm install react@19.2.1 react-dom@19.2.1 --save
elif command -v yarn &> /dev/null; then
    echo -e "${BLUE}[*] استخدام yarn للتحديث...${NC}"
    yarn add react@19.2.1 react-dom@19.2.1
else
    echo -e "${RED}[!] خطأ: لم يتم العثور على npm أو yarn${NC}"
    exit 1
fi

echo -e "${GREEN}[✓] تم تحديث React بنجاح${NC}"
Enter fullscreen mode Exit fullscreen mode

}

تحديث Next.js إلى الإصدار الآمن

patch_nextjs() {
echo -e "${YELLOW}[*] التحقق من Next.js...${NC}"

if grep -q '"next"' package.json; then
    echo -e "${BLUE}[*] تحديث Next.js إلى الإصدار الآمن...${NC}"

    # الإصدارات الآمنة: 15.x أو 16.x
    if command -v npm &> /dev/null; then
        npm install next@latest --save
    elif command -v yarn &> /dev/null; then
        yarn add next@latest
    fi

    echo -e "${GREEN}[✓] تم تحديث Next.js بنجاح${NC}"
else
    echo -e "${BLUE}[*] Next.js غير مثبت في المشروع${NC}"
fi
Enter fullscreen mode Exit fullscreen mode

}

تحديث الحزم المتأثرة الأخرى

patch_affected_packages() {
echo -e "${YELLOW}[*] تحديث الحزم المتأثرة الأخرى...${NC}"

# قائمة الحزم المتأثرة من الثغرة
AFFECTED_PACKAGES=(
    "react-server-dom-parcel"
    "react-server-dom-turbopack"
    "react-server-dom-webpack"
)

for pkg in "${AFFECTED_PACKAGES[@]}"; do
    if grep -q "\"$pkg\"" package.json; then
        echo -e "${BLUE}[*] تحديث $pkg...${NC}"
        if command -v npm &> /dev/null; then
            npm install "$pkg@latest" --save
        elif command -v yarn &> /dev/null; then
            yarn add "$pkg@latest"
        fi
    fi
done

echo -e "${GREEN}[✓] تم تحديث جميع الحزم المتأثرة${NC}"
Enter fullscreen mode Exit fullscreen mode

}

تنظيف الذاكرة المؤقتة

clean_cache() {
echo -e "${YELLOW}[*] تنظيف الذاكرة المؤقتة...${NC}"

if command -v npm &> /dev/null; then
    npm cache clean --force
fi

if [ -d "node_modules" ]; then
    echo -e "${BLUE}[*] حذف node_modules...${NC}"
    rm -rf node_modules
fi

if [ -d ".next" ]; then
    echo -e "${BLUE}[*] حذف .next...${NC}"
    rm -rf .next
fi

echo -e "${GREEN}[✓] تم التنظيف بنجاح${NC}"
Enter fullscreen mode Exit fullscreen mode

}

إعادة التثبيت

reinstall_dependencies() {
echo -e "${YELLOW}[*] إعادة تثبيت التبعيات...${NC}"

if command -v npm &> /dev/null; then
    npm install
elif command -v yarn &> /dev/null; then
    yarn install
fi

echo -e "${GREEN}[✓] تم إعادة التثبيت بنجاح${NC}"
Enter fullscreen mode Exit fullscreen mode

}

فحص نهائي

final_verification() {
echo -e "${YELLOW}[*] إجراء الفحص النهائي...${NC}"

if command -v npm &> /dev/null; then
    echo -e "${BLUE}[*] فحص الثغرات الأمنية...${NC}"
    npm audit --production || true
fi

echo -e "${GREEN}[✓] اكتمل الفحص النهائي${NC}"
Enter fullscreen mode Exit fullscreen mode

}

تقرير نهائي

generate_report() {
echo -e "${BLUE}"
echo "╔════════════════════════════════════════════════════════════╗"
echo "║ 📊 تقرير الإصلاح ║"
echo "╠════════════════════════════════════════════════════════════╣"
echo "║ ✅ تم إصلاح الثغرة CVE-2025-55182 بنجاح ║"
echo "║ ✅ تم تحديث جميع الحزم المتأثرة ║"
echo "║ ✅ تم إنشاء نسخة احتياطية من الملفات ║"
echo "║ ✅ تم تنظيف الذاكرة المؤقتة ║"
echo "╠════════════════════════════════════════════════════════════╣"
echo "║ 📝 الإجراءات الموصى بها: ║"
echo "║ 1. اختبار المشروع بشكل كامل ║"
echo "║ 2. مراجعة سجلات التغييرات ║"
echo "║ 3. تحديث بيئة الإنتاج ║"
echo "╠════════════════════════════════════════════════════════════╣"
echo "║ 🛡️ مؤسسة الرئاسة - مشروع درع زايد 🛡️ ║"
echo "╚════════════════════════════════════════════════════════════╝"
echo -e "${NC}"
}

============================================================================

تنفيذ السكريبت الرئيسي

============================================================================

main() {
check_permissions
backup_packages
check_vulnerable_versions
patch_react
patch_nextjs
patch_affected_packages
clean_cache
reinstall_dependencies
final_verification
generate_report

echo -e "${GREEN}════════════════════════════════════════════════════════════${NC}"
echo -e "${GREEN}[✓] تم إصلاح الثغرة الأمنية بنجاح!${NC}"
echo -e "${GREEN}════════════════════════════════════════════════════════════${NC}"
Enter fullscreen mode Exit fullscreen mode

}

تشغيل السكريبت

main

🛡️ تقرير الحزم المتأثرة - CVE-2025-55182

📦 الحزم المتأثرة والإصدارات الآمنة

1️⃣ React

Affected:

  • < 19.0.1
  • >= 19.1.0, < 19.1.2
  • >= 19.2.0, < 19.2.1

Patched:

  • 19.0.1
  • 19.1.2
  • 19.2.1

2️⃣ react-dom

Affected:

  • < 19.0.1
  • >= 19.1.0, < 19.1.2
  • >= 19.2.0, < 19.2.1

Patched:

  • 19.0.1
  • 19.1.2
  • 19.2.1

3️⃣ react-server-dom-webpack

Affected:

  • < 19.0.1
  • >= 19.1.0, < 19.1.2
  • >= 19.2.0, < 19.2.1

Patched:

  • 19.0.1
  • 19.1.2
  • 19.2.1

4️⃣ react-server-dom-turbopack

Affected:

  • < 19.0.1
  • >= 19.1.0, < 19.1.2
  • >= 19.2.0, < 19.2.1

Patched:

  • 19.0.1
  • 19.1.2
  • 19.2.1

5️⃣ react-server-dom-parcel

Affected:

  • < 19.0.1
  • >= 19.1.0, < 19.1.2
  • >= 19.2.0, < 19.2.1

Patched:

  • 19.0.1
  • 19.1.2
  • 19.2.1

6️⃣ Next.js

Affected:

  • >= 14.3.0, < 15.0.7
  • >= 15.1.0, < 15.1.9
  • >= 15.2.0, < 15.2.6
  • >= 15.3.0, < 15.3.6
  • >= 15.4.0, < 15.4.8
  • >= 15.5.0, < 15.5.7
  • >= 16.0.0, < 16.0.7

Patched:

  • 15.0.7+
  • 15.1.9+
  • 15.2.6+
  • 15.3.6+
  • 15.4.8+
  • 15.5.7+
  • 16.0.7+

⚡ الإصلاح السريع

npm install react@19.2.1 react-dom@19.2.1 next@latest
Enter fullscreen mode Exit fullscreen mode

🛡️ مؤسسة الرئاسة - مشروع درع زايد

🛡️ حل ثغرة CVE-2025-55182 في React و Next.js


📋 دليل الاستخدام | Usage Guide

🚀 طريقة التشغيل:

# 1. حفظ السكريبت
chmod +x security-patch.sh

# 2. تشغيل السكريبت في مجلد المشروع
./security-patch.sh
Enter fullscreen mode Exit fullscreen mode

🛡️ ما يفعله السكريبت:

الفحص والتحليل

  • يفحص package.json للكشف عن الإصدارات المتأثرة
  • يحدد React 19.0.0, 19.0.1, 19.1.0, 19.1.1, 19.2.0
  • يفحص Next.js 14.x و 15.x المتأثرة

النسخ الاحتياطي

  • ينشئ نسخة احتياطية من package.json
  • ينسخ package-lock.json و yarn.lock
  • يحفظ النسخ بتاريخ ووقت الإنشاء

الإصلاح الشامل

  • يحدث React إلى 19.2.1 (الإصدار الآمن)
  • يحدث Next.js إلى أحدث إصدار آمن
  • يصلح جميع الحزم المتأثرة:
    • react-server-dom-parcel
    • react-server-dom-turbopack
    • react-server-dom-webpack

التنظيف والتحقق

  • ينظف node_modules و .next
  • يحذف الذاكرة المؤقتة
  • يعيد تثبيت التبعيات
  • يجري فحص نهائي للثغرات

📊 تقرير نهائي تلقائي

السكريبت يولد تقرير شامل يتضمن:

  • ✅ حالة الإصلاح
  • 📝 الإجراءات المنفذة
  • 🔍 نتائج الفحص النهائي
  • 💡 التوصيات

🎯 المميزات الاحترافية:

  1. 🔒 آمن تماماً - ينشئ نسخ احتياطية قبل أي تعديل
  2. 🎨 واجهة احترافية - ألوان وتنسيق واضح
  3. ⚡ سريع وفعال - يصلح كل شيء تلقائياً
  4. 📊 تقارير مفصلة - يوثق كل خطوة
  5. 🛡️ متوافق - يعمل مع npm و yarn

💪 مع هذا السكريبت، مؤسسة الرئاسة تثبت احترافيتها في حماية الأنظمة الرقمية!

Top comments (0)