دليل النشر

Dokploy ‌CVE-2026: تحديث عاجل إلى 0.29.13

انشر على VPS Cloud ←

دليل عملي

Dokploy ‌CVE-2026: تحديث عاجل إلى 0.29.13

الأمان والمراقبة11 دقيقةً للقراءةعدد الخطوات: 6

نشرت استشارتا الأمان ‌GHSA-w3gm-rc4p-9rhj و‌GHSA-7r6p-v9gw-pwc8 في 25 سبتمبر 2026 ثغرتين تكوّنان معاً سيناريو هجوم غير مسبوق على ‌Dokploy: سر ‌JWT مضمَّن في الكود المصدري منذ الإصدار ‌0.27.0 يتيح لأي مهاجم تزوير رمز مسؤول دون امتلاك أي حساب، ثم معالجات ‌WebSocket غير المصرَّح بها تحوّل هذا الرمز إلى ‌shell بصلاحيات ‌root على المضيف. أي نسخة من ‌Dokploy أقل من ‌0.29.13 معرَّضة للاختراق من أي شبكة دون أي تفاعل مطلوب. يتطلب الإصلاح أمرَين وتدويراً واحداً للسر.

المحتويات· ثغرتان حرجتان وسلسلة استغلال كاملة1/13
  1. 01ثغرتان حرجتان وسلسلة استغلال كاملة
  2. 02‌CVE-2026-45631 (‌CVSS 10.0): سر ‌JWT المضمَّن في الكود
  3. 03التحقق مما إذا كانت نسختك مكشوفة لـ‌CVE-2026-45631
  4. 04‌CVE-2026-72863 (‌CVSS 9.9): التصعيد عبر طرفيات ‌WebSocket
  5. 05سيناريو الهجوم الكامل: من الصفر إلى ‌root
  6. 06مصفوفة الإصدارات والتصحيحات
  7. 07تشخيص نسختك قبل تطبيق التصحيح
  8. 08دليل التحديث خطوة بخطوة إلى ‌Dokploy 0.29.13
  9. 09إجراءات التصليب بعد التصحيح
  10. 10هل ‌Dokploy لا يزال موثوقاً رغم هذه الثغرات؟
  11. 11البدائل إذا كنت تفكر في الانتقال
  12. 12على ‌VPS من ‌ServOrbit، يختزل التصحيح في أمرَين
  13. 13الخلاصة: النقاط غير القابلة للتفاوض

ثغرتان حرجتان وسلسلة استغلال كاملة

في 25 سبتمبر 2026، نُشرت استشارتا أمان في آنٍ واحد لـ‌Dokploy، أداة النشر ذاتية الاستضافة البديلة لـ‌Heroku و‌Render. يُشكّل الجمع بينهما التهديد الأشد خطورة الذي طال منظومة ‌PaaS ذاتية الاستضافة عام 2026: لا حساب مطلوب، وصول ‌root على المضيف في أقل من دقيقة، وكل نسخة أقل من ‌0.29.13 مكشوفة.

‌CVE-2026-45631 (‌CVSS 10.0) يتعلق بسر ‌JWT مضمَّن في الكود. ‌CVE-2026-72863 (‌CVSS 9.9) يتعلق بمعالجات ‌WebSocket التي تُصادق دون أن تُصرِّح. كل ثغرة على حدة بالغة الخطورة. مجتمعتين تشكّلان هجوماً كاملاً: الأولى تمنح الهوية الإدارية، والثانية تمنح التنفيذ.

‌CVE-2026-45631 (‌CVSS 10.0): سر ‌JWT المضمَّن في الكود

تصف الاستشارة ‌GHSA-w3gm-rc4p-9rhj ثغرة من نوع ‌CWE-798 — استخدام بيانات اعتماد ثابتة في الكود. يستخدم ‌Dokploy مكتبة ‌better-auth لإدارة الجلسات ورموز ‌JWT. في الإصدارات من ‌0.27.0 إلى ‌0.29.2 شاملةً، تركت قيمة المتغير ‌BETTER_AUTH_SECRET الافتراضية على ‌better-auth-secret-123456789 في الكود المصدري المنشور على ‌GitHub.

