استفاده ناامن از پیوندهای عمیق

دسته OWASP: MASVS-PLATFORM: پلتفرم تعامل

نمای کلی

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

تاثیر

فقدان مکانیسم اعتبارسنجی پیوند عمیق مناسب، یا استفاده ناایمن از پیوندهای عمیق، می‌تواند به کاربران مخرب در انجام حملاتی مانند دور زدن اعتبار میزبان، برنامه‌نویسی بین برنامه‌ای و اجرای کد از راه دور در چارچوب مجوزهای برنامه آسیب‌پذیر کمک کند. بسته به ماهیت برنامه، این می تواند منجر به دسترسی غیرمجاز به داده ها یا عملکردهای حساس شود.

با طراحی، اندروید به چندین برنامه اجازه می‌دهد فیلترهای هدف را برای یک URI پیوند عمیق ثبت کنند. برای جلوگیری از رهگیری پیوندهای عمیق در نظر گرفته شده برای برنامه شما توسط برنامه های مخرب، ویژگی android:autoVerify در intent-filter در AndroidManifest برنامه پیاده سازی کنید. این به کاربران اجازه می دهد تا برنامه مورد نظر خود را برای مدیریت پیوندهای عمیق انتخاب کنند، از عملکرد مورد نظر اطمینان حاصل کنند و از تفسیر خودکار برنامه های مخرب جلوگیری کنند.

اندروید 12 برای بهبود امنیت، مدیریت سختگیرانه تری از اهداف وب را معرفی کرد . اکنون برنامه‌ها باید برای مدیریت پیوندها از دامنه‌های خاص، از طریق پیوندهای برنامه Android یا انتخاب کاربر در تنظیمات سیستم، تأیید شوند. این مانع از ربودن لینک‌هایی می‌شود که برنامه‌ها نباید با آن‌ها کار کنند.

برای فعال کردن تأیید مدیریت پیوند برای برنامه خود، فیلترهای هدف را اضافه کنید که با قالب زیر مطابقت دارند (این مثال از مستندات Verify App Android App Links گرفته شده است):

  <!-- Make sure you explicitly set android:autoVerify to "true". -->
  <intent-filter android:autoVerify="true">
      <action android:name="android.intent.action.VIEW" />
      <category android:name="android.intent.category.DEFAULT" />
      <category android:name="android.intent.category.BROWSABLE" />
  
      <!-- If a user clicks on a shared link that uses the "http" scheme, your
           app should be able to delegate that traffic to "https". -->
      <data android:scheme="http" />
      <data android:scheme="https" />
  
      <!-- Include one or more domains that should be verified. -->
      <data android:host="..." />
  </intent-filter>

پیوندهای عمیق می توانند شامل پارامترهای اضافی باشند که به هدف هدف ارائه می شوند، به عنوان مثال، برای انجام اقدامات بیشتر. اساس مدیریت پیوندهای عمیق امن، اعتبارسنجی دقیق داده ها است. همه داده‌های دریافتی از پیوندهای عمیق باید به دقت توسط توسعه‌دهندگان تأیید و پاکسازی شوند تا از تزریق کد یا مقادیر مخرب به برنامه قانونی جلوگیری شود. این را می توان با بررسی مقدار هر پارامتر پیوند عمیق در برابر لیست مجاز از پیش تعریف شده از مقادیر مورد انتظار پیاده سازی کرد.

قبل از افشای اطلاعات حساس، برنامه‌ها باید سایر وضعیت‌های داخلی مرتبط، مانند وضعیت احراز هویت یا مجوز را بررسی کنند. یک مثال ممکن است پاداشی برای تکمیل یک سطح از یک بازی باشد. در این مورد ارزش پیش شرط تکمیل سطح را دارد و در غیر این صورت به صفحه اصلی هدایت می شود.

منابع