دليل عملي

Plex2Shell (CVE-2026-96652): تأمين Plex على VPS

الأمان والمراقبة10 دقائق للقراءةعدد الخطوات: 12

Plex2Shell هو الاسم الذي أُطلق على سلسلة من أربع ثغرات في Plex Media Server، أولاها CVE-2026-96652 لا تتطلب أي مصادقة. بحسب BleepingComputer نُشرت التفاصيل التقنية في أكتوبر 2026 وتبعها الاستغلال تقريباً فوراً، مع نشر برنامج تعدين للعملات المشفّرة. والخادم الافتراضي VPS الذي يكشف المنفذ 32400 على الإنترنت هو الهدف النموذجي. يقدّم هذا الدليل الأوامر لقراءة إصدارك وإغلاق التعرّض المباشر ثم البحث عن آثار اختراق سابق للتصحيح.

المحتويات· ماذا تحتوي سلسلة Plex2Shell1/14
  1. 01ماذا تحتوي سلسلة Plex2Shell
  2. 02الثغرات الأربع والتصحيح في نظرة
  3. 03«Plex لديّ محدَّث»: لماذا لا يكفي ذلك
  4. 04قراءة الإصدار المثبَّت والتحديث حسب البيئة
  5. 05المنفذ 32400: ما يجب أن يبقى مغلقاً
  6. 06إغلاق التعرّض المباشر في سبع خطوات
  7. 07وكيل عكسي أم شبكة VPN: أيهما تختار
  8. 08مثال قابل للاختبار: nginx مع مصادقة
  9. 09البحث عن اختراق سابق للتصحيح
  10. 10سبعة فحوص مع أمر كل منها
  11. 11إن ظهر أثر: أعد البناء بدل التنظيف
  12. 12استكشاف الأخطاء: خمس حالات واجهناها
  13. 13المصادر، وما لا يقوله أي بيان من الناشر
  14. 14التوثيق الرسمي

ماذا تحتوي سلسلة Plex2Shell

بحسب BleepingComputer التي تنقل تنبيه CISA، تربط السلسلة أربع ثغرات في Plex Media Server. الأولى CVE-2026-96652 هي تزوير طلبات من جهة الخادم (SSRF) على نقطة الوصول /player/timeline، ويمكن الوصول إليها دون مصادقة: أي شخص مجهول يستطيع أن يجعل خادمك يرسل طلبات. أما الثلاث الأخرى CVE-2026-96654 وCVE-2026-96655 وCVE-2026-96656 فتمدّ الهجوم إلى كتابة ملفات اعتباطية في معاملات محوّل الترميز، وقد يقود ذلك إلى تنفيذ تعليمات برمجية. الدرجة الحرجة 9.8 هي التي يمنحها الباحث للسلسلة كاملة، وليست درجة رسمية لكل ثغرة. التفاصيل علنية منذ أكتوبر 2026، والاستغلال مُبلَّغ عنه منذ 17 أكتوبر 2026، وحدّدت CISA يوم 23 أكتوبر 2026 موعداً نهائياً للتصحيح لدى الوكالات الفيدرالية الأمريكية.

الثغرات الأربع والتصحيح في نظرة

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

المرجعالطبيعةالدور في السلسلة
CVE-2026-96652SSRF على `/player/timeline` دون مصادقةنقطة الدخول: لا حاجة إلى أي حساب
CVE-2026-96654حقن عنوان URL في `searchOne`يتيح استدعاء دوال إضافات أخرى
CVE-2026-96655SSRF بمصادقة في نقطة وصول محوّل الترميزتوسّع نطاق الطلبات الداخلية
CVE-2026-96656كتابة ملفات اعتباطية عبر معاملات محوّل الترميزالحلقة الأخيرة: تنفيذ التعليمات ممكن
الإصدار المصحَّحPlex Media Server 1.43.3.10861 أو أحدثكل إصدار أقدم عرضة للثغرة
الدرجة 9.8منحها الباحث للسلسلة كاملةليست درجة رسمية لكل ثغرة

«Plex لديّ محدَّث»: لماذا لا يكفي ذلك

التحديث يغلق الثغرات لا الباب، ولا يزيل شيئاً تركه متسلل سابقاً. هناك ثلاث حالات. الخادم صُحّح بعد نشر التفاصيل: فإن كان مكشوفاً وعرضة للثغرة في الأثناء فقد يكون اختُرق قبل تحديثك. أو لم يُصحَّح أبداً، لأن Plex على لينكس لا يحدّث نفسه وأن الحاوية تحتفظ بالصورة التي بدأت بها. أو الخادم محدَّث لكن المنفذ 32400 ما زال مفتوحاً للجميع مع أنه لا يستخدمه سوى أقاربك. فالخطوات ثلاث: تحقّق من الإصدار، قلّل التعرّض، ابحث عن الآثار.