هذه القيمة هي ما يُوقِّع كل رموز ‌JWT الإدارية في ‌Dokploy. كل من يعرفها — وهي متاحة للعموم منذ أول ‌commit في الإصدار ‌0.27.0 — يستطيع تزوير رمز ‌JWT صالح بصلاحيات المسؤول دون امتلاك أي حساب على النسخة المستهدفة. تقبل واجهة ‌API الإدارية في ‌Dokploy جميع الطلبات: قراءة كل أسرار النشر، وتنفيذ الأوامر عبر ‌API، وتعديل إعدادات الخدمات.

درجة ‌CVSS 10.0 هي الحد الأقصى المطلق في المقياس. وتعكس الغياب الكامل لأي حاجز: ناقل الهجوم هو الشبكة، ولا يلزم أي تفاعل من المستخدم، ولا مصادقة مسبقة، وسرية المضيف وسلامته وتوافره مُخترَقة كلياً.

التحقق مما إذا كانت نسختك مكشوفة لـ‌CVE-2026-45631

على مضيف ‌Dokploy، نفِّذ: grep BETTER_AUTH_SECRET /etc/dokploy/.env

إذا كانت القيمة المعروضة هي ‌better-auth-secret-123456789، أو كان المتغير غائباً عن الملف، أو سبق ملفَّ ‌.env الإصدارَ ‌0.29.3 دون أن يُعاد توليده: فنسختك مكشوفة. إصدار الثنائي وحده لا يكفي — التحديث دون تدوير السر يُبقي القيمة القديمة.

‌CVE-2026-72863 (‌CVSS 9.9): التصعيد عبر طرفيات ‌WebSocket

تصف الاستشارة ‌GHSA-7r6p-v9gw-pwc8 ضبط تحكم وصول غير كافٍ على معالجات ‌WebSocket التي تكشف طرفيات ‌Docker في ‌Dokploy. الثغرة من نوع ‌CWE-285 — تفويض غير صحيح.

يتيح ‌Dokploy لكل مستخدم الوصول إلى طرفية تفاعلية في حاوياته عبر ‌WebSocket. الفحص المُطبَّق كان يُصادق المستخدم — يؤكد وجود رمز صالح — لكنه لا يُصرِّح: لم يتحقق من أن الخدمة المطلوبة تعود فعلاً للمستخدم الطالب. وبذلك يستطيع أي مستخدم بحساب صالح، حتى دون صلاحيات إدارية، فتح طرفية في أي حاوية لأي مستخدم آخر.

التأثير الفعلي يتجاوز الحاوية ذاتها. يعمل ‌Dokploy بصلاحيات ‌root ويُوصِّل مقبس ‌Docker للمضيف (/var/run/docker.sock). من داخل ‌shell في حاوية، يمنح الأمر docker run --rm -v /:/host alpine chroot /host sh صدفة ‌root على نظام ملفات المضيف. جميع الإصدارات الأقل من ‌0.29.13 متأثرة.

سيناريو الهجوم الكامل: من الصفر إلى ‌root

تُشكّل سلسلة ‌CVE-2026-45631 + ‌CVE-2026-72863 هجوماً كاملاً قابلاً للتنفيذ من أي شبكة، دون حساب مسبق، في خطوتين.

الخطوة 1 — تزوير رمز مسؤول (‌CVE-2026-45631). يعرف المهاجم القيمة ‌better-auth-secret-123456789 من الكود المصدري العام. يُولِّد رمز ‌JWT موقَّعاً بهذه القيمة مدَّعياً دور المسؤول. تقبل ‌API الخاصة بـ‌Dokploy هذا الرمز دون تحقق إضافي. يمتلك المهاجم الآن صلاحية إدارية كاملة: قائمة بكل الخدمات والأسرار البيئية ومفاتيح النشر.

