تحديث ووردبريس 7.1.2 يغلق ثغرة RCE خطيرة

تحديث ووردبريس 7.1.2 يغلق ثغرة RCE خطيرة

لو عندك موقع ووردبريس شغال دلوقتي، سيب اللي في إيدك وافتح الإضافات والقوالب والمستخدمين والإعدادات، وما يظهر فيها يختلف حسب دور المستخدم.">لوحة التحكم. النسخة 7.1.2 نزلت يوم 22 سبتمبر 2026 وبتسد ثغرة بتخلي مهاجم ينفّذ كود على السيرفر من غير ما يسجّل دخول أصلاً. والثغرة موجودة من إصدار 4.7 وطالع، يعني الاحتمال كبير جداً إنها بتخصك إنت كمان.

ما الذي أصلحه التحديث بالضبط

الخلل يقع في الدالة (Function) المسماة get_page_template()، وهي المسؤولة عن اختيار ملف القالب في Elementor تصميم محفوظ يُعاد استخدامه، مثل رأس الموقع أو التذييل أو صفحة المقالة أو صفحة المنتج. تصممه مرة وتحدد شروط ظهوره، فيُطبَّق على كل…">القالب الذي سيُستخدم في عرض صفحة معينة. يتتبع بيان الإصدار الأمني الثغرة تحت المعرّفين CVE-2026-87902 و GHSA-7hp8-65ch-5whp.

صياغة البيان الرسمي لا تحتمل التأويل: «Because this is a security release, it is recommended that you update your sites immediately».

أبلغ عن الثغرة الباحث Robert Ressl عبر الإفصاح المسؤول (Responsible Disclosure)، أي أن المشروع علم بها بشكل خاص وأصدر الإصلاح قبل نشر التفاصيل. قاد الإصدار John Blackbourn بمشاركة أكثر من 30 مساهماً.

كيف تتحول ثغرة في مسار ملف إلى تنفيذ كود

تصف LWN.net المشكلة بأنها من نوع اجتياز المسارات (Path Traversal). هذا النوع من الثغرات يحدث عندما يستطيع مدخَل مُعَدّ بعناية أن «يخرج» من المجلد الذي كان البرنامج ينوي البقاء بداخله.

في هذه الحالة يستطيع المهاجم توجيه خطوة اختيار القالب نحو ملف PHP من اختياره. الملف يجب أن يكون موجوداً وقابلاً للقراءة على السيرفر أصلاً، لكنه قد يقع خارج مجلد القالب (Theme) النشط.

هنا يكمن الفرق الجوهري: قراءة ملف تعني تسريب معلومات، أما تحميل ملف PHP وتشغيله فيعني تنفيذ الأوامر عن بُعد (Remote Code Execution) — وهي أخطر فئة على الإطلاق لأنها تمنح المهاجم تحكماً فعلياً بالموقع.

وتضيف LWN أن المهاجم لا يحتاج حساباً على الموقع «in some limited circumstances».

مَن المعرّض فعلاً؟

بيان الإصدار يوضح أن الاستغلال يتطلب «specific server environment and theme conditions»، ولم يفصّل أي مصدر هذه الشروط. الجدول التالي يلخص ما هو مؤكد حتى الآن:

البندالتفصيل
الإصدار المُصلَحووردبريس 7.1.2 بتاريخ 22 سبتمبر 2026
المعرّفاتCVE-2026-87902 و GHSA-7hp8-65ch-5whp
الإصدارات المتأثرة4.7 فما فوق
هل يحتاج تسجيل دخول؟لا
الشرطإعدادات معينة في السيرفر والقالب
المُبلِّغRobert Ressl
قائد الإصدارJohn Blackbourn

جرى نقل الإصلاح (Backport) إلى كل الفروع حتى 4.7. لكن انتبه: المشروع يذكر صراحة أن الإصدار الأحدث وحده هو المدعوم فعلياً، وأن دعم الفروع القديمة تفضّل وليس التزاماً دائماً.

تنبيه: نسخة ClassicPress، وهي نسخة مجتمعية متفرعة من ووردبريس، متأثرة هي الأخرى. وقت نشر تقرير LWN كان تحديثها الأمني لا يزال قيد الإعداد، وتحديث ووردبريس لا يغطيها.

خطوات عملية تنفذها اليوم

  1. تحقق من رقم الإصدار في كل بيئة، لا في الإنتاج فقط. من WP-CLI، وهي أداة سطر الأوامر الخاصة بووردبريس:
wp core version  
  1. خذ نسخة احتياطية (Backup) للملفات وقاعدة البيانات قبل أي شيء. على الاستضافة المشتركة المنتشرة في مصر والخليج، خذها من لوحة الاستضافة ونزّلها على جهازك، لا تكتفِ بنسخة موجودة على نفس السيرفر.

  2. حدّث إلى آخر إصدار في فرعك:

wp core update --minor  
wp core verify-checksums  

