هم بيننا: استكشاف الثغرات الأمنية والكودات الضارة في Zoom for Windows

من أضاف هذا "الزبيب" إلى Zoom؟


في الآونة الأخيرة ، غالبًا ما يسمع المرء الملاحظات التالية:

"نحن / لا نستخدم Zoom للمحادثات السرية"



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

لذلك ، قضيت أمسيتين (ما مجموعه حوالي 5-6 ساعات) في تشريح Zoom for Windows (الإصدار 4.6.11 (20559.0413)). لقد انخرطت فقط في التحليل الثابت ، ولم ألاحظ التطبيق في الوقت الفعلي. ولكن هذا كان كافيا بالنسبة لي. كل شيء وجدته موصوف في هذه المقالة. لكني متأكد من أن هذا مجرد غيض من فيض. تخيل ما يمكن أن يحفره محلل أمني بوقت وميزانية كافيين ... وقد بحثت عن عمد عن نقاط الضعف التي يمكن استخدامها للكشف عن معلومات سرية لأطراف ثالثة (على سبيل المثال ، تسرب المعلومات على Facebook).

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

تطبيق قديم 32 بت


بجدية؟ لكن لماذا؟! أضافت Microsoft دعمًا لتطبيقات 64 بت وتحسينات أمان متنوعة لمعالجات 64 بت ، بدءًا من Windows 7. كان هذا في عام 2009 ، قبل أحد عشر عامًا. وكان Windows 7 نفسه قديمًا منذ فترة طويلة (منذ 14 يناير 2020 ، لم يعد نظام التشغيل هذا مدعومًا). ولكن لا ، في عام 2020 ، لا يزال Zoom يطلق تطبيقات Windows 32 بت فقط.

zData.dll


يستخدم zData.dll مكونًا به ثغرات أمنية. تشتهر مكتبة OpenSSL 1.0.2 الموقوفة (بتاريخ 27 مارس 2018) بنقاط ضعفها التي لن يصلحها أحد.

منذ ديسمبر 2019 ، توقف العمل على OpenSSL 1.0.2. إليك ما يكتبه مطوروها :

"وفقًا للإصدارات الحالية والمستقبلية ، اتخذ مشروع OpenSSL القرارات التالية:

  • الإصدار التالي من OpenSSL سيكون 3.0.0.
  • سيتم دعم الإصدار 1.1.1 حتى 2023-09-11 (LTS).
  • لم يعد الإصدار 1.0.2 مدعومًا. الدعم المدفوع المحسن متاح الآن .
  • لم تعد الإصدارات 1.1.0 و 1.0.1 و 1.0.0 و 0.9.8 مدعومة. "

أو هنا :



دمج عبارات SQL


  • CWE-89 : تحييد العناصر الخاصة لأوامر SQL بشكل غير صحيح (إدخال SQL)

في zData.dll ، يتم استخدام الواجهة الخلفية لتخزين بيانات الجلسة والتكوين المختلفة في قاعدة بيانات SQLite مشفرة. في بعض الحالات ، يبدو أن عبارات SQL في التعليمات البرمجية متسلسلة ببساطة ، كما هو موضح أدناه:

مثال 1:



مثال 2:



بناءً على تنفيذ عامل التشغيل + = ، من المحتمل أن يخلق zData.dll ثغرات إدخال SQL التي قد تؤدي إلى الكشف عن المعلومات أو تنفيذ رمز تعسفي على أجهزة المستخدم النهائي Zoom.

عفوا ... ولكن هذا ، بالصدفة ، ليس مفتاح فك التشفير لقاعدة بيانات SQLite المشفرة؟



