پس‌کوچه
اپ‌های اندروید
برو به محتوای اصلی

فیلترشکن Jet VPN؛ از نشت اطلاعات تا کلید رمزنگاری لورفته!

بررسی امنیتی پس‌کوچه روی Jet VPN که تاکنون بیش از یک میلیون بار از گوگل‌پلی دانلود شده، نشان می‌دهد که اعتماد به این وی‌پی‌ان در چند نقطه مهم شکست می‌خورد. در این ارزیابی دو آسیب‌پذیری با شدت بالا و چند ضعف و ریسک با شدت متوسط شناسایی شده‌اند؛ از دریافت تنظیمات حساس روی HTTP گرفته تا امکانی که اجازه می‌دهد یک اپ معمولی روی همان گوشی وی‌پی‌ان را خاموش کند.

ارزیابی پس‌کوچه

  • سند حریم خصوصی: ناقص و عدم شفافیت در جمع‌آوری داده‌ها
  • وب‌سایت رسمی: ندارد
  • شرکت سازنده: مشخص نیست
  • محل فعالیت: اندونزی
  • آدرس‌های ایمیل: its.buyo@gmail.com
  • کد منبع: باز نیست
  • تاریخ انتشار: ۲۴ آوریل ۲۰۲۵
  • آخرین به‌روزرسانی: ۱ اکتبر ۲۰۲۶

سطح دسترسی (بر اساس گوگل‌پلی)

  • مشاهده اتصالات شبکه
  • امکان تغییر اتصالات شبکه
  • کنترل حالت لرزش دستگاه
  • جلوگیری از حالت استراحت دستگاه

بررسی امنیتی پس‌کوچه روی Jet VPN که تاکنون بیش از یک میلیون بار از گوگل‌پلی دانلود شده، نشان می‌دهد که اعتماد به این وی‌پی‌ان در چند نقطه مهم شکست می‌خورد. در این ارزیابی دو آسیب‌پذیری با شدت بالا و چند ضعف و ریسک با شدت متوسط شناسایی شده‌اند؛ از دریافت تنظیمات حساس روی HTTP گرفته تا امکانی که اجازه می‌دهد یک اپ معمولی روی همان گوشی وی‌پی‌ان را خاموش کند.

تنظیمات اتصال VPN روی HTTP منتقل می‌شوند

برای اینکه یک وی‌پی‌ان بتواند اتصال را برقرار کند، ابتدا باید اطلاعاتی درباره سرور و شیوه اتصال دریافت کند؛ یعنی همان پیکربندی‌هایی که مشخص می‌کنند برنامه قرار است از چه مسیر و با چه تنظیماتی تونل را بسازد.

در Jet VPN بخشی از این اطلاعات از طریق HTTP معمولی دریافت می‌شود. در ترافیک ثبت‌شده، چندین درخواست به سرورهای مختلف Jet VPN مشاهده شد و پاسخ آن‌ها شامل رکوردهای پیکربندی بود. علاوه بر این، ارسال برخی اطلاعات مربوط به اتصال موفق نیز روی HTTP انجام می‌شد. خود اپلیکیشن نیز در مانیفست اجازه cleartext traffic را فعال کرده بود.

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

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

یک اپ معمولی روی گوشی می‌تواند Jet VPN را خاموش کند

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

در Jet VPN، دو بخش مربوط به ویجت و قابلیت خودکارسازی Tasker به‌گونه‌ای در دسترس سایر برنامه‌های نصب‌شده روی گوشی قرار دارد که هویت فرستنده به‌درستی کنترل نمی‌شود. در آزمایش انجام‌شده توسط پس‌کوچه، یک برنامه ساده و معمولی ساخته شد که فقط مجوز عادی دسترسی به اینترنت را داشت. همین برنامه توانست برای Jet VPN فرمان توقف ارسال کند و اتصال وی‌پی‌ان را قطع کند؛ بدون نیاز به دسترسی روت، مجوز ویژه یا تایید کاربر.

اما بخش مهم‌تر این است که بعد از خاموش شدن وی‌پی‌ان چه اتفاقی برای ترافیک کاربر می‌افتد؟

در ارزیابی پس‌کوچه، زمانی که Jet VPN فعال بود، ۲۱۵ درخواست دی‌ان‌اس آزمایشی از داخل تونل عبور کردند و هیچ نمونه‌ای از همان دی‌ان‌اس‌ها روی مسیر مستقیم شبکه دیده نشد. بعد یک اپ جداگانه فرمان توقف وی‌پی‌ان را ارسال کرد. نتیجه بلافاصله مشخص شد، پس از خاموش شدن وی‌پی‌ان، ۱۰۲ درخواست برای ترجمه نام دامنه و ۱۰۲ پاسخ، مستقیما از طریق شبکه بی‌سیم و شبکه موبایل ردوبدل شدند. نخستین درخواست خارج از تونل وی‌پی‌ان نیز حدود ۸۷ میلی‌ثانیه پس از ارسال فرمان توقف ثبت شد.

