ثغرة أمنية خطيرة في لغة البرمجة “PHP”

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

الثغرة، التي تحمل المعرف CVE-2022-31631 (CVSS 9.1)، تؤثر على إصدارات PHP 8.0.x قبل 8.0.27، و8.1.x قبل 8.1.15، و8.2.x قبل 8.2.2. تكمن المشكلة في وظيفة PDO::quote() عند استخدامها مع قواعد بيانات SQLite تُستخدم هذه الوظيفة عادةً لتنقية البيانات المدخلة من قبل المستخدم قبل استخدامها في استعلامات قاعدة البيانات، وهي خطوة حاسمة لمنع هجمات حقن SQL

تنشأ الثغرة من مشكلة تجاوز في الأعداد الصحيحة (Integer Overflow) عند تمرير سلسلة نصية طويلة بشكل مفرط إلى PDO::quote، قد تفشل الوظيفة في تهريب المدخلات بشكل صحيح. هذا يمكن أن يؤدي إلى إنشاء استعلامات SQL غير صحيحة، مما يسمح للمهاجمين بحقن أكواد خبيثة والتحكم في قاعدة البيانات.

التفاصيل الفنية:

تكمن المشكلة الأساسية في كيفية تعامل PHP مع أطوال السلاسل النصية، بينما تستخدم وظيفة SQLite الأساسية sqlite3_snprintf() عددًا صحيحًا 32 بتًا لمعلمات الطول، تستخدم وظيفة PDO::quote() في PHP نوع zend_long، والذي يكون عادةً 64 بتًا في الأنظمة الحديثة. هذا الاختلاف يمكن أن يؤدي إلى تجاوز في الأعداد الصحيحة، حيث يتم لف قيمة الطول، مما يؤدي إلى إرجاع سلسلة غير مهروسة بشكل صحيح.

في حالات محددة، يمكن أن يتسبب هذا التجاوز في إرجاع الوظيفة لعلامة اقتباس واحدة فقط، مما يعطل عملية التنقية المقصودة ويفتح الباب أمام هجمات حقن SQL. على الرغم من أن حدود الذاكرة وإعدادات post_max_size قد توفر بعض الحماية، إلا أنها ليست ضمانة موثوقة ضد هذه الثغرة.

الأنظمة المتأثرة:

بينما تكون الأنظمة ذات 32 بت أقل عرضة بسبب التطابق في حجم الأعداد الصحيحة و zend_long، فإن الأنظمة ذات 64 بت معرضة بشكل خاص. تُظهر النصوص البرمجية المقدمة كيفية استغلال هذا التجاوز في هذه الأنظمة.

الخطر:

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

التوصيات:

لذلك، من الضروري أن يقوم جميع مستخدمي PHP بالترقية إلى الإصدارات المصححة: PHP 8.0.27، أو 8.1.15، أو 8.2.2 (أو الإصدارات الأحدث). يجب على مدراء المواقع والمطورين مراجعة أكوادهم بدقة للتأكد من تطبيق ممارسات تنقية البيانات بشكل صحيح، حتى بعد التحديث.

 

 

محمد الشرشابي
محمد الشرشابي
المقالات: 64

اترك ردّاً

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


The reCAPTCHA verification period has expired. Please reload the page.