کشف آسیبپذیری در نرمافزار Imou Life
یک آسیبپذیری در نرمافزار Imou Life نسخه 6.7.0 شناسایی شده است که منجر به سرقت Session خواهد شد و به مهاجم این امکان را خواهد داد تا بهدلیل عدم فیلتر کردن صحیح کدهای QR هنگام اسکن یک دستگاه جدید و اجرای مستقیم WebView بدون نمایش یا هشدار به کاربر، حسابهای کاربری را کنترل کند. این آسیبپذیری ممکن است حملات فیشینگ را فعال کند. مهاجم از راه دور میتواند کد دلخواه خود را از طریق پردازش نادرست کد intent اجرا کند و فعالیت com.mm.android.easy4ip.MainActivity در برنامه com.mm.android.smartlifeiot بدون بررسی صحیح URLها از طریق دادههای intent عمل بارگذاری را انجام دهد.
یک برنامه مخرب third party میتواند از این نقص سوءاستفاده کرده و بارگذاری محتوای مخرب وب را انجام دهد؛ عملیات استخراج جاوا اسکریپت غیرمجاز یا اجرای کد از راه دور در WebView قابل انجام است. برای این کار هیچ مجوزی مورد نیاز نیست. برای مثال، یک برنامه مخرب third party (com.example.d3m0) میتواند یک intent را به صورت زیر ایجاد و راهاندازی کند:
پس از اجرای این کد، com.mm.android.easy4ip.MainActivity فراخوانی میشود تا محتوا از https://maliciouswebsitetest.com بارگذاری شود.
در com.mm.android.easy4ip.MainActivity، URLها بدون اعتبارسنجی کافی از دادههای intent بارگذاری میشوند:
this.url = getIntent().getExtras().getString(“url”);
دستور زیر نشان میدهد که اجرای جاوا اسکریپت در WebView فعال میشود:
this.webView.getSettings().setJavaScriptEnabled(true);
با دستور زیر بارگذاری مستقیم محتوای وب با استفاده از URL دریافت شده:
progressWebView.loadUrl(str);
مهاجم میتواند از این آسیبپذیری جهت اجرای جاوا اسکریپت دلخواه خود بهرهبرداری کرده و منجر به اجرای کد از راه دور شود، شروع عملیات استخراج جاوا اسکریپت غیرمجاز، منابع دستگاه را مصرف میکند و دسترسی به اینترنت از دستگاه قربانی را بدون مجوزهای لازم درخواست خواهد کرد.
محصولات تحت تأثیر
این آسیبپذیری در نرمافزار Imou Life نسخه 6.7.0 وجود دارد.
راهکارهای امنیتی
جهت جلوگیری از آسیبپذیری مذکور میتوان از راهکارهای زیر استفاده کرد:
1. اعتبارسنجی دادههای Intent: اطمینان حاصل کنید که هر دادهای که از Intent دریافت میشود، به ویژه URLها، به دقت اعتبارسنجی شود. از روشهای مانند استفاده از Regex جهت اعتبارسنجی آدرسهای وب استفاده کنید. اگر یک URL اعتبارسنجی نشود، نباید به WebView ارسال شود.
2. غیرفعال کردن اجرای جاوا اسکریپت: اگر برنامه شما نیازی به اجرای جاوا اسکریپت در WebView ندارد، بهتر است JavaScript را غیرفعال کنید. این امر میتواند از اجرای کدهای مخرب در WebView جلوگیری کند.
3. استفاده از فیلترینگ محتوای وب: پیادهسازی یک سیاست فیلترینگ برای WebView به وسیلهی یک لیست سفید از دامنهها یا URLهای مجاز میتواند کمککننده باشد. همچنین امکان بارگذاری محتوا تنها از منابع مورد اعتماد وجود داشته باشد و سایر منابع را مسدود کنید.
4. اگر فعالیت MainActivity نیازی به استفاده از برنامههای third party ندارد، از طریق اعلام در manifest آن را به عنوان «Non-Exporte» در نظر بگیرید. این اقدام میتواند از دسترسی برنامههای مخرب جلوگیری کند.
5. اعمال بهروزرسانی به آخرین نسخه