سرریز بافر پیش از احراز هویت توی پرفروشترین روتر آمازون
خلاصهٔ کاملتر
نویسنده تو این پست تحلیل کامل روتر Mercusys MB115-4G رو نوشته، مدلی که پرفروشترین روتر آمازون اسپانیا بوده. کار قبل از رسیدن دستگاه با فرمور شروع شده: با binwalk فایلسیستم SquashFS باز شده و /etc/inittab نشون داده یه کنسول سریال روی ttyS1 با نرخ ۱۱۵۲۰۰ فعاله. همونجا چند ضعف پایه هم لو رفته — پوشههای /var با دسترسی 777، telnetd بدون آرگومان، کاربر nobody با UID صفر، و هش MD5 بدون سالت رمز ادمین که به گفتهٔ نویسنده با hashcat چند ثانیهای شکست: 1234.
روی سختافزار، پینهای UART لیبل نداشتن؛ نویسنده با ولتمتر اول GND و بعد VCC (۳.۳ ولت) و TX رو پیدا کرده، پین سولدر کرده و با یه مبدل TTL به USB به کنسول وصل شده. همون admin:1234 شل روت داده. برای دامپ فرمور هم بهجای پروگرامر خارجی از tftp داخل busybox استفاده کرده و پارتیشنهای /dev/mtd رو روی سیستم خودش کپی کرده — کافی برای تحلیل استاتیک، هرچند خودش تأکید میکنه معادل دامپ با پروگرامر بیرونی نیست.
بخش تازهٔ پست ریشهیابی باگیه که تو باینری /usr/bin/httpd پیدا شده. مسیر /cgi/login قبل از احراز هویت قابل دسترسیه و پیلود رمزشدهٔ لاگین از پارامتر data تو کوئریاسترینگ خونده میشه. تابع http_rpm_login یه بافر ۵۱۲ بایتی روی استک میسازه و آدرسش رو به http_gdpr_decrypt میده، ولی اون تابع با یه بافر ۲۰۴۸ بایتی کار میکنه و در پایان، بدون هیچ بررسی طولی، این کپی رو انجام میده:
memcpy(output_buffer, aes_plaintext_buff, data_len);به گفتهٔ نویسنده باینری هیچ محافظتی نداشت — نه استک کاناری، نه PIE، با استک اجراشدنی — پس روی کاغذ یه RCE پیش از احراز هویت بود. ولی پارسر HTTP طول URL رو حدود ۱۰۲۴ کاراکتر محدود میکنه و چون پیلود از کوئریاسترینگ میآد، از این مسیر بیشتر از حدود ۴۵۰ بایت به بافر نمیرسید. مرکوسیس بعداً گفت تیم خودش سرریز رو فعال کرده ولی نتیجه کرش httpd بوده نه اجرای کد، و CVSS 4.0 رو ۵.۳ گذاشت. وصله تو نسخهٔ ۱.۱۱.۰ منتشر شد و کنار بررسی مرزی، مسیر لاگین از RSA به ECC و یه بررسی HMAC هم مهاجرت کرد.
نکات کلیدی:
- روتر Mercusys MB115-4G با رمز پیشفرض admin:1234 و هش MD5 بدون سالت عرضه شده بود
- کاربر nobody با UID صفر و پوشههای /var با دسترسی 777 هم توی فرمور بودن
- شل روت از راه UART گرفته شد و فرمور با tftp داخل busybox دامپ شد
- CVE-2026-12495: سرریز بافر استک پیش از احراز هویت توی httpd، ناشی از نبود بررسی طول در کپی نهایی
- نتیجهٔ تأییدشده کرش httpd بود نه RCE؛ وصله در نسخهٔ ۱.۱۱.۰ منتشر شده




