أكثر من مليون موقع علىموعد مع حقن أكواد ضارة!بقاعدة البيانات بسبب

أكثر من مليون موقع على موعد مع حقن أكواد ضارة بقاعدة البيانات بسبب!

في 25 مارس 2024، تم اكتشاف ثغرة [unauthenticated SQL Injection vulnerability] في إضافة [LayerSlider] المثبتة في أكثر من مليون موقع ويمكن الاستفادة من هذه الثغرة الأمنية لاستخراج البيانات الحساسة من قاعدة البيانات، مثل (Password Hashes).

المحتوى

ما هي إضافة LayerSlider؟

محرر محتوى ويب مرئي، وبرنامج تصميم رسومي، وتطبيق تأثيرات بصرية رقمية، الكل في واحد.

الإصدار المٌصاب

الإصدار المصاب من إضافة LayerSlider

التحليل الفني للثغرة

البرنامج المساعد LayerSlider لـ WordPress عرضة لحقن SQL عبر الإجراء ls_get_popup_markup في الإصدارين 7.9.11 و7.10.0 بسبب عدم كفاية escaping  على الباراميتر التي قدمها المستخدم وعدم وجود إعداد كاف لاستعلام SQL الموجود.
وهذا يجعل من الممكن للمهاجمين غير المصادقين إلحاق استعلامات SQL إضافية بالاستعلامات الموجودة بالفعل والتي يمكن استخدامها لاستخراج معلومات حساسة من قاعدة البيانات.

لسوء الحظ، فإن التنفيذ غير الآمن لوظيفة الاستعلام عن العلامات المنبثقة لشريط التمرير الخاص بالمكون الإضافي يسمح بإدخال SQL. يكشف فحص الكود أن المكون الإضافي يستخدم وظيفة ls_get_popup_markup() للاستعلام عن علامات التمرير للنوافذ المنبثقة، حيث يمكن تحديد المعرف باستخدام الباراميتر “id”.

				
					function ls_get_popup_markup() {
 
    $id     = is_numeric( $_GET['id'] ) ? (int) $_GET['id'] : $_GET['id'];
    $popup = LS_Sliders::find( $id );
 
    if( $popup ) {
        $GLOBALS['lsAjaxOverridePopupSettings'] = true;
        $parts  = LS_Shortcode::generateSliderMarkup( $popup );
        die( $parts['container'].$parts['markup'].'<script>'.$parts['init'].'</script>' );
    }
 
    die();
}
				
			