قراءة الإصدار المثبَّت والتحديث حسب البيئة

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

البيئةقراءة الإصدار المثبَّتالتحديث
Debian / Ubuntu`dpkg -s plexmediaserver | grep Version``sudo apt update && sudo apt install --only-upgrade plexmediaserver`
RHEL / AlmaLinux`rpm -q plexmediaserver``sudo dnf upgrade plexmediaserver` إن كان مستودع Plex مهيّأً، وإلا فحزمة ‎.rpm من صفحة التنزيل الرسمية
Dockerالسمة `version` في `curl -s http://127.0.0.1:32400/identity` إن كان المنفذ منشوراً`docker pull plexinc/pms-docker` + `docker compose up -d --force-recreate`
كل الحالات`curl -s http://127.0.0.1:32400/identity` يعيد XML قصيراً فيه السمة `version`ثم أعد التشغيل: `sudo systemctl restart plexmediaserver`

المنفذ 32400: ما يجب أن يبقى مغلقاً

يستمع Plex افتراضياً على المنفذ 32400. وعلى VPS يكون جدار الحماية من شأنك: دون قاعدة يكون المنفذ قابلاً للوصول من الإنترنت، وتكتب حاوية Docker قواعدها الخاصة التي تتجاوز ufw. يُظهر الأمر ss -tlnp | grep 32400 هل يستمع Plex على كل الواجهات (0.0.0.0 أو *) أم على 127.0.0.1 فقط. لكنه لا يثبت أن المنفذ قابل للوصول من الخارج، فقد يصفّيه الجدار: الاختبار الحقيقي يجري من جهاز آخر. ومع عنوان IPv4 مخصص كما في VPS، هذا هو أول فحص ينبغي إجراؤه.

إغلاق التعرّض المباشر في سبع خطوات

  1. حدّث أولاً

    نفّذ أمر بيئتك من الجدول أعلاه ثم sudo systemctl restart plexmediaserver. بعد ذلك تحقّق من الإصدار بالأمر curl -s http://127.0.0.1:32400/identity: يجب أن تُظهر السمة version القيمة 1.43.3.10861 أو إصداراً أحدث.

  2. قِس التعرّض

    ss -tlnp | grep 32400
    من جهاز آخر: nc -vz 203.0.113.10 32400 (استبدل عنوان المثال بعنوان IPv4 الخاص بخادمك). نجاح الاتصال يعني أن Plex مكشوف.

  3. أوقف الوصول البعيد المباشر في Plex

    في إعدادات الخادم، عطّل الوصول البعيد المباشر. بذلك يتوقف Plex عن محاولة جعل المنفذ قابلاً للوصول من الإنترنت.

  4. أغلق المنفذ في جدار الحماية

    sudo ufw allow OpenSSH
    sudo ufw deny 32400/tcp
    sudo ufw enable
    sudo ufw status numbered
    اسمح بـ SSH قبل تفعيل ufw وإلا أغلقت الباب على نفسك.

  5. مع Docker انشر على الواجهة المحلية

    في ملف Compose استبدل المنفذ المنشور بـ 127.0.0.1:32400:32400 ثم نفّذ docker compose up -d --force-recreate. قاعدة ufw لا تكفي هنا: Docker يمرّ قبلها.

  6. أعد الفحص من الخارج

    nc -vz 203.0.113.10 32400
    يجب أن يفشل الاتصال الآن أو تنتهي مهلته. إن نجح فجدار الحماية ليس هو من يصفّي، أو أن Docker ما زال ينشر المنفذ.

  7. أعد ربط الوصول المشروع

    يصف القسمان التاليان وكيلاً عكسياً بمصادقة للمتصفح وشبكة VPN للتطبيقات. اختر قبل إعادة فتح أي شيء.

وكيل عكسي أم شبكة VPN: أيهما تختار

كلاهما يغلق المنفذ 32400 أمام العالم كله، لكنهما لا يخدمان العملاء أنفسهم. الوكيل العكسي بمصادقة يحمي واجهة Plex على الويب في المتصفح مع TLS في الواجهة. أما تطبيقات Plex على التلفزيونات والهواتف فلا تعرف الرد على مصادقة HTTP Basic: خلف هذا الوكيل تفشل. والطريق السليم لها هو الشبكة الخاصة: بعد sudo apt install wireguard وضبط الأطراف، تفتح القاعدة sudo ufw allow in on wg0 to any port 32400 proto tcp خدمة Plex لواجهة النفق وحدها. تذكّر أن الشبكة الخاصة تغطي كل العملاء، والوكيل يغطي المتصفح فقط.