الأمر الثاني يقارن ملفات النواة بالنسخة الرسمية ويكشف أي ملف مُعدَّل — وهو فحص مفيد جداً بعد أي حادثة أمنية محتملة.

  1. لا تفترض أن التحديث التلقائي غطّاك. التحديثات التلقائية يمكن إيقافها من wp-config.php أو من لوحة الاستضافة، ونسخ بيئة الاختبار (Staging) والمواقع القديمة المنسية هي غالباً الباب المفتوح.

  2. راجع كل موقع تديره لعميل، لا مواقعك وحدها. لو عندك عشرة مواقع، اكتب قائمة وعلّم عليها موقعاً موقعاً.

ملاحظة: لو موقعك خلف Cloudflare أو جدار حماية للتطبيقات (WAF)، فقواعد الحماية قد تقلل الخطر لكنها لا تلغيه. التحديث هو الإصلاح الوحيد، وما عداه تأخير للمشكلة.

لو كنت تطوّر قوالب

الثغرة تدور حول وصول خطوة اختيار القالب إلى ملفات خارج مجلد القالب. لذلك راجع أي كود لديك يبني مسار ملف انطلاقاً من بيانات قادمة مع الطلب.

القاعدة العملية: لا تبنِ مسار ملف من مدخلات المستخدم مباشرة أبداً. وإن اضطررت، تحقق من أن المسار النهائي ما زال داخل المجلد المسموح به:

// Never build a template path directly from request data.  
$requested = isset( $_GET['tpl'] ) ? wp_unslash( $_GET['tpl'] ) : '';  
$base      = realpath( get_stylesheet_directory() );  
$path      = realpath( $base . '/' . $requested );

// Refuse anything that resolves outside the theme folder.  
if ( ! $path || ! $base || strpos( $path, $base ) !== 0 ) {  
    return;  
}  

الفكرة أن realpath() يفكّ كل محاولات الخروج مثل ../ ويعطيك المسار الحقيقي، ثم تتأكد أن هذا المسار يبدأ فعلاً بمجلد القالب.

في Elementor: القوالب التي تبنيها داخل Theme Builder (أداة بناء قوالب الموقع) لا تمر بهذه الآلية بنفس الطريقة، لكن القالب الأساسي (Parent Theme) الذي يعمل تحتها يمر بها. تحديث النواة يبقى ضرورياً مهما كان منشئ الصفحات (Page Builder) الذي تستخدمه.

بعد التحديث: راقب السجلات

الآن وقد صار الإصلاح علنياً، يستطيع المهاجمون دراسة الفرق بين النسختين لمعرفة موضع الضعف بالضبط. هذه هي الفترة الأخطر عملياً.

راقب سجلات السيرفر بحثاً عن طلبات غريبة تخص ملفات القوالب أو تحتوي على تسلسلات مثل ../. وإن وجدت مواقع تأخر تحديثها، افحص مجلد wp-content/uploads بحثاً عن ملفات PHP لا يفترض وجودها هناك.

الخلاصة

ثغرة تنفيذ أوامر عن بُعد بلا تسجيل دخول، تصيب كل إصدار من 4.7 فما فوق، تعني أن التحديث ليس اختيارياً هذه المرة. النسخة احتياطية أولاً، ثم wp core update --minor، ثم فحص المجموع التحققي للملفات، ثم مراجعة كل بيئة على حدة.

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

المصدر الأصلي: WordPress 7.1.2 fixes get_page_template() RCE flaw — https://dev.to/techaiwire/wordpress-712-fixes-getpagetemplate-rce-flaw-42ef

الأسئلة الشائعة

هل موقعي معرض للاختراق لو لسه على إصدار أقدم من 7.1.2؟

الثغرة موجودة في كل إصدار من 4.7 فما فوق، لكن استغلالها يحتاج ظروفاً معينة في السيرفر والقالب لم يفصح عنها بيان الإصدار. عامل موقعك على أنه معرض حتى تحدّثه، لأن تفاصيل الإصلاح صارت علنية ويمكن دراستها.

هل التحديثات التلقائية غطّتني تلقائياً؟

ليس بالضرورة. التحديث التلقائي قد يكون معطلاً من wp-config.php أو من لوحة الاستضافة، كما أن نسخ بيئة الاختبار والمواقع القديمة تُنسى كثيراً. تحقق من رقم الإصدار في كل بيئة بنفسك.

ما الفرق بين اجتياز المسارات وتنفيذ الأوامر عن بُعد؟

اجتياز المسارات هو خروج الطلب من المجلد المسموح به إلى ملف آخر على السيرفر. يتحول إلى تنفيذ أوامر عن بُعد عندما يكون الملف الذي جرى الوصول إليه ملف PHP يُنفَّذ فعلياً بدل أن يُقرأ كنص.

أنا أستخدم ClassicPress، هل يشملني التحديث؟

لا. ClassicPress نسخة مجتمعية منفصلة، وتحديثها الأمني كان لا يزال قيد الإعداد وقت نشر تقرير LWN. راقب إعلانات المشروع وقلّل من يصل إلى الموقع حتى ينزل الإصلاح.

هل أحتاج نسخة احتياطية قبل تحديث أمني؟

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

اترك تعليقاً