دسته OWASP: MASVS-CODE: کیفیت کد
نمای کلی
انتشار بیلدهای تولیدی که شامل ویژگیهای Testing یا Debug هستند، میتواند بر وضعیت امنیتی برنامه تأثیر منفی بگذارد. این قابلیتها برای کمک به توسعهدهندگان برای کشف و شناسایی اشکالات در موارد استفاده برنامه مورد نظر قبل یا بعد از انتشار نسخه جدید استفاده میشوند و نباید برای عموم قابل دسترسی باشند.
نمونه هایی از ویژگی های تست / اشکال زدایی عبارتند از:
- منوهای مخفی
- گزینههایی برای فعال کردن گزارشهای اشکالزدایی
- گزینه هایی برای تغییر جریان برنامه
- گزینه هایی برای دور زدن فرآیندهای پرداخت یا اشتراک
- گزینه هایی برای دور زدن احراز هویت
- تست هایی برای فعالیت های کاربردی خاص
همه موارد قبلی را می توان توسط یک کاربر مخرب به منظور تغییر جریان مورد نظر برنامه یا بازیابی اطلاعات سیستم برای سفارشی سازی حملات بیشتر مورد استفاده قرار داد.
خطری که با در معرض قرار دادن ویژگیهای تست یا اشکالزدایی ایجاد میشود ممکن است بسته به عملکرد مربوط به خود قابلیتهای اشکالزدایی متفاوت باشد.
یکی دیگر از حوزههای خطر برای برنامه، مجموعه ویژگی android:debuggable در عنصر AndroidManifest.xml <application>
است. همانطور که در مقاله android:debuggable گزارش شده است، استقرار یک برنامه تولیدی با مجموعه مقادیر ذکر شده، به کاربران مخرب اجازه می دهد تا به منابع مدیریتی دسترسی پیدا کنند که در غیر این صورت غیرقابل دسترسی هستند.
تاثیر
یک کاربر مخرب در تعامل با یک ویژگی Testing یا Debug در یک ساخت تولید می تواند منجر به نتایج غیرمنتظره شود. تأثیر هر عمل مستقیماً با مجوزهای اختصاص داده شده به ویژگی مرتبط است. هر چه مجوزها بیشتر باشد، تأثیری که یک بهره برداری فعال می تواند داشته باشد، بیشتر می شود. چنین قابلیتهایی در یک برنامه کاربردی میتوانند برای دور زدن تعدادی از حفاظتها، دور زدن دیوارهای پرداخت، بازیابی اطلاعات مربوط به سیستم یا کاربر، یا راهاندازی فعالیتهای آزمایشی مورد استفاده قرار گیرند.
اقدامات کاهشی
از استفاده از اجزای اشکال زدایی خودداری کنید
عملکردهای تست یا اشکالزدایی هرگز نباید در اجزای برنامه تولید مانند فعالیتها، گیرندههای پخش، خدمات یا ارائهدهندگان محتوا پیادهسازی شوند، زیرا در صورت صادر شدن، میتوانند توسط هر فرآیند دیگری در دستگاه اجرا شوند. تنظیم مؤلفه اشکالزدایی بهعنوان صادر نشده ( android:exported="false" ) یک محافظت معتبر برای قابلیتها به حساب نمیآید زیرا اگر گزینه اشکالزدایی فعال باشد، هر دستگاه روت شده همچنان میتواند آن را از طریق ابزار Android Debug Bridge (ADB) اجرا کند.
ویژگیهای اشکالزدایی یا آزمایش را به ساختهای مرحلهبندی محدود کنید
اجرای هر تست یا عملکرد اشکال زدایی در برنامه ها باید فقط به مجموعه ای محدود از ساخت های Staging محدود شود تا فقط توسعه دهندگان بتوانند ویژگی های برنامه را در یک محیط کنترل شده اشکال زدایی یا آزمایش کنند. این را می توان با ایجاد یک ساخت تست یا اشکال زدایی اختصاصی از برنامه و تست های ابزار پیشرفته برای آن به منظور اطمینان از اجرای هر تست یا ویژگی اشکال زدایی در نسخه ایزوله به دست آورد.
اجرای تست های UI خودکار
هنگام اجرای آزمایشها بر روی یک برنامه، تستهای UI خودکار را انتخاب کنید زیرا قابل تکرار هستند، میتوانند در یک محیط جداگانه اجرا شوند و مستعد خطاهای انسانی نیستند.
منابع
- راهنمای برنامه نویس در مورد تنظیمات تست پیشرفته
- راهنمای برنامهنویس در مورد خودکارسازی تستهای UI
- android:debuggable
- android:exported
- برنامه های قابل اشکال زدایی در Android Market
- آیا کد اشکال زدایی می تواند آسیب پذیری های امنیتی ایجاد کند؟