Google متعهد به پیشبرد برابری نژادی برای جوامع سیاه است. ببینید چگونه.
این صفحه به‌وسیله ‏Cloud Translation API‏ ترجمه شده است.
Switch to English

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

در این بخش توصیه هایی برای اطمینان از امنیت برنامه ها در دستگاه های Android ارائه شده است.

بررسی کد منبع

بررسی کد منبع می تواند طیف گسترده ای از مسائل امنیتی ، از جمله مواردی را که در این سند مشخص شده است ، تشخیص دهد. Android هر دو بررسی کد منبع دستی و خودکار را به شدت ترغیب می کند.

  • برای اطمینان از پوشش ، راهنمایی های امنیتی جامع را هنگام انجام بررسی ها دنبال کنید. برای اطمینان از بررسی های مداوم و کامل از استانداردهای داخلی یا خارجی مناسب استفاده کنید.
  • با استفاده از SDK Android ، یک باری مانند آستر اندروید استودیو اجرا کنید و مشکلات شناسایی شده را تصحیح کنید.
  • تجزیه و تحلیل کد بومی با استفاده از یک ابزار خودکار که می تواند مشکلات مدیریت حافظه ، مانند سرریز بافر و خطاهای خارج از یک را تشخیص دهد.
  • سیستم ساخت اندرویدی از بسیاری از ضد عفونی کننده های LLVM ، مانند AddressSanitizer و UndefinedBehociationSanitizer پشتیبانی می کند ، که می تواند برای تجزیه و تحلیل زمان اجرا از مشکلات مرتبط با حافظه استفاده شود. ضد عفونی کننده همراه با فازی ، پشتیبانی شده در Android از طریق libFuzzer ، ضد عفونی کننده می تواند موارد جانبی غیر معمول را کشف کند که نیاز به تحقیقات بیشتر دارد.
  • یک ارزیاب امنیتی آگاه باید کد ریسک بالاتر ، مانند رمزنگاری ، پردازش پرداخت و پردازش PII را بررسی کند.

تست خودکار

آزمایش خودکار می تواند به تشخیص طیف گسترده ای از مسائل امنیتی کمک کند و باید بطور منظم انجام شود.

  • آخرین نسخه CTS را به طور مرتب در طول فرایند توسعه اجرا کنید تا زودتر مشکلات را تشخیص داده و زمان اصلاح را کاهش دهید. Android از CTS به عنوان بخشی از ادغام مداوم در فرایند ساخت خودکار ما ، که چندین بار در روز ساخته می شود ، استفاده می کند.
  • تست امنیت رابط ها بطور خودکار ، از جمله تست با ورودی های ناقص (آزمایش فازی). سیستم ساخت اندروید از LibFuzzer برای نوشتن تست های فازی پشتیبانی می کند.

اسکن آسیب پذیری

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

  • تمام برنامه های از قبل نصب شده را با استفاده از یک ابزار اسکن آسیب پذیری برنامه شناخته شده در صنعت اسکن کنید و آدرس آسیب پذیری های موجود را شناسایی کنید.

برنامه های کاربردی بالقوه مضر

این مهم است که اطمینان حاصل شود که برنامه های از قبل نصب شده بر روی دستگاه شما از برنامه های بالقوه مضر (PHA) نیستند. شما مسئولیت رفتار همه برنامه هایی را که در دستگاه های شما گنجانده شده است ، مسئولیت دارید. قبل از راه اندازی دستگاه ، تمام برنامه های از پیش بارگذاری شده را برای آسیب پذیری ها اسکن کنید.

برای اطلاعات بیشتر در مورد PHA و نحوه مبارزه Google با آنها در فروشگاه Play ، به اسناد توسعه دهنده Google Play Protect مراجعه کنید .

نصب برنامه و مجوزها

مجوزهای بیش از حد برای برنامه های از پیش نصب شده می تواند یک خطر امنیتی را ایجاد کند. برنامه های از پیش نصب شده را به حداقل مجوزهای لازم محدود کنید و اطمینان حاصل کنید که آنها به مجوزها یا امتیازات غیر ضروری دسترسی ندارند. مجوزهای برنامه در AndroidManifest.xml شرح داده شده است.

  • مجوزها یا امتیازات غیرضروری را به برنامه های از پیش نصب شده اعطا نکنید. برنامه ها را با امتیازات سیستم کاملاً مرور کنید زیرا ممکن است مجوزهای بسیار حساس داشته باشند.
  • اطمینان حاصل کنید که تمام مجوزهای درخواستی برای عملکرد آن برنامه خاص مرتبط و لازم هستند.
  • اطمینان حاصل کنید که افشای کاربر برای همه برنامه های از قبل نصب شده که از مجوز INSTALL_PACKAGES استفاده می کنند وجود دارد.
  • اطمینان حاصل کنید که توسعه دهنده موظف است هیچ برنامه ای را به عنوان UID 0 نصب نکند.
  • مجوزهای اعلام شده در مانیفست تمام برنامه هایی را که باید از طریق شبکه توسعه دهنده نصب شوند ، ارزیابی کنید.
  • اطمینان حاصل کنید که توسعه دهنده موظف است قبل از ارائه برنامه ها به دستگاه ، کلیه آدرس های URL بارگیری برنامه های بروزرسانی خودکار و نصب کننده را با API مرورگر ایمن Google اسکن کند.