مثال قابل للاختبار: nginx مع مصادقة

  1. ثبّت nginx وأداة كلمات المرور

    Debian / Ubuntu: sudo apt install nginx apache2-utils
    RHEL / AlmaLinux: sudo dnf install nginx httpd-tools

  2. أنشئ مستخدماً

    sudo htpasswd -c /etc/nginx/.plex-htpasswd alice
    يطلب الأمر كلمة المرور ويكتب الملف الذي يقرؤه nginx. دون الخيار -c يضيف مستخدماً إلى الملف الموجود.

  3. اكتب المضيف الافتراضي

    في /etc/nginx/conf.d/plex.conf كتلة server فيها listen 443 ssl; وserver_name plex.your-domain.com; وauth_basic "Plex"; وauth_basic_user_file /etc/nginx/.plex-htpasswd;. وفي location / أضف proxy_pass http://127.0.0.1:32400; وproxy_set_header Host $host; وproxy_http_version 1.1; وproxy_set_header Upgrade $http_upgrade; وproxy_set_header Connection "upgrade"; لدعم WebSockets.

  4. احصل على الشهادة وأعد التحميل

    sudo certbot --nginx -d plex.your-domain.com
    sudo nginx -t && sudo systemctl reload nginx
    يجب أن يشير DNS النطاق الفرعي إلى الخادم قبل طلب الشهادة.

  5. اختبر الحالات الثلاث

    curl -sI https://plex.your-domain.com/ يجب أن يردّ 401.
    curl -s -o /dev/null -w '%{http_code}' https://plex.your-domain.com/player/timeline يجب أن يردّ 401 أيضاً دون بيانات اعتماد.
    curl -sI -u alice https://plex.your-domain.com/ يطلب كلمة المرور ثم يردّ 200 أو إعادة توجيه.

البحث عن اختراق سابق للتصحيح

لا تقدّم BleepingComputer أي مؤشر محدد، لا بصمة ولا عنواناً ولا نطاقاً، ولذلك لا نستطيع أن نعطيك قائمة توقيعات للبحث عنها. يبقى السلوك، وهو بليغ. خادم الوسائط لا يشغّل صدفة أوامر، ولا يحمّل شيئاً في الخلفية، ولا يستهلك نواة كاملة باستمرار، ولا يتصل بعناوين مجهولة. افحص الفترة منذ الإصدار الضعيف، وعلى الأقل منذ نشر التفاصيل في أكتوبر 2026. غياب الأثر لا يثبت غياب الاختراق لأن برنامج التعدين قد يُعاد تسميته؛ أما وجود الأثر فدليل كافٍ.

سبعة فحوص مع أمر كل منها

  • عمليات فرعية غير متوقعة — ps -eo pid,ppid,user,lstart,args --forest | grep -B1 -A4 -i "plex media server". الفروع الطبيعية تحمل أسماء Plex (محوّل الترميز، مضيف السكربتات)؛ أما sh أو bash أو curl أو ملف ثنائي مُطلق من /tmp فمريب.
  • استهلاك المعالج — ps aux --sort=-%cpu | head -5. عملية غريبة عن Plex تشغل المعالج باستمرار توحي ببرنامج تعدين؛ وpgrep -a -i xmrig يبحث عن أشهرها دون استبعاد اسم مستعار.
  • ملفات مجهولة في مجلد Codecs — sudo ls -lat "/var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Codecs". يحفظ Plex هناك ترميزاته: اسم لا تعرفه أو تاريخ لا علاقة له بأي عملية ترميز يستحق الفحص. مع Docker يوجد المسار نفسه في المجلد المركَّب على /config.
  • ملفات تنفيذية حديثة خارج الحزم — sudo find /tmp /var/tmp /dev/shm /var/lib/plexmediaserver -xdev -type f -perm /111 -mtime -60 2>/dev/null. كل ملف تنفيذي في هذه المجلدات لم تثبّته أنت يحتاج إلى تفسير.
  • الاتصالات الصادرة — sudo ss -tupn state established | grep -i plex ثم sudo ss -tupn state established. ابحث عن اتصالات بعناوين لا تعرفها، خاصة إن صدرت عن عملية ليست Plex.
  • سجلات الخدمة — sudo journalctl -u plexmediaserver --since "2026-10-01" | grep -iE "timeline|transcode|error". ابحث عن استدعاءات متكررة لـ /player/timeline أو أخطاء ترميز دون تشغيل جارٍ.
  • الاستمرارية — sudo crontab -l -u plex وsudo systemctl list-timers --all وsudo find /etc/systemd/system /etc/cron.d -mtime -60. مهمة مجدولة أو خدمة حديثة لم تنشئها علامة على أن أحداً يريد العودة.

