دسته OWASP: MASVS-NETWORK: Network Communication
نمای کلی
اجازه دادن به ارتباطات شبکه متنی واضح در یک برنامه اندروید به این معنی است که هر کسی که ترافیک شبکه را نظارت می کند می تواند داده های ارسال شده را ببیند و دستکاری کند. اگر دادههای ارسالشده شامل اطلاعات حساسی مانند رمز عبور، شماره کارت اعتباری یا سایر اطلاعات شخصی باشد، این یک آسیبپذیری است.
صرف نظر از اینکه اطلاعات حساسی را ارسال میکنید یا نه، استفاده از متن شفاف همچنان میتواند یک آسیبپذیری باشد، زیرا ترافیک متن شفاف نیز میتواند از طریق حملات شبکه مانند مسمومیت ARP یا DNS دستکاری شود، بنابراین به طور بالقوه مهاجمان را قادر میسازد بر رفتار یک برنامه تأثیر بگذارند.
تاثیر
هنگامی که یک برنامه اندروید داده ها را به صورت متن شفاف از طریق شبکه ارسال یا دریافت می کند، هر کسی که شبکه را نظارت می کند می تواند آن داده ها را رهگیری کرده و بخواند. اگر این داده ها شامل اطلاعات حساسی مانند رمز عبور، شماره کارت اعتباری یا پیام های شخصی باشد، می تواند منجر به سرقت هویت، کلاهبرداری مالی و سایر مشکلات جدی شود.
به عنوان مثال، برنامه ای که رمزهای عبور را به صورت متن شفاف ارسال می کند، می تواند این اعتبارنامه ها را در معرض یک عامل مخربی قرار دهد که ترافیک را رهگیری می کند. سپس می توان از این داده ها برای دسترسی غیرمجاز به حساب های کاربر استفاده کرد.
ریسک: کانال های ارتباطی رمزگذاری نشده
انتقال داده ها از طریق کانال های ارتباطی رمزگذاری نشده، داده های مشترک بین دستگاه و نقاط پایانی برنامه را در معرض دید قرار می دهد. داده های گفته شده را می توان رهگیری کرد و به طور بالقوه توسط یک مهاجم تغییر داد.
اقدامات کاهشی
داده ها باید از طریق کانال های ارتباطی رمزگذاری شده ارسال شوند. پروتکل های ایمن باید به عنوان جایگزینی برای پروتکل هایی که قابلیت رمزگذاری را ارائه نمی دهند استفاده شوند.
ریسک های خاص
این بخش خطراتی را جمع آوری می کند که به استراتژی های کاهش غیر استاندارد نیاز دارند یا در سطح SDK خاصی کاهش یافته اند و برای کامل شدن در اینجا آمده است.
ریسک: HTTP
راهنمایی در این بخش فقط برای برنامههایی اعمال میشود که Android 8.1 (سطح API 27) یا قدیمیتر را هدف قرار میدهند. با شروع اندروید 9 (سطح API 28)، پشتیبانی متن شفاف به طور پیشفرض غیرفعال است.
اقدامات کاهشی
از ویژگی NetworkSecurityConfig.xml برای انصراف از ترافیک متن شفاف استفاده کنید:
Xml
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="false">
<domain includeSubdomains="true">secure.example.com</domain>
</domain-config>
</network-security-config>
این گزینه به جلوگیری از رگرسیون تصادفی در برنامه ها به دلیل تغییر در URL های ارائه شده توسط منابع خارجی مانند سرورهای باطن کمک می کند.
ریسک: FTP
استفاده از پروتکل FTP برای تبادل فایلها بین دستگاهها خطرات متعددی را به همراه دارد که مهمترین آنها عدم رمزگذاری در کانال ارتباطی است. جایگزین های امن تر مانند SFTP یا HTTPS باید به جای آن استفاده شود.
راهنمایی در این بخش فقط برای برنامههایی اعمال میشود که Android 8.1 (سطح API 27) یا قدیمیتر را هدف قرار میدهند. با شروع اندروید 9 (سطح API 28)، پشتیبانی متن شفاف به طور پیشفرض غیرفعال است.
اقدامات کاهشی
از HTTPS استفاده کنید
این پروتکل داده های در حال انتقال را رمزگذاری می کند. هنگام استفاده از این نوع پروتکل تبادل فایل باید اقدامات اضافی در نظر گرفته شود:
- احراز هویت - کاربران باید با استفاده از مکانیسم های امن احراز هویت کنند. به طور کلی از احراز هویت اولیه منع می شود، زیرا اعتبارنامه ها محافظت نمی شوند و در هر درخواست ارسال می شوند، که خطر سازش را افزایش می دهد.
- مجوز - کاربران باید محدود به دسترسی به منابع مورد نظر باشند.
- اطمینان حاصل کنید که از یک پروتکل قوی و مجموعههای رمز استفاده میشود، با رعایت بهترین شیوههای امنیتی. در تاریخ نگارش، استفاده از حداقل پروتکل TLSv1.3 توصیه می شود .
- در Android 9 و بالاتر، ارتباطات HTTP متن شفاف به طور پیشفرض غیرفعال است و بهطور خودکار HTTPS را اعمال میکند.
منابع
- HTTP از طریق TLS RFC
- طرح های احراز هویت HTTP
- توصیه های امنیتی وب موزیلا
- موزیلا SSL مولد پیکربندی توصیه شده است
- توصیه های TLS سمت سرور موزیلا
از SFTP استفاده کنید
این پروتکل داده های در حال انتقال را رمزگذاری می کند. هنگام استفاده از این نوع پروتکل تبادل فایل باید اقدامات اضافی در نظر گرفته شود:
- SFTP از انواع مختلف احراز هویت پشتیبانی می کند. به جای احراز هویت مبتنی بر رمز عبور، باید از روش احراز هویت کلید عمومی استفاده شود. چنین کلیدهایی باید به طور ایمن ایجاد و ذخیره شوند، Android Keystore برای این منظور توصیه می شود.
- اطمینان حاصل کنید که رمزهای پشتیبانی شده از بهترین شیوه های امنیتی پیروی می کنند.
منابع
- صفحه راهنمای اصلی OpenSSH
- SSH RFC، که پیکربندی ها و طرح هایی را که می توان برای این پروتکل استفاده کرد، توضیح می دهد
- توصیه های امنیتی Mozilla OpenSSH
- سیستم Android Keystore
منابع
- انصراف ترافیک Cleartext برای پیکربندی امنیت شبکه
- HTTP از طریق TLS RFC
- طرح های احراز هویت HTTP
- توصیه های امنیتی وب موزیلا
- موزیلا SSL مولد پیکربندی توصیه شده است
- توصیه های TLS سمت سرور موزیلا
- صفحه راهنمای اصلی OpenSSH
- SSH RFC، که پیکربندی ها و طرح هایی را که می توان برای این پروتکل استفاده کرد، توضیح می دهد
- توصیه های امنیتی Mozilla OpenSSH
- سیستم Android Keystore