الخطوة 2 — الوصول إلى طرفية حاوية (‌CVE-2026-72863). بالرمز الإداري المزوَّر، يفتح المهاجم اتصال ‌WebSocket بطرفية أي حاوية. يسمح الفحص الغائب للتصريح بتمرير الطلب. يمتلك المهاجم الآن ‌shell داخل الحاوية.

النتيجة — ‌root على المضيف. مع تشغيل ‌Dokploy بصلاحيات ‌root ومقبس ‌Docker مُوصَّل، ينتقل المهاجم من الحاوية إلى المضيف. نظام الملفات بالكامل، وأسرار كل المشاريع المستضافة، ومفاتيح ‌SSH، والمتغيرات البيئية للإنتاج — كلها في متناوله. لا يتطلب الأمر أي تفاعل من المشغّل ولا حساباً مسبقاً.

مصفوفة الإصدارات والتصحيحات

مرّر الجدول أفقيًا

‌CVE‌CVSSالإصدارات المتأثرةالإصدار المُصلَحالإجراء المطلوب
‌CVE-2026-4563110.0 — حرجة‌0.27.0 – 0.29.2≥ ‌0.29.3التحديث + توليد ‌BETTER_AUTH_SECRET من جديد
‌CVE-2026-728639.9 — حرجة< ‌0.29.13≥ ‌0.29.13التحديث إلى ‌0.29.13 كحد أدنى
السلسلة الكاملة10.0 فعلياً< ‌0.29.13 مع السر الافتراضي≥ ‌0.29.13التحديث + تدوير السر

تشخيص نسختك قبل تطبيق التصحيح

قبل المتابعة في التحديث، قيِّم مدى انكشاف نسختك بدقة.

التحقق من الإصدار المثبَّت: docker exec dokploy cat /app/package.json | grep '"version"'

إذا كان الإصدار المعروض أقل من ‌0.29.13، فنسختك معرَّضة لـ‌CVE-2026-72863. إذا كانت بين ‌0.27.0 و‌0.29.2، فهي معرَّضة للثغرتين في آنٍ واحد.

التحقق من قيمة سر ‌JWT: grep BETTER_AUTH_SECRET /etc/dokploy/.env

إذا كانت القيمة ‌better-auth-secret-123456789 أو كان المتغير غائباً، فـ‌CVE-2026-45631 قابلة للاستغلال على نسختك بصرف النظر عن الإصدار.

التحقق من الانكشاف الشبكي: إذا كانت واجهة ‌Dokploy متاحة من الإنترنت دون تقييد ‌IP (جدار حماية، ‌Cloudflare Access، ‌VPN)، فسطح الهجوم عام. لا يحتاج المهاجم إلى أي وصول شبكي مسبق لاستغلال ‌CVE-2026-45631.

