یک آسیبپذیری بحرانی در فریمورک Capacitor برای سیستمعاملهای Android و iOS شناسایی شده است که به مهاجمان اجازه میدهد با ارسال یک لینک مخرب، محتوای تحت کنترل خود را در محیط امن (Trusted Origin) اپلیکیشنهای موبایل اجرا کنند.
جزئیات فنی و مکانیسم حمله
این نقص امنیتی که با شناسه CVE-2026-103922 ردیابی میشود، در مکانیزم محافظت از ناوبری (Navigation Protection) در WebView مربوط به Capacitor وجود دارد. در نسخههای آسیبپذیر، Guard مربوط به ناوبری تنها طرح (Scheme) و میزبان (Host) URL هدف را بررسی میکرد و مسیر (Path) آن را اعتبارسنجی نمینمود.
این نقص باعث میشود درخواستهای ناوبری به مسیر داخلی /capacitor_http_interceptor که در Origin خود اپلیکیشن میزبانی میشود، پذیرفته شوند. مهاجم میتواند لینکی طراحی کند که به این نقطه انتهایی (Endpoint) داخلی اشاره کرده و همزمان یک URL خارجی مخرب را ارسال کند. در این حالت، لایه Native در Capacitor محتوای مخرب را فراخوانی کرده و آن را به WebView بازمیگرداند.
پیامدهای امنیتی و سطح دسترسی
از آنجایی که پاسخ در Origin قانونی اپلیکیشن بارگذاری میشود، اسکریپتهای موجود در صفحه مخرب از امتیازات Same-Origin بهره میبرند. این موضوع منجر به شکست مرزهای امنیتی شده و دسترسیهای زیر را فراهم میکند:
- خواندن دادههای ذخیره شده در localStorage و کوکیها (Cookies).
- تعامل با قابلیتهای Native که از طریق پلاگینهای ثبت شده در Capacitor در دسترس هستند.
- دسترسی احتمالی به توکنهای احراز هویت، فایلها، اعلانها و دادههای حساس دستگاه.
دامنه اثر و نسخههای آسیبپذیر
این آسیبپذیری با امتیاز CVSS 9.6 (بحرانی) رتبهبندی شده است. اپلیکیشنهایی که لینکهای کنترلشده توسط کاربر را نمایش میدهند (مانند چتها، بخش نظرات، پورتالهای پشتیبانی و فیدهای اجتماعی) در معرض خطر بیشتری هستند. لازم به ذکر است که غیرفعال کردن پلاگین CapacitorHttp در نسخههای آسیبپذیر، این مشکل را برطرف نمیکند.
نسخههای تحت تأثیر:
- نسخههای 6.0.0 تا قبل از 6.2.2
- نسخههای 7.0.0 تا قبل از 7.6.9
- نسخههای 8.0.0 تا قبل از 8.3.5 و 8.3.5 تا قبل از 8.4.3
- نسخههای 8.5.0 تا قبل از 8.5.1
راهکارهای مقابله و اصلاح
توسعهدهندگان باید سریعاً به نسخههای اصلاحشده بهروزرسانی کرده، اپلیکیشنهای Android و iOS خود را مجدداً Build کرده و نسخههای جدید را منتشر کنند. برای سازمانهایی که امکان بهروزرسانی فوری ندارند، راهکارهای موقت عبارتند از:
- پیادهسازی یک پلاگین سفارشی برای رد کردن درخواستهای ناوبری به مسیر
/capacitor_http_interceptor. - اعتبارسنجی سختگیرانه و پاکسازی (Sanitize) تمامی URLهای کنترلشده توسط کاربر پیش از رندر در WebView.