لا أعرف بالتأكيد ، في الواقع :-) ومع ذلك ، فإن تشفير قاعدة البيانات ، من حيث المبدأ ، لا يتداخل مع الوصول إلى البيانات السرية المخزنة هناك. يبدو أن Zoom يستخدم قاعدة بيانات SQLite لتخزين سجلات المحفوظات ، والسجلات ، وربما أيضًا لتخزين البيانات الحساسة مثل كلمات المرور و / أو مفاتيح التشفير. لم أتعمق في استخدام SQLite كحاوية بيانات ؛ أترك هذا المرح للقراء الأكثر فضولًا.

Zzhost.dll


تهديد تجاوز سعة المخزن المؤقت


بالنظر إلى جداول الاستيراد الثنائية ، صادفت مكالمة إلى sprintf (). لكنك تعلم أن sprintf () هي وظيفة يحتمل أن تكون خطرة ، والمترجمون يقدمون تحذيرات إذا كنت تستخدمها. يبدو أن مثل هذه التحذيرات لا تزعج مطوري Zoom.

  • CWE-120 : نسخ محتويات المخزن المؤقت دون التحقق أولاً من حجم بيانات الإدخال (في وظيفة التسجيل)
  • CWE-676 : استخدام الوظائف المحتملة الخطورة (sprintf)



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

zCrashReport.exe


حفظ مفاتيح تسجيل Windows


يحتوي سجل Windows على معلومات مهمة للغاية - خاصة عندما نصل إليه من خلال عملية ذات حقوق متميزة.

لقد وجدت هذا: يبدو



"تفريغ مفاتيح التسجيل" بمثابة وظيفة ضارة بالنسبة لي ، لذا حاولت معرفة ما إذا كان يحفظ بالفعل مفاتيح وقيم تسجيل Windows. نعم ، لقد وجدت الجزء المقابل في الكود:



التقاط الشاشة في Crash Reporter


يقدم لنا zCrashReport.dll الوظائف التالية:



في crashReport.exe ، يتم استخدام وظائف Windows API لالتقاط الشاشة والنوافذ.



هل تعتقد أن Zoom يرسل البيانات الملتقطة من الشاشة إلى خوادمها؟ إذا كان الأمر كذلك ، فيمكن اعتبار هذا رمزًا ضارًا.

Airhost.exe


المكونات ذات الثغرات الأمنية


يستخدم Airhost.exe libcurl 7.36.0 (تم إصداره في 26 مارس 2014) ، حيث تم العثور على 52 ثغرة أمنية. حسنًا ، يتضمن curl بدوره libssh2 ، والذي تمت ملاحظته أيضًا من قبل عدد من الثغرات الأمنية:




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

تشفير / فك تشفير المفتاح الصلب


يستخدم Airhost.exe ثابت كمفتاح تشفير متماثل: خط الانتاج SHA256 "0123425234234fsdfsdr3242" و تستخدم لتشفير / فك تشفير AES-256 عبر بينسل.



وخط "3423423432325249" تستخدم كما ناقلات التهيئة IV.



نقاط الضعف zWebService.dll و tp.dll


يستخدم zWebService.dll و tp.dll libcurl 7.55.1. على الرغم من أن هذه المكتبة ليست قديمة مثل libcurl 7.36.0 (التي يتم استخدامها في airhost.exe) ، إلا أنها لا تزال قديمة بعض الشيء. إذا كان أمان المستخدم النهائي مهمًا حقًا للمطورين ، فسوف يفحصون قائمة نقاط الضعف هذه:



نقاط الضعف turbojpeg.dll


يستخدم Turbojpeg.dll libjpeg-turbo 2.0.0 (بناء 20190715). فيما يلي قائمة بالثغرات الأمنية في فئة تنفيذ التعليمات البرمجية عن بعد turbojpeg / libjpeg-turbo:



ماذا بعد؟


عند هذه النقطة ، توقفت عن الحفر في الداخل من Zoom for Windows. بالنسبة لأولئك الذين يرغبون في المتابعة ، فأنا بكل سرور أقوم باتون:

sha256 الاختباري لملفات Zoom 4.6.11 (20559.0413)


All Articles