دليل التحديث خطوة بخطوة إلى ‌Dokploy 0.29.13

  1. نسخ احتياطي للإعدادات والبيانات

    قبل أي عملية، أنشئ نسخة احتياطية كاملة.

    # نسخ دليل الإعداد احتياطياً
    cp -r /etc/dokploy /etc/dokploy.bak-$(date +%Y%m%d-%H%M)
    
    # نسخ قاعدة بيانات Dokploy احتياطياً
    docker exec dokploy-postgres pg_dump -U dokploy dokploy > /root/dokploy-db-$(date +%Y%m%d).sql

    احتفظ بهذه النسخ خارج مضيف ‌Dokploy — إذا اختُرقت النسخة، فالنسخ الاحتياطية المحلية في متناول المهاجم.

  2. التحقق من الإصدار الحالي وملف ‌docker-compose.yml

    حدِّد طريقة التثبيت والإصدار المُثبَّت في ملف ‌Compose الخاص بك. تستخدم معظم تثبيتات ‌Dokploy الصورة الرسمية ‌dokploy/dokploy. إذا كان ثمة وسم إصدار مُثبَّت في ‌docker-compose.yml، فدوِّنه.

    cat /etc/dokploy/docker-compose.yml | grep 'image:'
  3. تحديث صورة ‌Dokploy

    من دليل إعداد ‌Dokploy:

    cd /etc/dokploy
    docker compose pull

    يُنزِّل هذا الأمر صورة ‌dokploy/dokploy:latest أو الوسم المُثبَّت. لتثبيت الإصدار المُصلَح صراحةً، حدِّث السطر ‌image: في ‌docker-compose.yml: استبدل الوسم الموجود بـ‌dokploy/dokploy:0.29.13 قبل تشغيل ‌pull.

  4. إعادة تشغيل الحاويات

    cd /etc/dokploy
    docker compose down
    docker compose up -d

    انتظر حتى تصل الحاويات إلى الحالة ‌healthy قبل المتابعة:

    docker compose ps

    يجب أن يُظهر ‌Dokploy وقاعدة بيانات ‌PostgreSQL كلاهما ‌Up أو ‌healthy.

  5. توليد قيمة جديدة لـ‌BETTER_AUTH_SECRET

    هذه هي الخطوة الأهم والأكثر إغفالاً. التحديث دون تدوير السر يُبقي ‌CVE-2026-45631 قابلة للاستغلال. ولِّد قيمة عشوائية جديدة آمنة تشفيرياً:

    openssl rand -base64 48

    انسخ القيمة المُولَّدة. افتح ‌/etc/dokploy/.env واستبدل السطر ‌BETTER_AUTH_SECRET=... بالقيمة الجديدة. إذا كان المتغير غائباً عن الملف، أضفه.

    ثم أعد تشغيل ‌Dokploy لتطبيق التغيير:

    cd /etc/dokploy && docker compose down && docker compose up -d

    ملاحظة: تدوير السر يُبطل جميع الجلسات النشطة. سيحتاج المستخدمون المتصلون إلى تسجيل الدخول مجدداً.

  6. التحقق من الإصدار بعد التحديث

    تأكد من تشغيل الإصدار ‌0.29.13 أو أحدث:

    docker exec dokploy cat /app/package.json | grep '"version"'

    تحقق أيضاً من تطبيق السر الجديد:

    grep BETTER_AUTH_SECRET /etc/dokploy/.env

    يجب ألا تكون القيمة بعد الآن ‌better-auth-secret-123456789. إذا كانت كذلك، فلم يُطبَّق التدوير — أعِد الخطوة السابقة.

إجراءات التصليب بعد التصحيح

يُصلح التحديث كلتا الثغرتين. تُقلل هذه الإجراءات الإضافية من سطح الهجوم المتبقي.

تقييد الوصول الشبكي لواجهة ‌Dokploy. لا توجد مبررات لإتاحة واجهة الإدارة من الإنترنت. قيِّد الوصول إلى المنفذ ‌3000 (أو المنفذ الذي تستخدمه) على عناوين ‌IP لفريقك عبر جدار حماية المضيف، أو ضع ‌Dokploy خلف ‌VPN.

تفعيل المصادقة متعددة العوامل (‌MFA). يدعم ‌Dokploy بروتوكول ‌TOTP منذ الإصدار ‌0.28.0. فعِّله لجميع حسابات الإدارة.

مراجعة أسرار بيئة المشاريع. يخزِّن ‌Dokploy متغيرات البيئة الخاصة بتطبيقاتك. إذا كانت النسخة مكشوفة خلال نافذة الثغرة (الإصدارات ‌0.27.0 إلى ‌0.29.12)، افترض أن جميع أسرار الإنتاج قد تكون قد اطُّلع عليها. يُوصى بتدوير مفاتيح ‌API ورموز قاعدة البيانات وأسرار التطبيق.

