فیلترشکن Shah VPN؛ شاه که نه، سربازی بیسپر!
بررسی امنیتی نسخه 25.3 Shah VPN که در هفتههای اخیر در لیست اپهای پردانلود کاربران ایران از گوگلپلی قرار گرفته است، نشان میدهد در این اپ امکان ایجاد اختلال در ویپیان توسط اپهای دیگر، احتمال نشت IPv6، دریافت تنظیمات راهدور بدون تایید اصالت و خروج مستقیم بخشی از ترافیک ایران همچنان وجود دارد. چند کتابخانه آسیبپذیر هم در این اپ وجود دارد.
ارزیابی پسکوچه
- سند حریم خصوصی: ناقص
- وبسایت رسمی: ندارد
- شرکت سازنده: Lago Sofia Holdco Limited
- محل فعالیت: بریتانیا
- آدرس ایمیل :tellme.shah@proton.me
- کد منبع: باز نیست
- تاریخ انتشار: ۱۸ دسامبر ۲۰۲۵
- آخرین بهروزرسانی: ۲۶ ژوئیه ۲۰۲۶
سطح دسترسی (بر اساس گوگلپلی)
- دسترسی به وضعیت و هویت دستگاه
- دسترسی به دوربین
- مشاهده اتصالات وایفای
- جلوگیری از حالت استراحت دستگاه
- مشاهده اتصالات شبکه
بررسی امنیتی نسخه 25.3 Shah VPN که در هفتههای اخیر در لیست اپهای پردانلود کاربران ایران از گوگلپلی قرار گرفته است، نشان میدهد در این اپ امکان ایجاد اختلال در ویپیان توسط اپهای دیگر، احتمال نشت IPv6، دریافت تنظیمات راهدور بدون تایید اصالت و خروج مستقیم بخشی از ترافیک ایران همچنان وجود دارد. چند کتابخانه آسیبپذیر هم در این اپ وجود دارد.
شرکت LAGO SOFIA HOLDCO LIMITED که یک شرکت خصوصی با مسئولیت محدود در انگلستان است، سازنده این ویپیان است. نام اپلیکیشن به وضوح نشان میدهد که بازار هدف این ویپیان، کاربران ایرانی است. اگرچه سندی در مورد این شرکت وجود ندارد، اما در بسیاری از موارد مشابه، چنین شرکتهایی فقط به منظور عبور از سدهای تایید هویت گوگل، دور زدن تحریمها و دریافت درآمدهای ارزی حاصل از تبلیغات در اپلیکیشن ایجاد میشوند و فقط برای پوشش حقوقی ثبت شدهاند.
در اندروید، بخشهایی از هر اپ میتوانند فقط در داخل همان برنامه قابل استفاده باشند یا عمدا در اختیار برنامههای دیگر قرار بگیرند. در Shah VPN دو بخش با نامهای TaskerReceiver و V2RayTestService بهصورت exported=true تعریف شدهاند؛ یعنی اپهای دیگر روی گوشی نیز میتوانند برای آنها پیام و فرمان بفرستند. در عین حال، هیچ مجوز اختصاصی برای محدودکردن دسترسی به این بخشها تعیین نشده است. تعدادی از گیرندههایی که هنگام اجرای برنامه ساخته میشوند نیز با حالت RECEIVER_EXPORTED ثبت شدهاند و از بیرون اپ قابل دسترسیاند. بررسی کد نشان میدهد فرمانهای دریافتی میتوانند عملیات حساسی مانند متوقفکردن یا دوباره راهاندازیکردن VPN و آغاز یا لغو تست اتصال شبکه را فعال کنند. به بیان ساده، برنامه درهایی برای کنترل بعضی عملکردهای مهم خود باز گذاشته، اما برای ورود از این درها رمز یا کنترل هویت مناسبی قرار نداده است.
اگر یک اپ مخرب روی همان گوشی نصب شده باشد، میتواند بدون بازکردن Shah VPN و بدون اجازه مستقیم کاربر، فرمان توقف یا راهاندازی مجدد اتصال را ارسال کند. نتیجه ممکن است ایجاد وضعیتی باشد که ظاهر برنامه همچنان متصل به نظر برسد، اما تونل عملا دچار اختلال شده باشد و منجر به نشت آیپی، عبور ترافیک از اتصال بدون ویپیان و لو رفتن هویت کاربر شود.
برای اینکه یک VPN همه ترافیک گوشی را از داخل تونل عبور دهد، باید هر دو نوع IPv4 و IPv6، را پوشش دهد. بررسی کد Shah VPN نشان میدهد مسیر کامل ترافیک IPv4 همیشه به تونل VPN اضافه میشود، اما مسیر کامل IPv6 تنها زمانی به تونل اضافه میشود که گزینهای داخلی با نام pref_prefer_ipv6 روشن باشد؛ درحالیکه مقدار پیشفرض این گزینه در کد اپ خاموش است. این یعنی اپ بهطور پیشفرض تضمین نمیکند که تمام ارتباطهای IPv6 نیز وارد ویپیان شوند. اگر گوشی یا اپراتور اینترنت از IPv6 پشتیبانی کند، بعضی برنامهها یا وبسایتها ممکن است ارتباط خود را از مسیر IPv6 برقرار کنند و این ترافیک از ویپیان عبور نکند؛ در حالی که کاربر بیاطلاع است و فکر میکند چون ویپیان فعال است، تمام ترافیک او از ویپیان میگذرد.
در چنین شرایطی، وبسایت مقصد، اپراتور اینترنت یا دیگر ناظران شبکه ممکن است آدرس واقعی و بخشی از فعالیت آنلاین کاربر را ببینند. اما باید توجه داشت که نشت زمانی ممکن است رخ دهد که گوشی و شبکه واقعا از IPv6 استفاده کنند. به همین دلیل ممکن است یک کاربر هیچ نشانهای از نشت نبیند، در حالی که کاربر دیگری روی شبکهای متفاوت با این مشکل روبهرو شود.
اپ Shah VPN بخشی از تنظیمات خود، از جمله فهرست سرورها، مسیر عبور ترافیک، تنظیمات تبلیغات و ثبت گزارشها را از راه دور دریافت میکند. این اطلاعات با الگوریتم AES-CTR رمزنگاری شدهاند، اما کلید بازکردن آنها از یک مقدار ثابت داخل خود فایل APK اپ ساخته میشود؛ بنابراین هر کسی که اپ را مهندسی معکوس کند، میتواند این کلید را استخراج و محتوای تنظیمات را رمزگشایی کند. مهمتر اینکه در این سازوکار هیچ HMAC، رمزنگاری احرازشده مانند AEAD یا امضای دیجیتال وجود ندارد. این ابزارها به اپ کمک میکنند مطمئن شود تنظیمات واقعا توسط سازنده صادر شده و در مسیر تغییر نکردهاند.
فرض کنید کاربر اپ ویپیان را را باز میکند و اپ برای گرفتن فهرست تازه سرورها و قوانین اتصال، بستهای از تنظیمات را از اینترنت دریافت میکند. این بسته رمزنگاری شده است، بنابراین در نگاه اول امن به نظر میرسد. اما اپ فقط بررسی میکند که آیا میتواند بسته را با کلید موجود در خودش باز کند یا نه؛ بررسی نمیکند که چه کسی آن را ساخته و آیا واقعا از طرف سازنده Shah VPN فرستاده شده است. حالا اگر مهاجمی به سرور تنظیمات، حساب GitHub یا یکی از منابع مورد اعتماد اپ نفوذ کند، میتواند بسته اصلی را با بستهای جعلی جایگزین کند. چون کلید رمزنگاری از داخل خود اپ قابل استخراج است، مهاجم میتواند تنظیمات جعلی را طوری رمزنگاری کند که Shah VPN بدون هشدار آنها را باز و اجرا کند. مثلا مهاجم ممکن است آدرس سرورهای ویپیان را تغییر دهد و کاربران را به سرورهای تحت کنترل خود بفرستد یا بخشی از ترافیک را از تونل خارج کند. در تمام این مدت برای کاربر همهچیز عادی است؛ درحالیکه اپ نمیتواند تشخیص دهد تنظیماتی که اجرا میکند واقعا متعلق به سازنده است یا توسط فرد دیگری جایگزین شده است.
در زمان بررسی پسکوچه (آگوست ۲۰۲۶)، Shah VPN از سرور خود ۱۴ تنظیم اتصال (پروفایل) دریافت میکرد. هر پروفایل شامل اطلاعات یک اتصال ویپیان و قوانینی است که مشخص میکنند ترافیک کاربر از چه مسیری عبور کند. ۱۲ مورد، اتصالهای معمولی بودند که به سرورهای مختلف مربوط میشدند و دو مورد دیگر با عنوان Smart ارائه شده بودند؛ حالتی که ظاهرا قرار است اتصال مناسب را بهصورت خودکار انتخاب کند، هرچند رفتار دقیق آن در کد، شفاف نبود.
در تمام ۱۲ اتصال معمولی، قواعدی با نامهای domain:ir، geosite:category-ir و geoip:ir وجود داشت. این قواعد برای شناسایی دامنههای با پسوند .ir، سایتهای دستهبندیشده بهعنوان ایرانی و IPهای متعلق به ایران استفاده میشوند و سپس به اپ دستور میدهند این ارتباطها را بهصورت مستقیم بفرستد و از تونل ویپیان عبور ندهد. بعضی درخواستهای DNS مربوط به ایران نیز خارج از تونل و مستقیما به سرور 223.5.5.5 فرستاده میشوند(ممکن است این تنظیمات بعدا تغییر کنند.) این رفتار از نظر فنی نوعی Split Tunneling بر اساس مقصد است؛ اما مشکل اینجاست که باید برای کاربر شفاف و روشن باشد و امکان خاموشکردنش وجود داشته باشد. در Shah VPN در این مورد به کاربر اطلاع داده نشده است. ممکن است کاربر تصور کند با روشنکردن ویپیان تمام ارتباطهایش محافظت میشوند، درحالیکه هنگام ورود به یک سایت ایرانی، آن سایت میتواند آیپی واقعی او را ببیند و شرکت اینترنت نیز ممکن است مقصد یا پرسوجوی دیاناس او را تشخیص دهد.
بخش اصلی ارتباط Shah VPN فقط از کدی که سازنده نوشته تشکیل نشده و از چند کتابخانه آماده نیز استفاده میکند. بررسی فایل بومی libgojni.so نشان داد که اپ از نسخه 0.55.0 کتابخانه x/net استفاده میکند؛ نسخهای که شامل آسیبپذیری ثبتشده با شناسه GO-2026-5942است. در بعضی شرایط، یک پاسخ DNS غیرعادی یا خراب میتواند این بخش را وارد وضعیت panic کند؛ در زبان Go، panic یعنی برنامه با خطایی روبهرو شده که نمیتواند بهطور عادی ادامه دهد و ممکن است هسته اتصال متوقف شود یا از کار بیفتد. این مشکل در نسخه 0.56.0 اصلاح شده، اما Shah VPN هنوز از نسخه قبلی استفاده میکند.
نتیجهگیری:
علاوه بر اینکه از سازندگان این ویپیان اطلاعات دقیقی در دسترس نیست و ابهامات زیادی درباره سازندگان وجود دارد، این سرویس دارای مشکلات امنیتی جدی است که میتواند امنیت و حریم خصوصی کاربر را به خطر بیندازد. پسکوچه استفاده از این ویپیان را توصیه نمیکند.