نواة ووردبريس، أي الملفات التي تأتي مع إصدار معيّن، متطابقة على كل موقع يستخدمه. وهذا التطابق هو ما يجعل فحص السلامة ممكنًا. فإذا كانت نسختك من wp-login.php لا تطابق النسخة الرسمية بايتًا ببايت، فقد غيّرها شيء ما، ولا ينبغي لأي أمر مشروع أن يحتاج إلى ذلك.

كيف يعمل

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

لا يحتاج الفحص إلى فهم ما يفعله التغيير. يكفيه أن يعرف أن الملف ليس كما ينبغي. وهذا سؤال أبسط من «هل هذه الشيفرة خبيثة؟»، وله جواب واضح.

لماذا يكشف ما تفوّته الفحوص الأخرى

يبحث ماسح البرمجيات الخبيثة المعتمد على التواقيع عن أنماط خبيثة معروفة. وقد يفوته كود مخصص أو مموّه جيدًا لم يره من قبل. والمهاجمون يعرفون ذلك، وحيلة شائعة هي إضافة بضعة أسطر إلى ملف نواة مثل index.php أو ملف في wp-includes حيث يختلط التغيير بما حوله. تُبرز مقارنة المجاميع الاختبارية هذا التعديل مهما كان تمويه الشيفرة، لذا فهي فعّالة ضد الأبواب الخلفية الجديدة أو المكتوبة يدويًا التي لا تطابق أي توقيع بعد.

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

كيف تشغّله بنفسك

مع SSH وWP-CLI، انتقل إلى مجلد ووردبريس وشغّل:

wp core verify-checksums

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

  • يفحص مجلدات النواة وملفات الجذر. ولا يفحص wp-content حيث قوالبك وإضافاتك وملفاتك المرفوعة، ويتجاهل wp-config.php.
  • إذا كان موقعك يستخدم لغة غير الإنجليزية فأضف --locale=ar (مثلًا) ليقارن بالإصدار الصحيح.
  • بالنسبة إلى الإضافات من دليل WordPress.org يؤدي wp plugin verify-checksums --all المهمة نفسها. أما الإضافات المدفوعة والمخصصة فليست لها مجاميع اختبارية عامة.

وبدون WP-CLI نزّل الإصدار نفسه تمامًا من ووردبريس من wordpress.org، وفكّ ضغطه، وقارن مجلديه wp-admin وwp-includes بمجلدات موقعك بأي أداة مقارنة أو بالأمر diff -r.

ما يعنيه الاختلاف فعلًا

اعتبر أي اختلاف داخل wp-admin أو wp-includes جديرًا بالتحقيق فورًا. فلا ينبغي تعديل شيء هناك يدويًا، لذا يدل التغيير عادةً على ملف مخترق، وأحيانًا على تحديث تالف. وهذه هي الحالات:

  • «File doesn't verify against checksum» تعني أن ملف نواة تغيّر. قارنه بنسخة نظيفة لترى بالضبط ما أُضيف.
  • «File should not exist» تعني وجود ملف زائد بين ملفات النواة. افتحه. وملفات PHP المجهولة في مجلدات النواة علامة قوية على باب خلفي.
  • توجد أيضًا إضافات غير ضارة. فقد تضيف الاستضافة ملف error_log، وبعض المالكين يحذفون readme.html أو license.txt عمدًا. ويمكن تجاهلها بعد أن تعرف سبب وجودها.

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

استعادة ملفات نواة نظيفة

خذ نسخة احتياطية أولًا. ثم من مجلد ووردبريس، يستبدل الأمر wp core download --force --skip-content ملفات النواة بنسخ نظيفة من إصدارك المثبّت ولا يمسّ wp-content ولا wp-config.php. أعد تشغيل الفحص بعدها للتأكد أنه ينجح. واستبدال ملفات النواة لا يزيل بابًا خلفيًا مختبئًا في إضافة أو قالب أو قاعدة البيانات، لذا أتبعه بفحص كامل.

كيف يساعد SiftWP

سلامة ملفات النواة أحد الفحوص التي ينفذها SiftWP كل أسبوع عبر SSH، ويظهر باسم core.checksums في سجل الفحص. يقارن تثبيتك بالمجاميع الاختبارية الرسمية من WordPress.org تلقائيًا وينبّه إلى أي شيء غير متوقع، دون أي إضافة على موقعك ودون أن تضطر إلى تذكّر تشغيله.

ابدأ برصيد مجاني، دون بطاقة