مقبس ‌Docker ومبدأ الامتياز الأدنى. مقبس ‌Docker المُوصَّل كحجم هو سطح هجوم موثَّق ومُستغَل في ‌CVE-2026-72863. يحتاجه ‌Dokploy للعمل، لكن يمكن تقييد الوصول عبر سياسات وكيل مقبس ‌Docker مثل ‌Tecnativa/docker-socket-proxy للحد من العمليات المُصرَّح بها.

هل ‌Dokploy لا يزال موثوقاً رغم هذه الثغرات؟

هذه الثغرتان خطيرتان، لكن استجابة المطوِّرين تستحق التأمل قبل إصدار حكم على نضج المشروع.

نُشرت الاستشارات في 25 سبتمبر 2026. كان إصلاح ‌CVE-2026-45631 متاحاً في الإصدار ‌0.29.3، وإصلاح ‌CVE-2026-72863 في الإصدار ‌0.29.13 — كلاهما في مهلة معقولة بعد الإفصاح المسؤول. يُديم المشروع برنامج أمان عبر ‌GitHub Security Advisories، مما يدل على قدر من النضج في إدارة الثغرات.

‌Dokploy مشروع شاب (أول إصدار مستقر عام 2024) يحقق انتشاراً سريعاً: أكثر من 15 ألف نجمة على ‌GitHub ووتيرة إصدارات مستمرة. وجود سر ثابت في الإصدارات الأولى يعكس ديناً أمنياً نموذجياً للمشاريع سريعة النمو حيث أُولِيت سهولة التثبيت الأولوية على صرامة الإعدادات الافتراضية.

يبقى المشروع خياراً ملائماً للفرق التي تريد ‌PaaS ذاتية الاستضافة وسهلة الوصول، شريطة متابعة تحديثات الأمان وتطبيق إجراءات التصليب الموضَّحة في هذا المقال.

البدائل إذا كنت تفكر في الانتقال

إذا دفعتك هذه الثغرات إلى إعادة تقييم اختيارك لـ‌PaaS ذاتية الاستضافة، إليك البدائل النشطة في هذا القطاع.

‌Coolify هو أقرب البدائل من حيث الميزات. مفتوح المصدر، يُصان بنشاط، بنموذج أمان أكثر نضجاً لإدارة الأسرار (لا قيمة افتراضية مضمَّنة موثَّقة حتى الآن). واجهته أكثر تعقيداً لكن قاعدة كوده أكبر وأكثر مراجعةً.

‌Caprover خيار مجرَّب، أقدم وبالتالي بسجل أمني أطول. أقل نشاطاً في الميزات الجديدة لكن أكثر استقراراً.

‌Portainer مع ‌Docker stacks يبقى نهجاً صالحاً للفرق التي لا تحتاج ‌PaaS كاملة. يحمل ‌Portainer ثغراته التاريخية — ولا سيما تصعيد الامتيازات عبر ‌Docker API — لكن الإصدار ‌3.x أعاد النظر في إدارة التفويض.

أياً كان البديل المختار، تطبيق إجراءات التصليب ذاتها (تقييد الوصول الشبكي، ‌MFA، تدوير منتظم للأسرار) يبقى الخط الأساسي غير القابل للتفاوض.

على ‌VPS من ‌ServOrbit، يختزل التصحيح في أمرَين

تشغيل docker compose pull && docker compose up -d من ‌/etc/dokploy، يليه توليد قيمة جديدة لـ‌BETTER_AUTH_SECRET، يُطبِّق الإصلاح الكامل. على ‌VPS بوصول ‌root، تختار نافذة الصيانة الخاصة بك دون الانتظار على مزود الاستضافة. إذا نشرت ‌Dokploy عبر قالب ‌ServOrbit، فملف ‌.env في ‌/etc/dokploy/ والملف ‌docker-compose.yml هو الذي يُوفِّره القالب.

الخلاصة: النقاط غير القابلة للتفاوض

