
استشارة أمنية بشأن ثغرة تجاوز سعة المخزن المؤقت في TOTOLINK a720r
الجهة المصنّعة: TOTOLINK
موقع الجهة المصنّعة: TOTOLINK
الطراز: A720R
إصدار البرنامج الثابت: V4.1.5cu.630_B20250509
رابط تنزيل البرنامج الثابت: TOTOLINK
درجة CVSS v4.0 الأساسية: 9.4 (حرجة)
المتجه: CVSS:4.0/AV:N/AC:L/AT:N/PR:H/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H/E:P
يوجد تجاوز سعة المخزن المؤقت المستند إلى المكدس (stack-based buffer overflow) في الملف التنفيذي للبرنامج الثابت cstecgi.cgi، مما يسمح لمسؤول مُصادَق عليه باختطاف تدفق التحكم في العملية وتنفيذ مسارات تعليمات برمجية موجودة داخل الملف التنفيذي. يمكن إثارة الثغرة عبر إرسال طلب مُصمَّم خصيصًا إلى المعالج setMacFilterRules يحتوي على قيمة طويلة بشكل مفرط للمعامل desc، والتي تُنسخ إلى مخزن مؤقت ثابت الحجم على المكدس عبر strcpy() دون أي فحص للحدود، مما يؤدي إلى الكتابة فوق عنوان العودة المحفوظ.

تقع التعليمات البرمجية المصابة داخل الملف التنفيذي cstecgi.cgi، حيث تُنسخ القيمة المُقدَّمة للمعامل desc إلى مخزن مؤقت على المكدس دون التحقق من الطول، مما يسمح بالكتابة فوق عنوان العودة المحفوظ وإعادة توجيه تدفق تحكم البرنامج. ولأن الملف التنفيذي مُجمَّع دون stack canaries ودون PIE، فإن التجاوز يمر دون اكتشاف ويمكن إعادة توجيه التنفيذ بشكل موثوق إلى تعليمات برمجية موجودة في عناوين ثابتة داخل الملف التنفيذي.


من خلال الكتابة فوق عنوان العودة المحفوظ، أُعيد توجيه تدفق التحكم إلى دوال موجودة داخل الملف التنفيذي. وقد أُثبت ذلك عبر استدعاء sleep(2) (مما يؤكد التحكم الموثوق في مؤشر التعليمات من خلال تأخير قابل للقياس في استجابة الجهاز)، وروتين إعادة تشغيل النظام، ودالة تسجيل الخروج من الجلسة، وروتين مسح السجلات.


أُعيد توجيه تدفق التحكم كذلك إلى الروتين المسؤول عن بدء خدمة Telnet، مما يمكّن Telnet على الجهاز.

ونتيجة لذلك، يمكن لمهاجم مُصادَق عليه لديه وصول شبكي إلى الجهاز المستهدف أن يختطف تدفق تنفيذ عملية cstecgi.cgi وينفّذ مسارات تعليمات برمجية عشوائية داخل الملف التنفيذي، مما يمس سرية الجهاز وسلامته وتوافره.
أبلغ عن هذه الثغرات Nicola Giuffrida.