
فيضان الكومة قبل المصادقة في خادم Xlight SFTP <= 3.9.4.2
إصدارات Xlight 32 و64 بت <= 3.9.4.2
يمكن لمهاجم غير مصادق لديه وصول إلى Xlight SFTP أن يحصل على تنفيذ كود أو يتسبب في رفض الخدمة.
السلاسل المرسلة عبر الشبكة في بروتوكول SFTP تكون مسبوقة بطول مكون من أربعة بايتات. الدالة التي يستخدمها Xlight لقراءة هذه السلاسل من حزمة الشبكة تعاني من تجاوز عدد صحيح عند التحقق من الطول وعند تخصيص مقدار الذاكرة المطلوب. من خلال تصميم الطول المكون من أربعة بايتات لسلسلة ما، يمكننا تشغيل عملية memmove كبيرة (~4GB) من مخزن مؤقت يتحكم به المهاجم خارج الحدود إلى الكومة.
تُستخدم الدالة المعرضة للخطر لاستقبال السلاسل خلال تبادل SSH، بما في ذلك قبل المصادقة عند استلام الخوارزميات المدعومة، ومجموعات الشفرات، واسم المستخدم وكلمة المرور من العميل. يمكننا استهداف أي من هذه السلاسل بطول مُصمَم لتشغيل الاستغلال.
من السهل تشغيله ولكن سهولة الاستغلال تعتمد على عدد بتات ملف Xlight الثنائي.
على 32 بت، ستتجاوز النسخة نهاية الكومة، مما يمحو كل شيء في العملية، قبل أن يتسبب في تعطل. من المحتمل إفساد بنية مجاورة على الكومة واستغلال الطبيعة متعددة الخيوط لهذا الخادم للوصول إلى البيانات المفسدة، قبل أن يؤدي النسخ العشوائي إلى تعطل العملية.
على 64 بت، لا يمكننا الحصول على كتابة خارج الحدود، لأن وسيط الحجم لاستدعاء تخصيص الذاكرة هو size_t (أي بعرض 64 بت عند التجميع لـ 64 بت)، مما يعني أننا لا نستطيع تجاوز هذه القيمة بإضافة عددين صحيحين 32 بت، وبدلاً من ذلك نقوم فقط بتخصيص مخزن مؤقت كبير ~4GB. يؤدي هذا الخلل إلى قراءة خارج الحدود بدلاً من ذلك، مما يؤدي إلى تعطل العملية.