‌CVE-2026-45631 (‌CVSS 10.0) و‌CVE-2026-72863 (‌CVSS 9.9) تتسلسلان في هجوم من الصفر إلى ‌root على المضيف. أي نسخة من ‌Dokploy أقل من ‌0.29.13 مع السر الافتراضي ‌better-auth-secret-123456789 قابلة للاختراق من أي شبكة.

يتطلب الإصلاح خطوتين متمايزتين وكلتاهما إلزاميتان: التحديث إلى الإصدار ‌0.29.13 كحد أدنى (docker compose pull && docker compose up -d)، وتوليد قيمة جديدة لـ‌BETTER_AUTH_SECRET في ملف ‌.env (openssl rand -base64 48). إحداهما دون الأخرى لا يُغلق إلا نصف السطح.

بعد التحديث، قيِّد الوصول الشبكي لواجهة الإدارة، فعِّل ‌MFA، وإذا كانت النسخة مكشوفة خلال نافذة الثغرة، دوِّر جميع أسرار التطبيقات المستضافة.

انشر ‌Dokploy على ‌VPS تتحكم فيه

على ‌VPS من ‌ServOrbit بوصول ‌root، تُطبِّق هذا التصحيح في أمرَين في الوقت الذي تختاره — دون انتظار نافذة صيانة يفرضها مزود الاستضافة. قالب ‌Dokploy متاح في ‌Marketplace.

مقالات ذات صلة

نشر تطبيقاتك باستخدام Dokploy على VPS
النشر9 دقائق للقراءة

نشر تطبيقاتك باستخدام Dokploy على VPS

انشر تطبيقاتك باستخدام Dokploy على VPS: منصة PaaS مفتوحة المصدر مع Traefik مدمج وDocker Compose وقواعد بيانات ونشر عبر Git.

قراءة المقال ←
‏Portainer مقابل Dokploy: أيهما تختار في 2026؟
مقارنات10 دقائق للقراءة

‏Portainer مقابل Dokploy: أيهما تختار في 2026؟

مقارنة شاملة بين ‏Portainer 2.x‏ و‏Dokploy‏ على خادم VPS: ثغرات CVE الحرجة، نهاية الإصدار المجتمعي، والانتقال خطوة بخطوة.

قراءة المقال ←
n8n CVE-2026-21877: تصحيح ثغرة RCE بدرجة 9.9 عاجلاً
الأمان والمراقبة10 دقائق للقراءة

n8n CVE-2026-21877: تصحيح ثغرة RCE بدرجة 9.9 عاجلاً

CVE-2026-21877 تُتيح تنفيذ كود عن بُعد بعد مصادقة في n8n (CVSS‏ 9.9). تحديث فوري إلى ≥ 1.121.3 مع حل مشكلة الجدولة.

قراءة المقال ←
تأمين خادمك الافتراضي VPS باستخدام CrowdSec
الأمان والمراقبة4 دقائق للقراءة

تأمين خادمك الافتراضي VPS باستخدام CrowdSec

انشر CrowdSec على خادمك الافتراضي VPS لحجب الهجمات بفضل الكشف السلوكي وقائمة حظر مجتمعية مشتركة.

قراءة المقال ←
تهيئة جدار الحماية UFW على خادمك VPS
الأمان والمراقبة4 دقائق للقراءة

تهيئة جدار الحماية UFW على خادمك VPS

هيّئ جدار حماية خادمك VPS باستخدام UFW خطوة بخطوة: القواعد والمنافذ وتحديد معدّل SSH وأفضل الممارسات لتقليص سطح الهجوم.

قراءة المقال ←

بحاجة إلى مساعدة؟

تصفّح مركز المساعدة والأسئلة الشائعة، أو تواصل مع فريقنا — معاودة اتصال أو WhatsApp أو بريد إلكتروني. الدعم بـالعربية والفرنسية والإنجليزية.

راسلنا على WhatsAppيُفتح في علامة تبويب جديدة