برای کاربر، سناریو می‌تواند ساده باشد: Jet VPN روشن است و کاربر تصور می‌کند ترافیکش از تونل عبور می‌کند. یک اپ دیگر روی همان گوشی، حتی اپی که هیچ ارتباطی با فیلترشکن ندارد، فرمان توقف را می‌فرستد. تونل از بین می‌رود و برنامه‌های دیگر همچنان به اینترنت دسترسی دارند؛ اما از مسیر عادی اینترنت دستگاه و خارج از تونل وی‌پی‌ان. در چنین وضعیتی آی‌اس‌پی یا شبکه وای‌فای می‌توانند بخشی از اطلاعاتی را ببینند که کاربر انتظار داشته وی‌پی‌ان از آن محافظت کند؛ در آزمایش انجام‌شده این مسئله به‌طور مشخص برای دی‌ان‌اس مشاهده شد.

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

در فاصله‌ای که وی‌پی‌ان تلاش می‌کرد هسته را دوباره راه‌اندازی کند و تونل جدیدی بسازد، هشت درخواست دی‌ان‌اس و پاسخ آن‌ها مستقیم از طریق شبکه بی‌سیم ردوبدل شدند. نخستین نمونه حدود ۰٫۱۴۵ ثانیه پس از از کار افتادن هسته دیده شد و این خروج مستقیم ترافیک تا بیش از یک ثانیه ادامه داشت. حدود ۲ ثانیه پس از توقف اولیه، ترافیک دوباره از تونل جدید وی‌پی‌ان عبور کرد.

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

در یک طراحی دقیق، وقتی وی‌پی‌ان برای چند لحظه از دسترس خارج می‌شود، اتصال اینترنت نیز باید موقتا متوقف شود؛ یعنی انتخاب سیستم این باشد که «تا وقتی تونل امن برنگشته، هیچ ترافیکی عبور نکند». این اتفاق ممکن است فقط چند لحظه طول بکشد، اما برای کاربری در شرایط حساس، همین فاصله کوتاه می‌تواند موجب شناسایی او شود.

یک اپ دیگر می‌تواند بی‌اجازه کانفیگ جدید داخل Jet VPN بگذارد

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

مشکل اینجاست که اضافه کردن این تنظیمات فقط در اختیار خود کاربر نیست و برنامه‌های دیگر روی گوشی هم می‌توانند تنظیمات جدیدی را برای Jet VPN ارسال کنند.

یک اپ دیگر روی گوشی می‌تواند از قابلیت اشتراک‌گذاری اندروید یا لینک مخصوص v2rayng://install-config استفاده کند و یک پروفایل را برای Jet VPN بفرستد. در آزمایش، اپ جداگانه یک پیکربندی آزمایشی VLESS ارسال کرد و Jet VPN آن را بدون نمایش جزئیات و بدون درخواست تایید از کاربر، مستقیما به فهرست پروفایل‌ها اضافه کرد.

تصور کنید کاربر چند سرور در Jet VPN دارد. یک اپ مخرب، پروفایل دیگری با نامی قابل‌اعتماد مثل «Fast Server» وارد برنامه می‌کند. کاربر هنگام باز کردن لیست ممکن است هیچ راهی برای تشخیص اینکه این پروفایل امن نیست را نداشته باشد. اگر کاربر بعدا همان پروفایل را برای اتصال انتخاب کند، تونل به سروری ساخته می‌شود که اطلاعات آن از منبع ناامن وارد برنامه شده است.

اطلاعات کانفیگ بدون رمزنگاری روی دستگاه ذخیره می‌شوند

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

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

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

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

فیلترشکن Jet VPN اطلاعات اتصال را با یک شناسه نسبتا پایدار مرتبط می‌کند

در زمان اتصال موفق، Jet VPN یک درخواست logging ارسال می‌کرد که شامل چند نوع اطلاعات بود: شناسه کاربر، اپراتور، Server ID، شهر، کشور، ISP و سازمان شبکه.

بررسی کد نشان داد UserId از ANDROID_ID دستگاه ساخته می‌شود. این شناسه می‌تواند به Jet VPN اجازه دهد رویدادهای مختلف اتصال را در محدوده همان نصب یا دستگاه به یکدیگر مرتبط کند.

برای مثال سرویس می‌تواند بفهمد یک شناسه مشخص در زمان‌های مختلف به کدام Server ID متصل شده و ارتباط او از چه ارائه دهنده اینترنت، کشور یا شهری ثبت شده است.

در کنار این، همان success log در مسیر HTTP مشاهده شد؛ بنابراین بخشی از این متادیتا فقط در اختیار Jet VPN قرار نمی‌گیرد و می‌تواند برای ناظر موجود در مسیر شبکه نیز قابل مشاهده باشد.

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

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

کلیدی که باید اصالت پیکربندی را تضمین کند، داخل خود اپ قرار دارد

Jet VPN برای برخی داده‌هایی که از گیت‌هاب دریافت می‌کند از یک قالب رمزنگاری‌شده به نام J1 استفاده می‌کند. این قالب بر پایه AES-GCM است؛ اما کلید ۳۲ بایتی مورد استفاده برای آن داخل خود APK قرار دارد.

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

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

نتیجه‌گیری

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

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

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

اپ اندروید پس‌کوچه را دانلود کنید

دانلود
بازگشت به بالا