ناامن X509TrustManager

دسته OWASP: MASVS-CODE: کیفیت کد

نمای کلی

کلاس X509TrustManager مسئول تأیید صحت یک سرور راه دور است. این کار را با تایید گواهی سرور انجام می دهد.

اجرای ناامن X509TrustManager در یک برنامه اندروید، پیاده سازی است که صحت سروری را که برنامه با آن در ارتباط است به درستی تأیید نمی کند. این می تواند به مهاجم اجازه دهد تا جعل هویت یک سرور قانونی را بسازد و برنامه را فریب دهد تا داده های حساس را برای مهاجم ارسال کند.

این آسیب‌پذیری وجود دارد زیرا با استفاده از کلاس X509TrustManager ، Java/Android اجازه می‌دهد تا تأیید کامل سرور را لغو کند. کلاس X509TrustManager دو عملکرد مورد علاقه دارد: checkServerTrusted() و getAcceptedIssuers() . این فراخوانی های تابع را می توان به گونه ای پیکربندی کرد که به همه گواهی های X.509 اعتماد کند. در نهایت، منطق اعتبارسنجی سفارشی ممکن است باگ یا ناقص باشد و اجازه اتصالات غیرمنتظره را بدهد. در تمام این موارد، هدف کلاس نفی شده است و اتصال شبکه ایجاد شده بر اساس خروجی X509TrustManager ایمن نیست.

تاثیر

اجرای ناامن X509TrustManager می تواند منجر به آسیب پذیری هایی شود که می تواند برای انجام حملات MitM (Man-in-the-Middle) بر روی ترافیک شبکه از برنامه قربانی استفاده شود. تأثیر سوء استفاده از این کد ناامن این است که در صورت راه اندازی این کد، داده های شبکه برنامه کاربر می تواند توسط مهاجمان شبکه (از راه دور یا محلی) در معرض خطر قرار گیرد. این تأثیر به محتوای ترافیک شبکه بستگی دارد که به طور ناخواسته در معرض نمایش قرار می گیرد (PII، اطلاعات خصوصی، مقادیر حساس جلسه، اعتبار خدمات، و غیره).

اقدامات کاهشی

از عملکرد NetworkSecurityConfig.xml استفاده کنید تا اطمینان حاصل کنید که تمام اتصالات مرحله تولید، آزمایش، اشکال زدایی و توسعه به درستی به جای استفاده یا پیاده سازی کد تأیید اعتبار گواهی TLS/SSL سفارشی انجام می شود. اگر برای ساخت‌های آزمایشی و اشکال‌زدایی به استفاده از گواهی امضا شده نیاز است، به جای اجرای X509TrustManager سفارشی، از NetworkSecurityConfig استفاده کنید.

منابع