التحذير من ثغرة في نظامي Mysql وMariaDB تمكن من الولوج إلى قواعد البيانات من دون الحاجة إلى معرفة كلمة المرور

الوقت المقدّر لقراءة هذا المقال: 4 دقيقة و 48 ثانية

قام الباحث Sergei Golubchik بنشر تفاصيل ثغرة أمنية في MySQL  وقواعد MariaDB عبر القائمة البريدية لـ oss-sec وذلك بعيد إصلاح الثغرة من قبل الشركة التي حملت الرقم CVE-2012-2122.

تم استغلال هذه الثغرة بعد إيجاد خلل في النتيجة المتوقعة للتابع memcmp() والذي يُعيد نتيجة تتراوح في المجال [-127, 127] أو مجال (بمعنى آخر) signed character.

في بعض المنصات وضمن شروط معينة، يمكن لهذا التابع أن يعيد قيمة خارج المجال المذكور، مما يؤدي إلى الحصول على نتيجة true للشفرة التي تقوم مثلاً بمقارنة hashed passwords حتى عند إدخال كلمة مرور خاطئة. وبما أن بروتوكول المصادقة يقوم بتوليد قيمة hash مختلفة في كل مرة تتم فيها المصادقة، فإن هناك احتمال 1 من أصل 256 يعني أن أي كلمة مرور ستتجاوز مرحلة المصادقة بنجاح.

ولكن ما علاقة ما سبق بـ MySQL ؟

العلاقة يا سيدي أنه لو قام المهاجم بالمصادقة مع MySQL فهناك احتمال أن يتمكن من تسجيل الدخول باستخدام كلمة مرور خاطئة، وفيما يلي سطر واحد يمكن استخدامه في bash (سطر الأوامر) في نظام Linux لتسجيل الدخول كمستخدم root على MySQL وبدون معرفة كلمة المرور الصحيحة:

$ for i in `seq 1 1000`; do mysql -u root –password=bad -h 127.0.0.1 2>/dev/null; done

مدى انتشار الخلل:

على الرغم من أن الكثير من إصدارات MySQL و MariaDB تحتوي على الخلل المذكور، إلا أن بعض هذه الأنظمة فقط قابلة للاستغلال، ويعود السبب إلى القيمة التي يعيدها التابع memcmp() فيما إذا كانت خارج المجال المطلوب.

في الوضع الافتراضي فإن هذه الحالة الحرجة غير ممكنة، ولكن الاستثناء الأكبر هو في حالة استخدام GCC مع معايير التحسين SSE optimization أثناء الـ compilation، هذا وقد قام الباحث Joshua Drake بنشر الشفرة المصدرية لبرنامج قادر على تحديد فيما إذا كان النظام مصاباً أم لا.

حتى الآن، فقد تم تحديد أن الأنظمة التالية مصابة فعلاً بهذا الخلل:

  • Ubuntu Linux 64-bit ( 10.04, 10.10, 11.04, 11.10, 12.04 ) ( via many including @michealc )
  • OpenSuSE 12.1 64-bit MySQL 5.5.23-log ( via @michealc )
  • Fedora 16 64-bit ( via hexed )
  • Arch Linux (unspecified version)

بينما أظهرت التعليقات التي وصلت لفريق عمل Metasploit، أن الأنظمة التالية غير مصابة:

  • Official builds from MySQL and MariaDB (including Windows)
  • Red Hat Enterprise Linux, CentOS (32-bit and 64-bit) [ not conclusive ]
  • Ubuntu Linux 32-bit (10.04, 11.10, 12.04, likely all)
  • Debian Linux 6.0.3 64-bit (Version 14.14 Distrib 5.5.18)
  • Debian Linux lenny 32-bit 5.0.51a-24+lenny5 ( via @matthewbloch )
  • Debian Linux lenny 64-bit 5.0.51a-24+lenny5 ( via @matthewbloch )
  • Debian Linux lenny 64-bit 5.1.51-1-log ( via @matthewbloch )
  • Debian Linux squeeze 64-bit 5.1.49-3-log ( via @matthewbloch )
  • Debian Linux squeeze 32-bit 5.1.61-0+squeeze1 ( via @matthewbloch )
  • Debian Linux squeeze 64-bit 5.1.61-0+squeeze1 ( via @matthewbloch )
  • Gentoo 64-bit 5.1.62-r1 ( via @twit4c )
  • SuSE 9.3 i586 MySQL 4.1.10a ( via @twit4c )

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


هل أعجبك هذا المقال؟ أخبر أصدقاءك عنه Share on Facebook0Tweet about this on TwitterShare on Google+5Share on LinkedIn0Buffer this pageEmail this to someoneShare on Reddit0Share on Tumblr0

عن كاتب المقال:

من محاربي الأسمبلي القدامى. أتقن البرمجة بالعديد من اللغات بما يتناسب مع طبيعة المشاريع التي أعمل عليها. مهتم بالنواحي الأمنية للتطبيقات المكتبية، تطبيقات الويب وأمن الشبكات والأنظمة. الرمادي هو لوني المفضّل.