میلیونها جاروبرقی رباتیک Shark در معرض اجرای کد از راه دور
خلاصهٔ کاملتر
نویسندهٔ این گزارش میگه در اسفند ۱۴۰۴ یک آسیبپذیری بحرانی در تمام جاروبرقیهای رباتیک اینترنتی Shark پیدا کرده که به هر کسی اجازه میده از راه دور دستگاه رو کنترل کنه و روش کد دلخواه اجرا کنه. تحقیق روی دو مدل RV2320EDUS و AV1102ARUS انجام شده، ولی به گفتهٔ نویسنده مشکل به این دو مدل محدود نیست و همهٔ دستگاههای متصل به اینترنت این خانواده رو درگیر میکنه.
مسیر تحقیق از سختافزار شروع شده: چند پین تست روی برد، کشف رابط سریال UART و بعد وقفه در فرایند بوت لودر U-Boot که بدون پرسیدن رمز، دسترسی به منوی بوت میداده. از همونجا نویسنده تونسته یک شل ریشه (root) روی دستگاه بگیره. برای اینکه مجبور نباشه هر بار سیم به دستگاه وصل کنه، از یک پوشهٔ اسکریپت دیباگ روی پارتیشن قابلنوشتن استفاده کرده که سیستم موقع بوت محتویاتش رو اجرا میکنه و سرویس SSH داخلی دستگاه رو بالا آورده.
با دسترسی داخلی معلوم شده دستگاه چند دیمن اختصاصی داره و مهمترینشون appd هست: یک سرویس مدیریت دستگاه که یک اتصال دائمی به بروکر MQTT سرویس AWS IoT Core برقرار میکنه. احراز هویت این اتصال دوطرفه (mutual TLS) و بر پایهٔ یک گواهی و کلید خصوصیه که همونجا روی فایلسیستم دستگاه ذخیره شده.
هستهٔ آسیبپذیری همینجاست: سیاست دسترسی متصل به این گواهیها درست تنظیم نشده. نویسنده متوجه شده با گواهی دستگاه خودش میتونه بهجای فقط تاپیک خودش، به تاپیک عمومی همهٔ دستگاهها (با نویسهٔ عام) مشترک بشه و میلیونها پیام رد و بدلشده بین سرور و بقیهٔ دستگاههای اون منطقه رو ببینه — و مهمتر از اون، امکان انتشار پیام برای دستگاههای دیگه رو هم داشته باشه.
قدم بعدی پیدا کردن پیامی بوده که به اجرای دستور ختم بشه. در پیامهای همگامسازی وضعیت، فیلدی به اسم Exec_Command وجود داره و تحلیل باینری appd با Ghidra نشون داده مقدار این فیلد، در صورت داشتن یک پیشوند مشخص، مستقیم به تابعی میرسه که رشتهٔ ورودی رو بهعنوان دستور سیستمی با popen اجرا میکنه (تا سقف حدود هزار بایت). یعنی فرستادن یک پیام وضعیت به شمارهٔ سریال قربانی برای اجرای دستور کافیه.
نویسنده میگه برای اثبات، دستگاه دومی از مدلی متفاوت خریده و با گواهی دستگاه اول موفق شده روی اون هم کد اجرا کنه — پس حمله بین مدلها هم کار میکنه. شمارهسریالها هم مانع جدیای نیستن؛ میشه اونها رو حدس زد یا از پیامهایی که در بروکر شنیده میشن جمع کرد.
پیامد ماجرا خیلی فراتر از «روشن کردن جاروبرقی مردم»ه. به گفتهٔ نویسنده، مدل AV1102ARUS دوربین داره و اون تونسته تصویر زندهش رو در حالی که ربات توی خونه حرکت میکرده بگیره، موتورها رو کنترل کنه و دستگاه رو از راه دور براند. علاوه بر این، نقشهٔ خانهٔ کاربر و رمز شبکهٔ وایفای بهصورت متن ساده روی دستگاه ذخیره شده.
برای برآورد دامنه، نویسنده ۲۴ ساعت پیامهای بروکر رو شمرده: حدود ۱٬۵۱۷٬۶۰۵ دستگاه یکتا دیده شده و ۶۷۳٬۸۱۶ تاشون (۴۴٪) قابلیت اجرای دستور رو تأیید کردن. تایملاین افشا هم از اسفند شروع شده، مهلت ۹۰ روزهٔ افشای مسئولانه گذشته، پاسخ SharkNinja مبهم بوده و حتی دربارهٔ لزوم صدور CVE تردید کرده؛ باگ تا زمان انتشار این نوشته وصله نشده و نویسنده هم عمداً هیچ اسکریپتی منتشر نکرده.
نکات کلیدی:
- گواهیهای دستگاه در جاروبرقیهای اینترنتی SharkNinja سیاست دسترسی درستی ندارن و اجازهٔ شنود و ارسال پیام به دستگاههای دیگه رو میدن
- دیمن appd مقدار فیلد Exec_Command رو بهعنوان دستور سیستمی اجرا میکنه و همین به اجرای کد از راه دور منجر میشه
- حمله بین مدلهای مختلف هم کار میکنه و فقط به شمارهٔ سریال دستگاه قربانی نیاز داره
- دسترسی به دوربین، کنترل موتورها، نقشهٔ خانه و رمز وایفای بهصورت متن ساده از پیامدهای اونه
- در ۲۴ ساعت پایش، ۶۷۳٬۸۱۶ دستگاه از ۱٫۵ میلیون دستگاه یکتا آسیبپذیر تأیید شدن
- آسیبپذیری هنوز وصله نشده و روند پاسخگویی سازنده به گفتهٔ نویسنده ناکافی بوده




