أخبار الثغرات

ثغرة في ووردبريس 2.8.3

تم أرشفة هذا المحتوى


اكتشفت ثغرة في سكريبت التدوين ووردبريس و WordPress-MU أصابت الاصدار 2.8.3 وجميع الاصدارات التي قبله, تمكّن هذه الثغرة المهاجم من تغيير كلمة مرور مدير المدونة دون علمه عن طريق استغلال خطأ في دالة تغيير كلمة المرور reset_password الموجودة في ملف wp-login.php.

WordPress

 

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

عندما يريد أحد المستخدمين تغيير كلمة المرور الخاصة به يتوجّه للرابط:

/wp-login.php?action=lostpassword

فيطلب منه سكريبت ووردبريس ادخال اسم المستخدم أو الايميل المسجّل ثم يقوم بارسال ايميل تأكيدي يحتوي على رابط تغيير كلمة المرور يشبه هذا:

/wp-login.php?action=rp&key=JR9PSKe5UDeqRCFkOXEs

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

 

اذا اطلعنا على الكود المصدري لملف wp-login.php سنرى في السطر 188 فلترة مدخلات المستخدم بشكل صحيح (بهذه الحالة هو المتغير key) عن طريق استخدام regex:

$key = preg_replace(‘/[^a-z0-9]/i’, ”, $key);

ثم يتم التأكد من قيمة المتغير key اذا كان فارغ أم لا بالسطر 190:

if ( empty( $key ) )

بعد ذلك اكمال عملية تغيير كلمة المرور. من ينظر للكود السابق قد لا يجد أي شيء يمكن استغلاله لكن الخطأ الذي وقع به المبرمج هنا أنه لم يتأكد من نوع المتغير key وهنا تمكّن المهاجم من استغلال ذلك عن طريق تحدد key على أنه مصفوفة Array وليس String.

/wp-login.php?action=rp&key[]=

 

حتى تاريخ كتابة هذا الخبر لم يتم اطلاق الاصدار 2.8.4 بعد لكن تم اصلاح الملف wp-login.php في WordPress Trac وأتوقع اطلاق الاصدار 2.8.4 قريبا. كحل مؤقت يمكن ترقيع الثغرة باستبدال السطر 190 الموجود في الملف wp-login.php:

if ( empty( $key ) )

بالسطر التالي:

if ( empty( $key ) || is_array( $key ) )

 

لمزيد من المعلومات: SecurityReasonWordPress Trac

‫6 تعليقات

  1. السلام عليكم .

    كل ما ادهشني في الامر ان فريق كبير من صفوة web developpement يقعون في خطئ برمجي كهذا .. وهدا يأكد ان كلما كبر مشروع ما كلما زادت نسبة وجود اخطاء امنية وبرمجية به .

    اضن ان في 15 يوم لي غبتها حافلة بالاحدات 😀

  2. t4H3r #: انا لما قلت مشروع كبير اقصد قيمة مبرمجيه وكبر خصائصه .. مش ممكن تقارن الاشياء هده مع سكربت لا يتعدى اربع صفحات وإدارة محتوى صغيرة ومبرمجين مبتدئين او تجده مبرمج وااحد على رأس المشروع .
    اما من ناحية الهكر فكن متأكد انهم مبيتركوش شئ في حالة يعني كان كبير او صغير به خطئ ما راح يظهر الخطئ … الفرق هو في السكربتات الكبيرة بسرعة يكتشف العيب لكترة العيون عليها هدا هو الفرق .. لاكن كلما كبر الشئ كلما صعبت السيطرة عليه .
    قريبا سوف ترى ايضا تغرات في مشاريع في تطور مستمر كmetasploit ومتلها من المشاريع الاخرى

  3. أخى dGeeky

    لا اعتقد ان كلما كبر مشروع ما كلما زادت نسبة وجود أخطاء به

    أولاً لا يوجد شئ خالى من الأخطاء

    لكنى أعتقد إن الهاكرز لا يهتمون إلا بالبرامج أو المشروعات الكبيرة لان عدد مستخدميها أكبر وشهرتها أكبر من البرامج أو المشروعات الصغيرة

    فما الفائدة أن يخترق أحد الهاكرز مثلاً موقع لا يعلم به احد أو نظام تشغيل لا يستخدمه إلا عشرة مستخدمين

    هذا رأيى

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

زر الذهاب إلى الأعلى