Belkin Wemo Smart Plug V2 – سرریز بافری که وصله نمی شود

Belkin Wemo Smart Plug V2 – سرریز بافری که وصله نمی شود

گره منبع: 2657924

محققان شرکت امنیت اینترنت اشیا Sternum حفر به داخل دوشاخه برق محبوب اتوماسیون خانگی از برند معروف دستگاه بلکین.

مدلی که به آن نگاه کردند، دوشاخه هوشمند Wemo Mini (F7C063) ظاهراً به پایان عمر مفید خود نزدیک می شود، اما ما تعداد زیادی از آنها را برای فروش آنلاین به همراه توصیه ها و دستورالعمل های دقیق در سایت بلکین در مورد نحوه تنظیم آنها پیدا کردیم.

اگرچه قدیمی (به معنای کوتاه مدت مدرن) ممکن است باشد، محققان خاطرنشان کردند که:

علاقه اولیه ما به این دستگاه ناشی از این بود که چندین مورد از این دستگاه‌ها در اطراف آزمایشگاه ما قرار داشتند و در خانه‌هایمان استفاده می‌شدند، بنابراین فقط می‌خواستیم ببینیم که چقدر ایمن هستند (یا نه). [… T]به نظر می رسد که این یک دستگاه بسیار محبوب مصرف کننده باشد[; ب] بر اساس این اعداد، می توان تخمین زد که کل فروش تنها در آمازون باید صدها هزار باشد.

به زبان ساده، افراد زیادی وجود دارند که قبلاً این وسایل را خریده و به برق وصل کرده اند و در حال حاضر از آنها برای کنترل پریزهای برق در خانه های خود استفاده می کنند.

به زبان ساده، «پریز هوشمند» یک پریز برق است که آن را به یک پریز دیواری موجود وصل می‌کنید و یک سوئیچ کنترل‌شده با وای‌فای را بین پریز برق در جلوی پریز دیواری و یک پریز برق با ظاهر یکسان قرار می‌دهد. جلوی دوشاخه هوشمند آن را مانند یک آداپتور برق در نظر بگیرید که به جای تبدیل یک سوکت یورو گرد به یک سوکت مثلثی بریتانیایی، مثلاً یک سوکت آمریکایی با سوئیچ دستی را به یک سوکت آمریکایی با سوئیچ الکترونیکی تبدیل می کند که می تواند از راه دور از طریق یک برنامه یا برنامه کنترل شود. یک رابط از نوع وب

S در اینترنت اشیا…

مشکل بسیاری از دستگاه‌های به اصطلاح اینترنت اشیا (IoT)، همانطور که جوک قدیمی می‌گوید، این است که حرف S در IoT است که مخفف امنیت است…

... البته، به این معنی که اغلب امنیت سایبری آنچنان که شما انتظار دارید یا حتی اصلاً وجود ندارد.

همانطور که می توانید تصور کنید، یک دستگاه اتوماسیون خانگی ناامن، به ویژه دستگاهی که می تواند به شخصی در خارج از خانه شما یا حتی در آن سوی دنیا اجازه دهد تا به میل خود وسایل برقی را روشن و خاموش کند، می تواند منجر به مشکلات زیادی شود.

ما قبلاً در مورد ناامنی اینترنت اشیا در طیف گسترده ای از محصولات مختلف نوشته ایم کتری های اینترنتی (بله، واقعاً) که ممکن است رمز عبور وای فای خانه شما را به دوربین‌های امنیتی که کلاهبرداران می‌توانند برای نگهداری از آنها استفاده کنند افشا کند. چشم به تو به جای برعکس، به درایوهای دیسک متصل به شبکه که در معرض خطر قرار دارند توسط باج افزار پاشیده شده است به طور مستقیم از طریق اینترنت

در این مورد، محققان در ژانویه 2023 یک سوراخ اجرای کد از راه دور را در Wemo Mini Smart Plug پیدا کردند، آن را در فوریه 2023 گزارش کردند و یک شماره CVE برای آن در مارس 2023 دریافت کردند.CVE-2023-27217).

متأسفانه، اگرچه تقریباً به طور قطع بسیاری از این دستگاه‌ها در دنیای واقعی استفاده می‌شوند، بلکین ظاهراً گفته است که دستگاه را «در پایان عمر خود» می‌داند و بنابراین حفره امنیتی اصلاح نخواهد شد.

(ما مطمئن نیستیم که اگر دستگاه دارای نقصی در مدار الکتریکی 120 ولت AC یا 230 ولت متناوب AC خود باشد، مانند احتمال گرم شدن بیش از حد و انتشار مواد شیمیایی مضر یا تنظیم، این نوع از کار انداختن «پایان عمر» چقدر قابل قبول است. در آتش می‌سوزد، اما به نظر می‌رسد که می‌توان از ایرادات الکترونیکی دیجیتال ولتاژ پایین یا سیستم‌افزار دستگاه چشم‌پوشی کرد، حتی اگر منجر به این شود که یک مهاجم سایبری به‌طور مکرر کلید برق اصلی دستگاه را به‌طور مکرر روشن و خاموش کند.)

