الأخبار

Jellyfin 12 يغلق ثغرة حرجة، والتحديث يحتاج نسخة احتياطية قبله

أغلق Jellyfin 12 ست ثغرات أمنية، أخطرها يسمح بحذف مجلد البيانات من سيرفر حديث التثبيت دون كلمة مرور، لكن التحديث يغير قاعدة البيانات ولا رجوع عنه إلا من نسخة احتياطية، فخذها قبل أن تبدأ.

Jellyfin 12 يغلق ثغرة حرجة، والتحديث يحتاج نسخة احتياطية قبله

إذا كنت تدير سيرفر Jellyfin وما زال يعمل بالإصدار 10.11 فقد حان وقت التحديث Upgrade، والسبب أن فريق المشروع نشر في 22 سبتمبر 2026 تفاصيل ست ثغرات أمنية Vulnerabilities في الإصدارات السابقة، إحداها حرجة Critical تسمح بحذف مجلد البيانات بالكامل من سيرفر حديث التثبيت دون أي كلمة مرور، وكلها أغلقها الإصدار الجديد. فقد صدر الإصدار 12.0 في 8 سبتمبر 2026، وتلاه بعد أسبوع الإصدار 12.1 ومعه 47 إصلاحاً، وهو أحدث إصدار حتى الآن.

لكن هذا التحديث يحتاج تخطيطاً قبل أن تبدأ، لأن الإصدار 12.0 يعدل بنية قاعدة البيانات Database Schema، ولا يمكن الرجوع إلى الإصدار السابق Downgrade إلا من نسخة احتياطية Backup، لذلك فالنسخة الاحتياطية هي الخطوة الأولى وليست خطوة اختيارية.

ما الثغرات التي أغلقها الإصدار الجديد؟

  • حرجة (GHSA-6828-c7cx-hvqm): كانت أوامر حذف المكتبة وإعادة تسميتها تقبل مسارات Paths خارج مجلد المكتبات، وبالتالي يستطيع المهاجم حذف أو نقل أي مجلد يملك السيرفر صلاحية الكتابة Write Permission عليه، بما في ذلك مجلد البيانات Data Directory وملف jellyfin.db. والخطر الأكبر في السيرفر حديث التثبيت، لأن هذه الأوامر تبقى متاحة دون مصادقة Authentication حتى تنتهي من معالج الإعداد Setup Wizard، أما بعد ذلك فلا يصل إليها إلا المسؤول. وقد أغلقها الإصدار 12.0.
  • عالية (GHSA-cf3c-8m59-2vhx): يكفي ملف SVG معد بطريقة خاصة، يرفعه أي مستخدم مسجل كصورة لحسابه، حتى يدفع السيرفر إلى قراءة ملفات محلية أو الاتصال بعناوين خارجية أثناء معالجته، وهذا يستنزف الذاكرة Memory ويفتح الباب لهجمات SSRF. وقد أغلقها الإصدار 12.0.
  • متوسطة (GHSA-4vx8-xhc9-qg6x): كانت تسمح لأي مستخدم مسجل بالتحكم في جلسة تشغيل Playback Session مستخدم آخر وإرسال أوامر إلى جهازه متى عرف معرف الجلسة، وهذا المعرف يمكن حسابه دون سرقته، وتشمل الثغرة كل الإصدارات حتى 12.0-RC5.
  • متوسطة (GHSA-hw73-62vp-9gxf): مسارات قديمة لبث HLS لم تكن تتحقق من المسار المطلوب، فكان من الممكن تنزيل أي ملف من السيرفر، واثنان من هذه المسارات لا يحتاجان تسجيل دخول.
  • متوسطة (GHSA-9x85-gx46-6522): كان أي مستخدم عادي يستطيع قراءة محتوى قائمة تشغيل Playlist خاصة بمستخدم آخر.
  • منخفضة (GHSA-c39p-cgf8-866g): إضافة Plugin خبيثة تستطيع عبر ملف التعريف Manifest الخاص بها قراءة ملفات خارج مجلد الإضافات.

ولاحظ أن هذه النشرات لا تحمل أرقام CVE حتى الآن، وأن الإصدار 12.1 أضاف إصلاحاً آخر مهماً: أصبح إلغاء وصول جهاز Device Access يسجل خروج جلساته المفتوحة فعلاً، بعد أن كانت تبقى تعمل.

ما الجديد في الإصدار 12.0؟

من أبرز ما في الإصدار دعم أكثر من نسخة Multiple Versions للحلقة الواحدة، وتنظيم جديد لقوائم التشغيل والمجموعات Collections داخل قاعدة البيانات، وتسريع قائمتي Resume وNext Up، وتحديث FFmpeg إلى الإصدار 8.1 الذي يستخدمه السيرفر في تحويل الفيديو Transcoding، كما أصبح التخطيط Modern هو الشكل الافتراضي لواجهة الويب Web UI وأصبح الشكل القديم باسم Legacy، وتحسنت صفحة الكتب.