امضای برنامه

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

  • اطمینان حاصل کنید که برنامه ها با یک کلید شناخته شده عمومی مانند کلید توسعه دهنده AOSP امضا نشده اند.
  • اطمینان حاصل کنید که کلیدهایی که برای امضای برنامه ها استفاده می شوند به شیوه ای مطابق با استاندارد های صنعت برای دستیابی به کلیدهای حساس ، از جمله ماژول امنیتی سخت افزاری (HSM) که دسترسی محدود و شنیدنی را فراهم می کند ، مدیریت می شوند.
  • اطمینان حاصل کنید که برنامه ها با کلید بستر امضا نشده اند. انجام این کار به یک برنامه اجازه می دهد تا به مجوزهای امضای پلتفرم دسترسی داشته باشد ، که بسیار قدرتمند هستند و فقط برای استفاده توسط اجزای سیستم عامل در نظر گرفته شده اند. برنامه های سیستم باید از مجوزهای ممتاز استفاده کنند.
  • اطمینان حاصل کنید که برنامه هایی با نام بسته مشابه با کلیدهای مختلف امضا نشده اند. این اغلب در هنگام ایجاد یک برنامه برای دستگاه های مختلف ، به ویژه هنگام استفاده از کلید platform رخ می دهد. اگر برنامه مستقل از دستگاه است ، از همان کلید در بین دستگاه ها استفاده کنید. اگر برنامه خاص دستگاه است ، نام های بسته بندی منحصر به فرد را در هر دستگاه و کلید ایجاد کنید.

برنامه ها و فرآیندهای جدا شده

مدل sandboxing اندرویدی هنگام استفاده صحیح از امنیت اضافی در مورد برنامه ها و پردازش ها برخوردار است.

فرآیندهای ریشه ای را جدا می کند

فرآیندهای ریشه بیشترین هدف حملات تشدید امتیاز است. كاهش تعداد فرآيندهاي ريشه ، خطر تشديد امتياز را كاهش مي دهد.

  • اطمینان حاصل کنید که دستگاه ها حداقل کد لازم را به عنوان root اجرا کنند. در صورت امکان ، از یک فرآیند معمولی Android استفاده کنید تا یک فرآیند اصلی. اگر یک فرآیند باید به عنوان ریشه در یک دستگاه اجرا شود ، فرایند را در درخواست ویژگی AOSP مستندسازی کنید تا بررسی شود.
  • در صورت امکان ، کد اصلی باید از داده های غیرقابل اعتماد جدا شود و از طریق ارتباطات میان پردازشی (IPC) به آن دسترسی پیدا کند. به عنوان مثال ، عملکرد ریشه را به یک سرویس کوچک که از طریق Binder قابل دسترسی است کاهش داده و سرویس را با اجازه امضا در برنامه هایی با امتیازات کم یا فاقد امتیاز برای مواجهه با ترافیک شبکه قرار دهید.
  • فرآیندهای ریشه نباید به سوکت شبکه گوش دهند.
  • فرآیندهای ریشه نباید شامل یک زمان اجرای عمومی (مانند Java Java) باشد.

جدا کردن برنامه های سیستم

به طور کلی ، برنامه های از پیش نصب شده نباید با شناسه منحصر به فرد سیستم مشترک (UID) اجرا شوند. اگر برای استفاده از UID مشترک سیستم یا یک سرویس ممتاز دیگر (برای مثال تلفن) ضروری باشد ، برنامه نباید خدمات ، گیرنده های پخش یا ارائه دهنده محتوا را که از طریق برنامه های شخص ثالث نصب شده توسط کاربران قابل دسترسی است صادر کند. .

  • اطمینان حاصل کنید که دستگاه ها حداقل کد لازم را به عنوان سیستم اجرا کنند. در صورت امکان ، به جای استفاده مجدد از سیستم UID ، از یک فرآیند Android با UID خود استفاده کنید.
  • در صورت امکان ، كد سیستم باید از داده های غیر قابل اعتماد جدا شود و IPC را در معرض سایر فرآیندهای قابل اعتماد قرار دهد.
  • فرآیندهای سیستم نباید به سوکت شبکه گوش دهند. این یک نیاز CTS است.

فرآیندهای جداسازی

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

  • اطمینان حاصل کنید که پردازش های ریشه به پوشه های داده های برنامه های شخصی دسترسی ندارند ، مگر اینکه از یک روش اشکال زدایی اشکال زدایی Android استفاده کنید.
  • اطمینان حاصل کنید که فرآیندهای ریشه به حافظه برنامه ها دسترسی ندارند ، مگر اینکه از یک روش اشکال زدایی اشکال زدایی Android استفاده کنید.
  • مطمئن شوید که دستگاه ها برنامه ای را که به داده ها یا حافظه برنامه ها یا پردازش های دیگر دسترسی داشته باشد ، شامل نمی شوند.