وقتی نام های دوستانه دشمن شماست

مشکلی که محققان کشف کردند قدیمی بود سرریز بافر پشته در بخشی از نرم افزار دستگاه که به شما امکان تغییر به اصطلاح را می دهد FriendlyName از دستگاه - رشته متنی که هنگام اتصال به آن با یک برنامه در تلفن خود نمایش داده می شود.

به‌طور پیش‌فرض، این دستگاه‌ها با نامی دوستانه راه‌اندازی می‌شوند Wemo mini XYZ، که در آن XYZ نشان دهنده سه رقم هگزادسیمال است که حدس می زنیم به صورت شبه تصادفی انتخاب شده اند.

این بدان معناست که حتی اگر دو یا سه دستگاه از این دستگاه ها را داشته باشید، تقریباً مطمئناً با نام های مختلف شروع به کار می کنند تا بتوانید به راحتی آنها را راه اندازی کنید.

اما احتمالاً می خواهید بعداً نام آنها را تغییر دهید تا در آینده راحت تر تشخیص داده شوند، با اختصاص نام های دوستانه مانند TV power, Laptop charger و Raspberry Pi server.

برنامه نویسان بلکین (یا به طور دقیق تر، برنامه نویسان کدی که به این دستگاه های مارک بلکین ختم شد، که احتمالاً نرم افزار پلاگین هوشمند را برای نام های تجاری دیگر نیز عرضه می کردند) ظاهراً 68 بایت ذخیره سازی موقت را برای ردیابی اطلاعات ذخیره کرده اند. نام جدید در طول فرآیند تغییر نام.

اما آنها فراموش کردند که بررسی کنند نامی که شما ارائه کرده اید در آن شکاف 68 بایتی قرار می گیرد.

در عوض، آنها فرض کردند که از برنامه رسمی تلفن آنها برای انجام فرآیند تغییر نام دستگاه استفاده می‌کنید، و بنابراین می‌توانند در وهله اول میزان داده‌های ارسال شده به دستگاه را محدود کنند تا از سرریز بافر که در غیر این صورت ممکن است جلوگیری شود. بوجود امدن.

از قضا، آنها نه تنها شما را در حد 68 بایت مورد نیاز برای عملکرد صحیح خود دستگاه نگه دارند، بلکه حتی شما را به تایپ تنها 30 کاراکتر محدود کردند.

همه ما می دانیم که چرا اجازه دادن به سمت کلاینت بررسی خطا را به جای بررسی (یا بهتر است بگوییم) در سمت سرور، یک ایده وحشتناک است:

  • ممکن است کد مشتری و کد سرور از انطباق خارج شود. برنامه‌های مشتری آینده ممکن است تصمیم بگیرند که نام‌های 72 کاراکتری گزینه خوبی باشد و شروع به ارسال داده‌های بیشتری به سرور نسبت به آنچه که می‌تواند ایمن باشد، کنند. برنامه‌نویس‌های سمت سرور آینده ممکن است متوجه شوند که به نظر نمی‌رسد هیچ‌کس از 68 بایت رزرو شده کامل استفاده نکرده است و به طور یکجانبه تصمیم بگیرند که 24 بایت بیش از اندازه کافی باشد.
  • یک مهاجم می تواند تصمیم بگیرد که با برنامه مزاحم نشود. آنها با ایجاد و ارسال درخواست‌های خود به دستگاه، هر گونه بررسی امنیتی را که تنها به برنامه تکیه می‌کند دور می‌زنند.

محققان به سرعت توانستند نام‌های طولانی‌تری را امتحان کنند تا جایی که بتوانند دستگاه Wemo را به دلخواه با نوشتن روی انتهای بافر حافظه که برای نام جدید رزرو شده بود، خراب کنند و داده‌های ذخیره شده در بایت‌های بلافاصله پس از آن را خراب کنند.

خراب کردن پشته

متأسفانه، در یک سیستم عامل مبتنی بر پشته، اکثر نرم‌افزارها با بافرهای حافظه موقت مبتنی بر پشته به کار می‌روند که بیشتر این بافرها توسط بلوک حیاتی دیگری از حافظه دنبال می‌شوند که به برنامه می‌گوید پس از اتمام کار به کجا برود. در حال حاضر در حال انجام است.

از نظر فنی، این تکه‌های داده «بعدی کجا برویم» به عنوان شناخته می‌شوند آدرسها را برگردانید، و هنگامی که برنامه ای چیزی را که به عنوان a شناخته می شود فراخوانی می کند، به طور خودکار ذخیره می شوند تابع، یا زیرروال، که تکه‌ای از کد است (مثلاً «این پیام را چاپ کنید» یا «یک گفتگوی هشدار را باز کنید») که می‌خواهید بتوانید از آن در چندین بخش برنامه خود استفاده کنید.

