تنبيه أمني — ثغرات تجاوز المصادقة الثنائية لمايو 2026
في مايو 2026، كُشف عن ثغرتَين حرجتَين لتجاوز المصادقة الثنائية في Nextcloud:
CVE-2026-45690 (درجة CVSS 5.9، كُشف عنها 15 مايو 2026): مهاجم يملك اسم المستخدم وكلمة المرور يستطيع تجاوز التحقق الثنائي عبر HTTP Basic Auth.
CVE-2026-45691 (درجة CVSS 5.9، كُشف عنها 13 مايو 2026): نفس فئة الثغرة، لكنها قابلة للاستغلال عبر رمز Bearer DAV — بروتوكول WebDAV المستخدم من عملاء المزامنة.
كلتا الثغرتَين مُصلَّحتان في Nextcloud 32.0.9 (الفرع 32) و33.0.3 (الفرع 33) و34.0.2 (الفرع 34). تحقق من تعرّض مثيلك (انظر القسم المخصص أدناه).
NC 34.0.0 — تطبيقات موصى بها غائبة عند أول تشغيل
يُدخل Nextcloud 34.0.0 انحداراً في معالج التثبيت: التطبيقات الموصى بها (Notes، Calendar، Contacts) غير مقترحة خلال الإعداد الأولي. تبقى قائمة التطبيقات المقترحة فارغة بغض النظر عن ملف التثبيت المختار.
التأثير العملي: مثيل NC 34.0.0 الجديد يفتقر إلى تطبيقات الإنتاجية الأساسية. المستخدمون الذين يتوقعون مزامنة تقويم CalDAV أو جهات الاتصال CardDAV عليهم تثبيتها يدوياً من واجهة الإدارة.
المصادر: مشكلات GitHub #61313 و#61611 — مُصلَّحة في 34.0.2.
التحقق من وجود التطبيقات:
docker compose exec -u www-data app php occ app:list | grep -E 'calendar|contacts|notes'إذا لم تُرجع الأمرُ شيئاً، فالتطبيقات غير مثبتة. لإضافتها يدوياً:
docker compose exec -u www-data app php occ app:install calendar
docker compose exec -u www-data app php occ app:install contacts
docker compose exec -u www-data app php occ app:install notesالتوصية: ابدأ مباشرةً بـ 34.0.2 أو أحدث بدلاً من 34.0.0. إذا كان مثيلك يعمل بالفعل على 34.0.0، فالتحديث إلى 34.0.2 يُعيد تشغيل المعالج، لكن التطبيقات الغائبة على المثيل الموجود تحتاج مع ذلك إلى تثبيت يدوي.
NC 34.0.0 — قيد مُضاعَف على PostgreSQL وانفجار في استهلاك CPU
على المثيلات التي تستخدم PostgreSQL (بدلاً من MariaDB/MySQL)، قد تترك عملية ترحيل Nextcloud 34.0.0 المُقاطَعة قيداً مُضاعَفاً على جدول oc_filecache_extended. لا يُلاحَظ هذا التضاعف عند بدء التشغيل، لكنه يُطلق انفجاراً في استهلاك CPU وRAM خلال فحص الملفات التالي (files:scan) أو الصيانة التلقائية.
الأعراض: حِمل CPU مرتفع بشكل غير طبيعي على حاوية Nextcloud، فحص ملفات لا يكتمل، أخطاء في السجلات من قبيل duplicate key value violates unique constraint.
المصدر: مشكلة GitHub #61597.
التحقق والإصلاح:
# 1. تنظيف إدخالات ذاكرة التخزين المؤقت للملفات الأيتام
docker compose exec -u www-data app php occ files:cleanup
# 2. إعادة إنشاء الفهارس المفقودة على الجدول المتأثر
docker compose exec -u www-data app php occ db:add-missing-indices
# 3. التحقق من عدم وجود أعمدة مفقودة
docker compose exec -u www-data app php occ db:add-missing-columnsإذا استمرت الأخطاء، قم بالترقية مباشرةً إلى 34.0.2 الذي يحتوي على إصلاح الترحيل.
ملاحظة: هذه المشكلة لا تؤثر على مثيلات MariaDB/MySQL. يجب على مثيلات PostgreSQL الإنتاجية على NC 34.0.0 تطبيق هذه الأوامر قبل الفحص التلقائي التالي.
المتطلبات والتحجيم
التكوين الأدنى الموصى به:
- خادم VPS بـ 2 جيجابايت ذاكرة (4 جيجابايت لأكثر من 5 مستخدمين نشطين).
- أقراص SSD إلزامية: Nextcloud تُجري عمليات ملفات ومصغرات كثيرة.
- 20 جيجابايت مساحة كحد أدنى إضافةً إلى مساحة بياناتك.
- Ubuntu 22.04 أو Debian 12.
- Docker Engine ≥ 24 وDocker Compose V2.
- اسم نطاق وشهادة TLS (Let's Encrypt عبر Certbot).
تثبيت Nextcloud باستخدام Docker Compose
الخطوة 1 — إنشاء هيكل المشروع
أنشئ /opt/nextcloud/docker-compose.yml مع MariaDB 10.11 وRedis 7-alpine وNextcloud nextcloud:34.0.2-apache. اربط التطبيق بـ127.0.0.1:8080:80.
الخطوة 2 — تشغيل الحاويات
docker compose up -d
docker compose logs -f appيستغرق أول تشغيل من 2 إلى 4 دقائق. انتظر رسالة Nextcloud was successfully installed.
الخطوة 3 — ضبط Nginx مع TLS
ثبّت Nginx وCertbot، أنشئ موقع Nextcloud مع client_max_body_size 10G; ورؤوس proxy، ثم شغّل certbot --nginx -d cloud.yourdomain.com.
الخطوة 4 — ضبط Redis لأداء أفضل
تعمل Nextcloud ببطء بدون Redis. أضف إلى config.php:
'memcache.local' => '\\OC\\Memcache\\APCu',
'memcache.locking' => '\\OC\\Memcache\\Redis',
'redis' => ['host' => 'redis', 'port' => 6379],تحقق من الاتصال: docker compose exec -u www-data app php occ config:system:get redis
الخطوة 5 — ضبط SMTP للإشعارات بالبريد الإلكتروني
تُرسل Nextcloud إشعارات بالبريد الإلكتروني لمشاركة الملفات وإعادة تعيين كلمة المرور و2FA. اضبط SMTP في الإدارة → الإعدادات الأساسية:
- المنفذ: 587 (STARTTLS)
- المصادقة: مطلوبة
اختبر بـ إرسال بريد إلكتروني تجريبي.
تحسين الأداء باستخدام Redis وOPcache
Nextcloud بدون Redis بطيئة. تؤدي Redis دورَين حيويَّين: تخزين الجلسات مؤقتاً (تتجنب قراءات/كتابات القرص عند كل طلب مُعتمَد) وقفل موزع (file locking) يمنع التعارضات أثناء المزامنات المتزامنة.
تحقق من اتصال Redis:
docker compose exec -u www-data app php occ config:system:get redisإذا لم يظهر شيء، أضف إعداد Redis يدوياً إلى config.php.
التحقق من تعرّض مثيلك لثغرات CVE للمصادقة الثنائية
فحص الإصدار الحالي:
docker compose exec -u www-data app php occ statusالإصدارات المعرّضة: جميع Nextcloud 32.x < 32.0.9 و33.x < 33.0.3 و34.x < 34.0.2.
التحديث إلى 34.0.2:
sed -i 's|nextcloud:[0-9.]*-apache|nextcloud:34.0.2-apache|g' docker-compose.yml
docker compose pull app && docker compose up -d app
docker compose exec -u www-data app php occ upgradeالأخطاء الخمسة الأكثر شيوعاً
1. Redis غير مُعدّ — واجهة بطيئة وتعارضات في المزامنة.
2. overwrite.cli.url يشير إلى http:// بدل https:// — روابط المشاركة والإشعارات تُنشئ روابط غير آمنة.
3. trusted_domains غير مُعدّ بشكل صحيح — خطأ 'untrusted domain'.
4. حجم الرفع محدود بـ 2 ميجابايت — القيمة الافتراضية لـPHP صغيرة جداً.
5. تحديثات أمنية مفقودة — مثيلات تبقى عُرضة للخطر دون تصحيح منتظم.
التحقق من فاعلية Redis باستخدام occ
# فحص الحالة العامة للمثيل
docker compose exec -u www-data app php occ status
# سرد تحذيرات الإعداد (memcache، Redis، HTTPS...)
docker compose exec -u www-data app php occ check
# عرض إعداد Redis الحالي
docker compose exec -u www-data app php occ config:system:get redisأمر occ check يُدرج جميع مشكلات الإعداد المكتشفة. هو أول تشخيص يجب إجراؤه على أي مثيل Nextcloud قائم.
نسخ Nextcloud احتياطياً — البيانات وقاعدة البيانات والإعداد
تخزّن Nextcloud بياناتها في ثلاثة أماكن — يجب نسخ الثلاثة احتياطياً:
1. قاعدة بيانات MariaDB: البيانات الوصفية للملفات والمستخدمون والمشاركات.
2. حجم nextcloud: كود PHP والتطبيقات المثبَّتة وconfig/config.php.
3. ملفات المستخدمين.
docker compose exec -u www-data app php occ maintenance:mode --on
docker compose exec -T db mysqldump -u nextcloud -p${MYSQL_PASSWORD} nextcloud | gzip > /opt/nextcloud/backups/db-$(date +%Y%m%d).sql.gz
docker compose exec -u www-data app php occ maintenance:mode --offتحديث Nextcloud في الإنتاج
نفّذ التحديثات دائماً مع تفعيل وضع الصيانة:
docker compose exec -u www-data app php occ maintenance:mode --on
sed -i 's|nextcloud:[0-9.]*-apache|nextcloud:34.0.2-apache|g' docker-compose.yml
docker compose pull app && docker compose up -d app
docker compose exec -u www-data app php occ upgrade
docker compose exec -u www-data app php occ maintenance:mode --offالخطوات التالية — المضي أبعد مع مثيلك
بعد تثبيت Nextcloud وتأمينها:
تفعيل Talk (مؤتمرات الفيديو): ثبّت تطبيق Nextcloud Talk من واجهة الإدارة.
تفعيل OnlyOffice أو Collabora Online: هذه التطبيقات تحتاج حاوية Docker مستقلة.
مراقبة مثيلك: ضبط التنبيهات في الإدارة → المراقبة لتلقّي إشعارات بالبريد الإلكتروني عند اكتشاف Nextcloud أي أخطاء أو تحديثات أمنية.