إذا لم يكن الباراميتر 'id' رقمًا، فسيتم تمريرها دون تصحيح إلى وظيفة find() في فئة LS_Sliders، والتي تستعلم عن أشرطة التمرير كما يلي، إذا لم تكن $args رقمًا ولا سلسلة، ولا مصفوفة أعداد صحيحة خاصة :

				
					public static function find( $args = [] ) {
 
$userArgs = $args;
 
// Find by slider ID
if(is_numeric($args) && intval($args) == $args) {
    return self::_getById( (int) $args );
 
// Random slider
} elseif($args === 'random') {
    return self::_getRandom();
 
// Find by slider slug
} elseif(is_string($args)) {
    return self::_getBySlug($args);
 
// Find by list of slider IDs
} elseif(is_array($args) && isset($args[0]) && is_numeric($args[0])) {
    return self::_getByIds($args);
 
// Find by query
} else {
 
 
    // Defaults
    $defaults = [
        'columns' => '*',
        'where' => '',
        'exclude' => ['removed'],
        'orderby' => 'date_c',
        'order' => 'DESC',
        'limit' => 30,
        'page' => 1,
        'groups' => false,
        'data' => true,
        'drafts' => false
    ];
     
    // Merge user data with defaults
    foreach( $defaults as $key => $val ) {
        if( ! isset( $args[ $key ] ) ) {
            $args[ $key ] = $val;
        }
    }
     
    // Escape user data
    foreach( $args as $key => $val ) {
        if( $key !== 'where' ) {
            $args[ $key ] = esc_sql( $val );
        }
    }
				
			

يتم الـ escaped من جميع قيم args $ باستخدام الدالة esc_sql()، باستثناء قيمة "where".

				
					// Where
$where = '';
if(!empty($args['where']) && !empty($args['exclude'])) {
    $where = "WHERE ({$args['exclude']}) AND ({$args['where']}) ";
 
} elseif(!empty($args['where'])) {
    $where = "WHERE {$args['where']} ";
 
} elseif(!empty($args['exclude'])) {
    $where = "WHERE {$args['exclude']} ";
}
				
			
				
					$sliders = $wpdb->get_results("
    SELECT SQL_CALC_FOUND_ROWS {$args['columns']}
    FROM $table
    $where
    ORDER BY `{$args['orderby']}` {$args['order']}, name ASC
    LIMIT {$args['limit']}
 
", ARRAY_A);
				
			

تتم إضافة عبارة WHERE إلى الاستعلام بدون وظيفة WordPress wpdb Prepar(). ستقوم وظيفة prepare()  بتحديد باراميترز استعلام SQL والهروب منه من أجل التنفيذ الآمن في WordPress، وبالتالي توفير الحماية ضد هجمات حقن SQL.

نظرًا لأن [Union-Based SQL injection] غير ممكن بسبب بنية الاستعلام، فسيحتاج المهاجم إلى استخدام أسلوب أعمى يعتمد على الوقت لاستخراج المعلومات من قاعدة البيانات. هذا يعني أنهم سيحتاجون إلى استخدام عبارات SQL CASE مع أمر SLEEP() أثناء مراقبة وقت الاستجابة لكل طلب لسرقة المعلومات من قاعدة البيانات. هذه طريقة معقدة ولكنها ناجحة في كثير من الأحيان للحصول على معلومات من قاعدة بيانات عند استغلال الثغرات الأمنية في SQL حقن.

الجدول الزمني

25 مارس 2024 – أرسل تقرير بوجود الثغرة في LayerSlider. 

  • 25 مارس 2024 – تم التحقق من صحة التقرير.
  • 25 مارس 2024 – بدء الاتصال مع مبرمجي الإضافة وطُلب منهم تأكيد البريد الوارد للتعامل مع المناقشة.
  • 26 مارس 2024 – أرسل التقرير للمسؤولين وأقروا به وبدأو بالعمل على الإصلاح.
  • 27 مارس 2024 – تم إصدار النسخة المصححة بالكامل من الإضافة، 7.10.1.

رسالة لعملاءي

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

الدعم التقني

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

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

الشهر الواحد

دعم الصيانة والتحديثات
$250
$ 199
99
شهر/
  • صيانة الأعطال التقنية
  • تحديث الأنظمة وحمايتها
  • تأمين المواقع والتطبيقات
  • ضبط وتأمين الاستضافات
  • تصحيح الأكواد البرمجية
  • حماية الملفات البرمجية
  • فحص الفيروسات الدوري
  • نسخ احتياطي آمن

ربع سنوي

دعم الصيانة والتحديثات
$750
$ 569
99
3 أشهر/
  • صيانة الأعطال التقنية
  • تحديث الأنظمة وحمايتها
  • تأمين المواقع والتطبيقات
  • ضبط وتأمين الاستضافات
  • تصحيح الأكواد البرمجية
  • حماية الملفات البرمجية
  • فحص الفيروسات الدوري
  • نسخ احتياطي آمن
شائعة

نصف سنوي

دعم الصيانة والتحديثات
$1500
$ 1109
99
6 أشهر/
  • صيانة الأعطال التقنية
  • تحديث الأنظمة وحمايتها
  • تأمين المواقع والتطبيقات
  • ضبط وتأمين الاستضافات
  • تصحيح الأكواد البرمجية
  • حماية الملفات البرمجية
  • فحص الفيروسات الدوري
  • نسخ احتياطي آمن

العام الكامل

دعم الصيانة والتحديثات
$3000
$ 2159
99
عام/
  • صيانة الأعطال التقنية
  • تحديث الأنظمة وحمايتها
  • تأمين المواقع والتطبيقات
  • ضبط وتأمين الاستضافات
  • تصحيح الأكواد البرمجية
  • حماية الملفات البرمجية
  • فحص الفيروسات الدوري
  • نسخ احتياطي آمن
الأوفر

ختام المقالة

أرجو أن أكون قد وفقت في إظهار أهمية وخطورة الدعم التقني وأن يكون سردي قد نال إعجابكم وأقبل تعليقاتكم بالأسفل ويسعدني كافة مشاركتكم.. هذه الخدمة لها صفحة منفصلة بها كافة التفاصيل في حالة احتياجك لهذه الخدمة من أجل موقعك الإلكتروني أو تطبيقك ولا تنسى زائري الكريم بتحديث الإضافة الآن لآخر نسخة لكي تكون بأمان حتى توظفني وأفحص موقعك بالكامل وأعطيك تقرير مفصل لكافة أجزاء كيانك البرمجي.

باقات الدعم التقني للأنظمة
للمواقع الإلكترونية والاستضافات وتطبيقات الهواتف وأنظمة سطح المكتب

شارك المقالة للإفادة

نبذة عن الكاتب

Picture of م. أحمد أسامة
م. أحمد أسامة
مهندس برمجيات مصري ● خبرة تزيد عن تسعة أعوام ● مدير لشركة [TGHEZ LTD] - أقدم خدمات تصميم وبرمجة وحماية مواقع الويب وإنشاء تطبيقات الجوال وتوزيع الاستضافات ● شريكًا مؤسسًا لشركة كريتكس كود بأمستردام بهولندا ومهندس مستقل بمنصة المدرسة لتعليم البرمجة بالعربية ● لدي عملاء من 15 دولة حول العالم.

لمعرفة المقالات الجديدة والتواصل معي تابعني عبر:

اختراقات ذات صلة

اكتب تعليقًا

مشترك
إخطار
guest
التقييم
إلى أي درجة أعجبك عملي/مقالتي
0 تعليقات
تعليقات مضمنة
عرض جميع التعليقات

لا يمكنك طباعة شيء من الموقع

Scroll to Top