ولمن يشغل Jellyfin داخل Containers أضاف الإصدار خيار التشغيل --mode، الذي يسمح بتنفيذ ترحيل Migration قاعدة البيانات دون تشغيل السيرفر نفسه، وهذا مفيد إذا أردت أن تتحكم في توقيت الترحيل بدل أن يحدث عند أول تشغيل.

ماذا تفعل الآن؟

🛑
يعدل الإصدار 12 بنية قاعدة البيانات، ولا يمكن الرجوع إلى إصدار أقدم إلا من نسخة احتياطية كاملة، لذلك قم بنسخ مجلد البيانات بأكمله قبل أن تبدأ.

توصيتنا أن تنتقل مباشرة إلى الإصدار 12.1 في أقرب فترة صيانة Maintenance Window، وألا تؤجل إذا كان سيرفرك متاحاً عبر الإنترنت، والخطوات كما يلي:

  1. خذ نسخة كاملة من مجلدات الإعداد والبيانات كما تشرح صفحة النسخ الاحتياطي والاستعادة الرسمية، إما بأداة النسخ الاحتياطي المدمجة في لوحة التحكم، وإما يدوياً بعد إيقاف السيرفر بالأمر docker compose stop، والسبب في الإيقاف أن نسخ قاعدة البيانات وهي مفتوحة قد يعطيك نسخة لا تصلح للاستعادة، وهذه النسخة هي طريقك الوحيد للرجوع إذا فشل الترحيل.
  2. تأكد من نقطة البداية، فالترقية المباشرة مدعومة من الإصدار 10.10.7 أو من أي إصدار في السلسلة 10.11، أما إذا كان سيرفرك أقدم فقم بترقيته إلى 10.10.7 أولاً.
  3. احذف الإضافات Plugins غير المدمجة قبل الترقية ثم أعد تثبيتها بعدها، وإذا كنت قد غيرت مستودع Repository الإضافات فأرجعه إلى المستودع المستقر Stable.
  4. إذا كان لديك مستخدمان يحملان الاسم نفسه ولا يختلفان إلا في حالة الأحرف Case Sensitivity، فقم بتعديل أحد الاسمين قبل الترقية، لأن الأسماء أصبحت فريدة بغض النظر عن حالة الأحرف.
  5. غير وسم Tag ال Docker Image في ملف compose إلى jellyfin/jellyfin:12.1 بدل latest، ثم اسحب ال Image الجديد وأعد إنشاء ال Container بالأمرين docker compose pull وdocker compose up -d، وإذا لم يكن Docker مثبتاً عندك فقد شرحنا ذلك في دليل تثبيت Docker على Ubuntu. ولاحظ أن الفريق توقف عن بناء حزم Packages لتوزيعتي Debian Bullseye وUbuntu Focal، فإذا كنت تثبت من الحزم على إحداهما فقد حان وقت ترقية النظام.
  6. بعد الترقية قم بمسح كامل Full Scan للمكتبة حتى تعود النسخ البديلة Alternate Versions، وسوف يأخذ المسح الأول وقتاً أطول بكثير من المعتاد، وقد تظهر بعض الأفلام وكأنها أضيفت حديثاً.
  7. تحقق من التطبيقات التي يستخدمها أهل البيت على التلفاز والهواتف قبل أن تعتبر المهمة منتهية، والسبب أن الإصدار حذف المسارين القديمين /emby و/mediabrowser وعطل طرق التفويض Authorization القديمة افتراضياً، وبالتالي قد تتوقف بعض التطبيقات القديمة التي تطورها جهات خارجية.

وإذا كنت تثبت سيرفراً جديداً فلا تقم بفتحه على الإنترنت قبل أن تنهي معالج الإعداد، فهذه بالتحديد هي الفترة التي استغلتها الثغرة الحرجة، وقد شرحنا كيف تنشر خدماتك بأمان خلف Reverse Proxy مع شهادة TLS في دليل Nginx Proxy Manager.

المصدر: ملاحظات إصدار Jellyfin 12.0 · ملاحظات إصدار Jellyfin 12.1 · نشرة الثغرة الحرجة

نشرة عرب رووت | ArabRoot

معرفة تستحق مكاناً في بريدك.

مقالات مختارة وأدوات مفيدة وأفكار لمشروعك القادم، في رسالة واحدة كل أسبوع.

يمكنك إلغاء الاشتراك متى شئت. الخصوصية

تم استلام طلبك. افتح بريدك واضغط رابط التأكيد لإتمام الاشتراك.