تم استغلال تجاوز سعة المخزن المؤقت في Toxcore عن طريق إرسال حزمة UDP

تم التعرف على ثغرة أمنية (CVE-2-2021) في Toxcore، وهو التطبيق المرجعي لبروتوكول المراسلة Tox P44847P، والذي من المحتمل أن يؤدي إلى تنفيذ التعليمات البرمجية عند معالجة حزمة UDP مصممة خصيصًا. تؤثر الثغرة الأمنية على كافة مستخدمي التطبيقات المستندة إلى Toxcore والتي لم يتم تعطيل نقل UDP لها. للهجوم، يكفي إرسال حزمة UDP تعرف عنوان IP ومنفذ الشبكة ومفتاح DHT العام للضحية (هذه المعلومات متاحة للعامة في DHT، أي أنه من الممكن أن يتم الهجوم على أي مستخدم أو مضيف DHT) .

ظهرت المشكلة في إصدارات toxcore من 0.1.9 إلى 0.2.12 وتم إصلاحها في الإصدار 0.2.13. من بين تطبيقات العميل، أصدر مشروع qTox فقط تحديثًا حتى الآن مع إزالة الثغرة الأمنية. كحل بديل للأمان، يمكنك تعطيل استخدام UDP أثناء ترك دعم TCP.

سبب الثغرة الأمنية هو تجاوز سعة المخزن المؤقت في وظيفة Handle_request()، والذي يحدث بسبب الحساب غير الصحيح لحجم البيانات في حزمة الشبكة. على وجه الخصوص، تم تحديد طول البيانات المشفرة في الماكرو CRYPTO_SIZE المحدد كـ "1 + CRYPTO_PUBLIC_KEY_SIZE * 2 + CRYPTO_NONCE_SIZE"، والذي تم استخدامه لاحقًا في عملية الطرح "length - CRYPTO_SIZE". نظرًا لعدم وجود أقواس في الماكرو، بدلاً من طرح مجموع كل القيم، اطرح 1 وأضف الأجزاء المتبقية. على سبيل المثال، بدلاً من "الطول - (1 + 32 * 2 + 24)"، تم حساب حجم المخزن المؤقت على أنه "الطول - 1 + 32 * 2 + 24"، مما أدى إلى الكتابة فوق البيانات الموجودة على المكدس الذي كان خارج المخزن المؤقت الحدود.

المصدر: opennet.ru

إضافة تعليق