هر بار که از زیربرنامه استفاده می شود، آدرس برگشتی به طور جادویی روی پشته ثبت می شود، به طوری که رایانه می تواند به طور خودکار مسیر خود را باز کند تا به جایی که برنامه فرعی از آنجا فراخوانی شده است، بازگردد، که هر بار که فعال می شود می تواند متفاوت باشد.

(اگر یک زیربرنامه دارای یک آدرس برگشت ثابت بود، شما فقط می توانید آن را از یک مکان در برنامه خود فراخوانی کنید، که در وهله اول زحمت بسته بندی آن کد را در یک زیربرنامه جداگانه بی معنی می کند.)

همانطور که می‌توانید تصور کنید، اگر قبل از پایان اجرای زیربرنامه، آدرس بازگشتی جادویی را زیر پا بگذارید، پس از اتمام کار، مطمئناً اما ناآگاهانه خود را به مکان اشتباهی «باز می‌کند».

با کمی (یا شاید زیاد) شانس، یک مهاجم ممکن است بتواند از قبل پیش بینی کند که چگونه آدرس برگشتی را به طور خلاقانه زیر پا بگذارد و در نتیجه برنامه را به روشی عمدی و مخرب هدایت کند.

به جای صرفاً خراب شدن، برنامه اشتباه هدایت شده می تواند فریب داده شود تا کد مورد نظر مهاجم را اجرا کند، بنابراین باعث ایجاد چیزی شود که به عنوان یک اجرای کد از راه دور اکسپلویت یا RCE

دو دفاع متداول به محافظت در برابر سوء استفاده از این نوع کمک می کند:

  • تصادفی‌سازی طرح‌بندی فضای آدرس، که به نام ASLR نیز شناخته می‌شود. سیستم عامل هر بار که برنامه ها را اجرا می کند عمداً در مکان های حافظه کمی متفاوت بارگذاری می کند. این امر باعث می‌شود مهاجمان حدس بزنند که چگونه برنامه‌های باگ را به گونه‌ای نادرست هدایت کنند که در نهایت به جای خراب کردن کد، کنترل را به دست آورده و حفظ کنند، دشوارتر می‌شود.
  • پشته قناری ها، این نام از پرندگانی گرفته شده است که معدنچیان با خود به زیر زمین می بردند، زیرا در حضور متان بیهوش می شدند و در نتیجه هشدار اولیه بی رحمانه اما موثری در مورد خطر انفجار ارائه می شود. هر بار که یک برنامه فرعی فراخوانی می شود، برنامه عمداً یک بلوک شناخته شده اما تصادفی از داده ها را درست در جلوی آدرس برگشتی وارد می کند، به طوری که یک سرریز بافر به طور اجتناب ناپذیر و به طور قابل تشخیص ابتدا "قناری" را بازنویسی می کند، قبل از اینکه به اندازه کافی دور شود تا زیر پا بگذارد. در آدرس بازگشت بسیار مهم

برای اینکه اکسپلویت خود سریع و قابل اطمینان کار کند، محققان باید پلاگین Wemo را وادار کنند که ASLR را خاموش کند، کاری که مهاجمان راه دور قادر به انجام آن نیستند، اما با تلاش های زیاد در زندگی واقعی، مهاجمان ممکن است با این وجود خوش شانس باشند. در آدرس های حافظه در حال استفاده توسط برنامه، و به هر حال کنترل را دریافت کنید.

اما محققان نیازی به نگرانی در مورد مشکل قناری پشته ای نداشتند، زیرا برنامه حشره دار از کد منبع خود با ویژگی "درج دستورالعمل های ایمنی بررسی قناری" غیرفعال شده بود.

(برنامه‌های محافظت‌شده با قناری معمولاً کمی بزرگ‌تر و کندتر از برنامه‌های محافظت‌نشده هستند، زیرا به کد اضافی مورد نیاز در هر زیربرنامه برای انجام بررسی‌های ایمنی نیاز است.)

چه کاری انجام دهید؟

  • اگر صاحب Wemo Smart Plug V2 هستید، مطمئن شوید که روتر خانگی خود را طوری پیکربندی نکرده‌اید که به دستگاه اجازه دسترسی از خارج از طریق اینترنت را بدهد. این امر چیزی را که در اصطلاح به عنوان شما شناخته می شود کاهش می دهد منطقه سطح حمله.
  • اگر روتری دارید که از Universal Plug and Play پشتیبانی می کند، همچنین به عنوان UPnP شناخته می شود، مطمئن شوید که خاموش است. UPnP باعث می‌شود دستگاه‌های داخلی به‌طور غیرعمدی به روی افراد خارجی باز شوند.
  • اگر برنامه نویس هستید، از خاموش کردن ویژگی های ایمنی نرم افزار (مانند حفاظت پشته یا بررسی پشته قناری) فقط برای ذخیره چند بایت خودداری کنید. اگر واقعاً حافظه‌تان تمام می‌شود، به جای کاهش امنیت، به دنبال کاهش ردپای خود با بهبود کد یا حذف ویژگی‌ها باشید تا بتوانید فضای بیشتری را در خود جای دهید.

تمبر زمان:

بیشتر از امنیت برهنه