إن ظهر أثر: أعد البناء بدل التنظيف

العثور على برنامج تعدين يثبت وقوع اختراق، لا أنه اقتصر على برنامج التعدين. اعزل الخادم أولاً: sudo ufw default deny incoming مع السماح بـ SSH من عنوانك وحده. صدّر السجلات قبل أن تُدوَّر، مثلاً بالأمر sudo journalctl -u plexmediaserver > plex-journal.txt. ثم أعد بناء الـ VPS من صورة نظيفة، وثبّت الإصدار المصحَّح قبل فتح أي شيء، ولا تستعد إلا وسائطك وقاعدة المكتبة بعد مراجعتها. وأخيراً غيّر كل ما كان حساب الخدمة قادراً على قراءته: مفاتيح SSH وكلمة مرور Plex والرموز وأسرار البيئة. والخادم المحصَّن من جهة Plex يبقى مكشوفاً إن لم تواكب النواة ذلك: راجع مقالنا عن ثغرة النواة Fragnesia.

استكشاف الأخطاء: خمس حالات واجهناها

  • «plexmediaserver is already the newest version» مع أن الإصدار قديم — مستودع Plex غير مهيّأ على الجهاز. نزّل الحزمة من صفحة التنزيل الرسمية لـ Plex ثم نفّذ sudo apt install ./plexmediaserver_*‎.deb.
  • الحاوية ما زالت تعرض الإصدار القديم بعد docker pull — الأمر docker pull ينزّل الصورة لكنه لا يستبدل الحاوية العاملة. نفّذ docker compose up -d --force-recreate.
  • المنفذ 32400 ما زال قابلاً للوصول رغم ufw deny — يكتب Docker قواعده ويمرّ قبل ufw. انشر المنفذ على 127.0.0.1:32400:32400 كما سبق.
  • تطبيقات Plex لا تجد الخادم بعد إغلاق المنفذ — كانت تبحث عن العنوان العام. مرّ عبر شبكة VPN وأضف الخادم بعنوان النفق.
  • nginx يردّ 401 على التطبيقات لا على المتصفح — التطبيقات لا تدعم مصادقة HTTP Basic. خصّص الوكيل للمتصفح وأعطِ التطبيقات الشبكة الخاصة.

المصادر، وما لا يقوله أي بيان من الناشر

لم نعثر على بيان أمني من Plex يسرد هذه الثغرات. العنصر الوحيد من الناشر الذي وجدناه هو إعلان الإصدار 1.43.3.10861 في منتدى Plex، المنشور في 4 أغسطس 2026: لا يذكر أي ثغرة ولا CVE. رقم الإصدار المصحَّح وربط الثغرات الأربع والدرجة مصدرها BleepingComputer التي تنقل عن CISA والباحث: قارنها بما ينشره الناشر حالما يصدر بيانه. لا نذكر تاريخ الإضافة إلى كتالوج KEV لأننا لم نتمكن من تأكيده في كتالوج CISA. وإن كنت تفضّل ترك Plex بدل تحصينه، فدليل الانتقال إلى Jellyfin عندنا يعالج ذلك على حدة.

التوثيق الرسمي

مقال BleepingComputer عن Plex2Shell: https://www.bleepingcomputer.com/news/security/cisa-hackers-chain-plex-flaws-in-plex2shell-attacks-to-breach-servers

إعلان الإصدار 1.43.3.10861 في منتدى Plex: https://forums.plex.tv/t/plex-media-server/30447/713

كتالوج الثغرات المستغلة لدى CISA: https://www.cisa.gov/known-exploited-vulnerabilities-catalog

تنزيل Plex Media Server: https://www.plex.tv/media-server-downloads/

وحدة auth_basic في nginx: https://nginx.org/en/docs/http/ngx_http_auth_basic_module.html

Docker وجدران الحماية: https://docs.docker.com/engine/network/packet-filtering-firewalls/

WireGuard، البدء السريع: https://www.wireguard.com/quickstart/

خادم VPS تقرّر فيه ما يُكشف

مع خادم VPS من ServOrbit.com تملك صلاحيات root وعنوان IPv4 مخصصاً وجدار حماية خاصاً بك: أنت تختار ما يخرج إلى الإنترنت ويمكنك عزل خادم الوسائط. إدارة الـ VPS متاحة كخيار لمن لا يريد التحصين بمفرده؛ وهي غير مشمولة. دليل مقدَّم دون دعم مباشر.

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

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

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