گزارش امنیتی · نسخه 4 · ۱۰ آبان ۱۴۰۵

ادعاهای قابل‌تأیید.

این یک صفحه تبلیغاتیِ «ما امن هستیم» نیست، بلکه مجموعه‌ای از ادعاهای قابل‌تأیید (SR-N) است که هرکدام را می‌توانید در برنامه باگ‌باونتیِ ما برای دریافت پاداش به چالش بکشید.

01 · دسترسی به سرور شما

دسترسی به سرور شما

SR-1رمز root یک‌بار استفاده می‌شود و در سمت ما ذخیره نمی‌شود.تأییدشده+

رمز فقط برای بازکردن نخستین اتصال SSH و نصب یک کاربر سرویس لازم است. به‌عنوان احراز هویت SSH برای اتصال ما فرستاده می‌شود — نه به‌عنوان آرگومان اسکریپت یا متغیر محیطی. پایگاه‌داده ما فیلدی برای آن ندارد؛ وارد محیط‌های اجرای اسکریپت نمی‌شود و در لاگ‌ها نوشته نمی‌شود (خطاهای اتصال فقط شامل آدرس و پورت هستند، هرگز رمز). در حافظه پس از استفاده پاک می‌شود (تا حد امکان) — این دفاعِ لایه‌لایه است، نه یک تضمین: Go ممکن است تا زمان جمع‌آوری زباله، نسخه‌هایی از این مقدار را روی heap نگه دارد.

ملاحظه صادقانه: این همچنان رمز root روی سرور شماست. پس از نصب، ورود با رمز و ورود root از طریق SSH را غیرفعال می‌کنیم، اما خودِ رمز را تغییر نمی‌دهیم — اگر خواستید خودتان آن را عوض کنید. «ما آن را ذخیره نمی‌کنیم» درست است؛ «دیگر یک راز نیست» درست نیست.

SR-2پس از نصب، ورود با رمز و ورود root از طریق SSH غیرفعال می‌شوند.تأییدشده+

PasswordAuthentication no، PermitRootLogin no، انتقال SSH به یک پورت غیراستاندارد (به‌طور پیش‌فرض 12011)، فعال‌بودن fail2ban (یک ساعت مسدودسازی پس از ۵ تلاش ناموفق)، ورود فقط با کلید. کلید عمومی پیش از استفاده به‌شکل سخت‌گیرانه اعتبارسنجی می‌شود: خطوط جدید (محافظت در برابر سُر دادنِ کلیدهای اضافی به authorized_keys) و کلیدهای نامعتبر از نظر نحوی رد می‌شوند.

ضدِ قفل‌شدن: پورت 22 بسته نمی‌شود تا زمانی که کرنل (از طریق ss) تأیید کند که پورت جدید SSH واقعاً در حال شنیدن است؛ پیکربندی با sshd -t و قاعده sudo با visudo -cf بررسی می‌شود و هر دو در صورت خطا بازگردانده می‌شوند.

SR-3کلید مدیریت فقط به‌صورت رمزگذاری‌شده نگهداری می‌شود.تأییدشده+

پنل نه با رمز شما، بلکه با یک کلید جداگانه (ed25519) کار می‌کند که خودش تولید می‌کند. بخش خصوصیِ آن در پایگاه‌داده به‌صورت رمزگذاری‌شده با AES-256-GCM قرار دارد. کلید رمزگذاری (KEK) جدا از پایگاه‌داده نگهداری می‌شود — در یک متغیر محیطیِ سرور — و در محیط تولید اجباری است (هیچ پیش‌فرضِ ناامنی وجود ندارد: بدون KEK زیرسیستم رمزنگاری اصلاً راه نمی‌افتد). همین رمزگذاری از رازهای سنگین در پایگاه‌داده محافظت می‌کند — رمز/توکن/JWT مدیر Marzban، کلیدهای Reality، کلیدهای ارائه‌دهنده پرداخت، کشِ اعتبارنامه پروکسی، پیکربندی پشتیبان.

رمزگذاری نه‌تنها پنهان می‌کند بلکه داده را احراز هویت می‌کند (برچسب احرازِ GCM): دستکاریِ یک فیلد رمزگذاری‌شده هنگام رمزگشایی تشخیص داده و رد می‌شود. هر فیلد با یک nonce تصادفیِ تازه رمزگذاری می‌شود؛ مقدار KEK هرگز به لاگ‌ها نمی‌رسد — فقط شناسه کوتاه آن.

درباره توکن‌های قابلیت: توکن اشتراک /sub یک رازِ حامل است. برای جست‌وجو فقط SHA-256 آن را ذخیره می‌کنیم، در حالی که نسخه‌ی لازم برای نمایش دوباره‌ی لینکِ پیش‌تر صادرشده به‌صورت متن‌رمزِ AES-GCM نگه داشته می‌شود. رکوردهای متن‌ساده قدیمی‌تر پیش از راه‌اندازیِ سرور HTTP، به‌شکل fail-closed به قالب جدید مهاجرت داده می‌شوند. شناسه URL وب‌هوکِ پرداخت به‌صورت آشکار ذخیره می‌شود اما به‌تنهایی یک رویداد را احراز هویت نمی‌کند: اصالت جداگانه با یک امضای HMAC تأیید می‌شود.

رازهای کلیدهای Partner API به‌صورت بازگشت‌ناپذیر ذخیره می‌شوند: کلید کامل فقط یک بار هنگام صدور نمایش داده می‌شود و در پایگاه‌داده تنها SHA-256 بخش محرمانه‌ی آن باقی می‌ماند. توکن‌های access و refresh هوش مصنوعی متصل نیز به‌صورت متن‌ساده ذخیره نمی‌شوند؛ اتصال به سطح دسترسی انتخاب‌شده محدود است و مالک حساب می‌تواند آن را باطل کند.

SR-4کلید خصوصی در پاسخ‌های معمولی قرار نمی‌گیرد و فقط با اکسپورتِ صریح تحویل داده می‌شود.تأییدشده+

کلید فقط روی سرور و در حافظه رمزگشایی می‌شود؛ APIهای معمولی هرگز آن را برنمی‌گردانند. تنها راه به‌دست‌آوردنش یک تابع اکسپورتِ عمدی است («کلیدت را بردار»)، که با ورود به‌همراه یک کد یک‌بارمصرفِ ایمیلی محافظت می‌شود (کد فقط به‌صورت هش HMAC ذخیره می‌شود، در زمان ثابت مقایسه می‌شود، TTL ده‌دقیقه‌ای، ۵ تلاش). بنابراین کلید را می‌توان عمداً بازیابی کرد، اما نمی‌توان از طریق یک درخواست عادی «لو» داد.

SR-5هنگام حذف یک سرور، کلید به‌صورت همگام از رکورد آن پاک می‌شود.تأییدشده+

پیش از تغییر وضعیت سرور و پیش از هر عملیات شبکه‌ای در پس‌زمینه، فیلدهای نگهدارنده‌ی کلید مدیریت به‌صورت همگام صفر می‌شوند. اگر پایگاه‌داده پاک‌شدن را تأیید نکند، عملیات یک خطا برمی‌گرداند و می‌توان دوباره تلاش کرد. حذف «نرم» باقی می‌ماند: ردیف و داده‌های غیرمحرمانه‌ی سرویس حفظ می‌شوند. این به معنای پاک‌شدن فیزیکیِ پشتیبان‌های ازپیش‌ساخته‌شده نیست — چرخه عمر آن‌ها را سیاست نگهداری پشتیبان تعیین می‌کند.

SR-16APIهای شریکِ ممیزی‌شده دسترسی را به مالک منبع محدود می‌کنند.تأییدشده+

در مسیرهای پنل، partner_id از نشستِ امضاشده استخراج می‌شود و در Partner API از کلید API تأییدشده یا اتصال OAuth هوش مصنوعی. شناسهٔ مالک از مسیر، پارامترهای query یا بدنهٔ درخواست گرفته نمی‌شود. کلیدهای API افزون بر این به scope، مدت اعتبار و پلن محدود می‌شوند؛ برای هوش مصنوعی متصل، مجموعهٔ دسترسی‌ها در هر درخواست از سطحی که مالک انتخاب کرده است محاسبه می‌شود.

پیش از برگرداندن یا تغییر هر چیزی، سیستم دوباره بررسی می‌کند که سرور، کلاستر، اینباند، مسیر، کاربر VPN یا پرداخت به همین حساب تعلق دارد. کوئری‌های پایگاه‌داده با partner_id محدود می‌شوند و کلیدهای یکتا و خارجیِ ترکیبی پیوندهای نامعتبرِ میان‌شریکی را رد می‌کنند. ماتریس مجوزدهی در آزمون‌ها برای هر نقطهٔ پایانی که شناسهٔ منبع دارد، یک سناریوی صریح IDOR را الزامی می‌کند.

ملاحظه صادقانه: این با یک ممیزیِ کد در طول مسیر درخواست تأیید شده، نه با یک تست نفوذِ عمومی — بنابراین SR-16، مانند بقیه، در باگ‌باونتی برای رد‌شدن باز است.

صادقانه درباره دسترسیِ پنل — این دسترسیِ کاملِ مدیر است، نه «محدود».یادداشت صادقانه+

برای پیکربندی خودکارِ همه‌چیز (نصب Xray+Reality، اعمال پیکربندی، خواندن سنجه‌ها) پنل دسترسیِ کاملِ مدیریتی روی سرور دارد (معادلِ root، از طریق یک کاربر سرویس با sudo بدون رمز). این برای مدیریت لازم است، و ما آن را «محدود» نمی‌نامیم.

آنچه ریسک را کاهش می‌دهد: رازها فقط از طریق stdin فرایند به سرور فرستاده می‌شوند (نه به‌عنوان آرگومان دستور — در فهرست فرایندها دیده نمی‌شوند)؛ پس از نصب اولیه، هر اتصال مدیریتی کلید میزبانِ پین‌شده‌ی سرور را تأیید می‌کند — جابه‌جاییِ «وسطِ راهِ» سرور رد می‌شود. آنچه شما کنترل می‌کنید: دسترسی بر پایه‌ی کلیدی است که هر زمان می‌توانید باطلش کنید — با حذف سرور (کلید صفر می‌شود) یا صرفاً حذف VPS نزد میزبان خودتان (آنگاه همه‌چیز ناپدید می‌شود).

02 · داده‌ها و حریم خصوصی شما

داده‌ها و حریم خصوصی شما

SR-6کاربران VPN روی سرور شما قرار دارند؛ ما حداقلِ فراداده‌ی سرویس را نگه می‌داریم.تأییدشده+

خودِ حساب‌های VPN (VLESS/Reality) در Marzban روی سرور مسترِ شما ساخته می‌شوند و آنجا قرار دارند. به‌صورت متمرکز فقط چیزی را ذخیره می‌کنیم که برای صدور یک لینک اشتراک لازم است: یک توکن اشتراکِ تصادفی و یک عکس‌فوریِ رمزگذاری‌شده از اعتبارنامه‌های پروکسی (یک کش؛ منبعِ حقیقت، Marzban شماست). ما هیچ تاریخچه‌ی ترافیک، IP یا بازدید کاربر نداریم.

نشانی ایمیل کاربر نهایی نزد ما نگهداری نمی‌شود: نام حساب او به‌صورت بازگشت‌ناپذیر مشتق می‌شود و نشانی‌ای در خود ندارد. ایمیل کد ورود را ما می‌فرستیم، پس نشانی از صف ارسال ما می‌گذرد و بلافاصله پس از ارسال از آن حذف می‌شود — برای شناختن کاربری که بازمی‌گردد تنها یک اثر بازگشت‌ناپذیر می‌ماند که نشانی از آن بازیابی نمی‌شود. تنها موردی که نشانی با این حال باقی می‌ماند را صریح می‌گوییم: هنگام پرداخت در webhook پرداخت می‌رسد و با مدت نگهداری محدود در گزارش پرداخت‌ها ثبت می‌شود.

این داده‌های سرویسی را تنها تا زمانی که لازم است نگه می‌داریم و به‌طور خودکار پاک می‌کنیم: ایمیل بلافاصله پس از ارسال از صف ارسال حذف می‌شود، بدنهٔ یک رویداد پرداخت پس از پردازش، و رویدادهای در انتظار تلاش مجدد تا یک بازهٔ ۹۰روزه. می‌توانید حساب خود را همراه با همهٔ داده‌های آن خودتان در بخش «تنظیمات پیشرفته» حذف کنید و حذف را با کدی که به ایمیلتان ارسال می‌شود تأیید کنید (برای جزئیات، خطر ۷ را ببینید). ما این را صادقانه افشا می‌کنیم، نه اینکه پشت عبارات مبهم پنهانش کنیم.

SR-7ما لاگ‌های ترافیک یا بازدیدهای شما را جمع‌آوری نمی‌کنیم، و سرورها هیچ دفترِ بازدیدی نگه نمی‌دارند.تأییدشده+

پلتفرم CreateYourVPN اطلاعاتی درباره‌ی اینکه شما یا کاربرانتان چه سایت‌هایی را باز می‌کنید دریافت یا ذخیره نمی‌کند. شمای دریافتِ سنجه‌ها بسته است: از نظر فیزیکی هیچ فیلدی برای IP، دامنه یا بازدید ندارد — فقط تجمیع‌ها (شمار یکتای آنلاین، مجموع بایت‌ها، CPU/RAM/بار). هر نود با یک توکن HMAC که به شناسه خودش گره خورده احراز هویت می‌شود و فقط برای خودش می‌تواند سنجه بنویسد. متعادل‌کننده‌ی روی نود (HAProxy) به‌عنوان یک مسیریابِ TCP بر اساس SNI کار می‌کند و ترافیک را رمزگشایی نمی‌کند. روی خودِ سرور، ژورنال‌های سیستم بیش از حدود یک ساعت نگه داشته نمی‌شوند و به syslog ارسال نمی‌شوند.

فراتر از سطح پلتفرم، سرورها نیز هیچ دفترِ بازدیدی نگه نمی‌دارند: لاگ‌گیریِ دسترسیِ Xray در هر بار اعمالِ پیکربندی به‌اجبار خاموش می‌شود (پلتفرم log.access را روی none تنظیم می‌کند)، بنابراین پراکسیِ لبه ثبت نمی‌کند که کاربران به چه نشانی‌هایی متصل می‌شوند. این در کد اِعمال شده و روی کل ناوگان مستقر گردیده است.

SR-8تحلیل وب همان Google Analytics است؛ ردیاب دیگری وجود ندارد.تأییدشده+

برای درکِ نحوه‌ی استفاده از سایت و پنل، Google Analytics را به‌کار می‌گیریم (بنر کوکی درباره‌ی جمع‌آوری کوکی و آمار هشدار می‌دهد؛ جزئیات در سیاست حفظ حریم خصوصی است). در صفحه‌های رضایت OAuth، بارگذاری ابزار تحلیل به‌طور اجباری غیرفعال است: URL این صفحه‌ها شناسه‌ی کوتاه‌عمرِ درخواست اتصال هوش مصنوعی را در بر دارد که نباید به شخص ثالث منتقل شود. هیچ ردیاب شخص ثالث دیگری وجود ندارد: نه Sentry، نه PostHog، نه Mixpanel و نه پیکسل‌های تبلیغاتی. بک‌اند هیچ تله‌متریِ شخص ثالثی ندارد و ویترین‌های کاربران نهایی تحت پوشش تحلیل نیستند.

ملاحظه: GA آی‌پی شما (در سمت Google) و آدرس‌های صفحات پنلِ بازدیدشده را دریافت می‌کند؛ URLهای پنل فقط شناسه‌ی یک کلاستر را در بر دارند، نه ایمیل.

SR-9پرداخت‌ها بیرونی هستند — ما شماره‌ی کامل کارت را دریافت نمی‌کنیم.تأییدشده+

پرداخت و همه‌ی داده‌های کارت در سمت ارائه‌دهنده‌ی متصل مدیریت می‌شوند (lava.top). ما فقط رویداد وب‌هوکِ تأییدشده دریافت می‌کنیم: اصالت آن پیش از هر تغییری در موجودی یا دسترسی، با روشی که همان ارائه‌دهنده پشتیبانی می‌کند احراز می‌شود. ما شماره‌ی کامل کارت (PAN) یا CVV را دریافت نمی‌کنیم. ارسال دوباره‌ی همان رویداد باعث اعطای دوباره نمی‌شود: رویدادها حذف‌تکراری می‌شوند.

ملاحظه: ارائه‌دهنده ممکن است فراداده‌ی کارت (برند و ۴ رقم آخر) و نام و ایمیل پرداخت‌کننده را در بدنه‌ی وب‌هوک بگنجاند. بدنه‌ی اصلی تا پایان پردازش برای کارگر لازم است؛ پس از پردازش موفق، همراه با نشانه‌ی ایمیل حذف می‌شود. رویدادهای در انتظار تلاش مجدد یا بازبینی دستی بدنه‌ی اصلی را تنها تا پایان پنجره‌ی نگهداری (90 روز بدون فعالیت) نگه می‌دارند، که پس از آن فراداده‌ی کارت و ایمیل پرداخت‌کننده به‌طور خودکار پاک می‌شوند. «شماره‌ی کامل کارت وجود ندارد» درست است، اما این ویژگیِ ارائه‌دهنده‌هاست (ما خودمان بدنه را فیلتر نمی‌کنیم)؛ «ما اصلاً چیزی درباره‌ی کارت نمی‌بینیم» درست نیست.

آنچه درباره‌ی شما (شریک) ذخیره می‌کنیم، صادقانه.یادداشت صادقانه+

برای حساب، ایمیل، زمان آخرین ورود، حالت رابط و تنظیمات نگهداری می‌شوند؛ برای صورت‌حساب — موجودی و تلگرام، اگر برای شارژ وارد شده باشد. برای حفاظت از حساب، هر نشست فعال زمان ایجاد و آخرین فعالیت، نشانی IP و user-agent را در بر دارد. تاریخچهٔ تلاش‌های موفق و ناموفق ورود، با همان مشخصه‌های فنی، ۹۰ روز نگهداری می‌شود.

تاریخچهٔ کلیِ کلیک‌ها در پنل وجود ندارد. جداگانه، لاگ‌هایی با هدف مشخص وجود دارند: درخواست‌های Partner API — حداکثر ۵۰۰ رکورد آخر و حدود ۲۵ ساعت، رویدادهای زیرساخت و نتایج عیب‌یابی — حداکثر ۷ روز، اقدام‌های هوش مصنوعی متصل — تا زمانی که حساب وجود دارد. پیش از ثبت اقدام‌های هوش مصنوعی، گذرواژه‌ها، توکن‌ها، کلیدها و پیوندهای اشتراک حذف می‌شوند و ایمیل کاربران تا حدی پنهان می‌شود.

03 · سخت‌سازی سرور

سخت‌سازی سرور

SR-10دیوار آتش همه‌چیز را جز آنچه لازم است رد می‌کند.تأییدشده+

دیوار آتش به‌طور پیش‌فرض ورودی را رد می‌کند. باز به سمت بیرون: 443 (VPN، Xray+Reality)، SSH روی یک پورت غیراستاندارد (به‌طور پیش‌فرض 12011)، و — روی سرور مستر — پورتِ پنل مدیر Marzban، فقط برای IPهای control-plane. پورت 80 جداگانه و فقط در حالت Let's Encrypt برای HTTP-01 باز می‌شود. پورت 22 پس از جابه‌جاییِ SSH بسته می‌شود.

پورت‌های مدیریتیِ نود فقط به آی‌پی سرور مستر باز هستند، نه به بیرون (شکستِ این محدودسازی نصب را متوقف می‌کند). اگر دیوار آتش فعال نشود، نصب شکست می‌خورد. ICMP echo فقط برای IPv4 محدود می‌شود؛ ما وعده نمی‌دهیم که سرور «نامرئی» است، و ICMP مربوط به IPv6 برای درست‌کارکردنِ IPv6 حفظ می‌شود.

SR-11به‌روزرسانی‌های امنیتیِ خودکار.تأییدشده+

ارتقاهای بدون‌نظارت، به‌روزرسانی‌های بسته‌های امنیتی را خودکار نصب می‌کنند. ملاحظه: راه‌اندازی مجددِ خودکار عمداً غیرفعال شده (تا یک کرنلِ تأییدنشده خودبه‌خود راه‌اندازی مجدد نشود) — یعنی اصلاحاتی که به راه‌اندازی مجدد نیاز دارند (کرنل، گاهی OpenSSH) فقط پس از یک راه‌اندازی مجددِ دستی یا زمان‌بندی‌شده اعمال می‌شوند. «وصله‌گذاریِ خودکار» برای فضای کاربر درست است، نه برای آنچه به راه‌اندازی مجدد نیاز دارد.

صادقانه درباره‌ی «نامرئی‌بودن» — ما چنین ادعایی نمی‌کنیم.یادداشت صادقانه+

ما ادعا نمی‌کنیم که سرور «نامرئی» است یا «نمی‌توان اسکنش کرد». پورت 443 باز است و مانند هر وب‌سروری به یک اتصال TCP پاسخ می‌دهد. ویژگیِ «در یک اتصال نادرست، شبیه یک وب‌سایتِ عادیِ بی‌ربط به نظر می‌رسد» را پروتکل Reality درون Xray فراهم می‌کند — یک مؤلفه‌ی جداگانه که آن را به یک حرف مطلق تبدیل نمی‌کنیم.

04 · پلتفرم (پنل کنترل)

پلتفرم (پنل کنترل)

SR-12ورود به حساب CreateYourVPN شما بدون رمز.تأییدشده+

ورود شریک با یک کد یک‌بارمصرفِ ۶ رقمی است که به ایمیل فرستاده می‌شود. حساب رمز ندارد. این شامل اعتبارنامه‌های داخلیِ مؤلفه‌های مدیریت‌شده — مانند رمز مدیرِ تولیدشده‌ی سرور — نمی‌شود. کدها با یک تولیدکننده‌ی رمزنگاری تولید می‌شوند؛ فقط هش HMAC آن‌ها ذخیره می‌شود، و مقایسه در زمان ثابت انجام می‌شود. کد در صورت موفقیت بلافاصله حذف می‌شود و پس از ۵ تلاش نادرست زودتر خاموش می‌شود. محدودیت نرخِ صدور هم بر اساس نشانی کامل و هم بر اساس صندوق پستیِ واقعی شمرده می‌شود: تغییر IP، نقطه‌ها در Gmail و برچسب‌های plus محدودیت جداگانه‌ای ایجاد نمی‌کنند.

SR-13نشست‌ها را می‌توان بررسی و بی‌درنگ باطل کرد.تأییدشده+

توکن نشست در یک کوکیِ HttpOnly و Secure قرار دارد (JS نمی‌تواند آن را بخواند)، و در بک‌اند تأیید می‌شود (نه فقط در لبه). مهلت بی‌کاری و خروج خودکار هنگام بی‌فعالیتی در کلاینت پیاده شده‌اند، نه در سرور. توکن با HS256 امضا می‌شود؛ هنگام تأیید، هر الگوریتم دیگری (از جمله «none») را به‌شکل سخت‌گیرانه رد می‌کنیم — حمله‌ی کلاسیکِ جابه‌جاییِ الگوریتم عبور نمی‌کند. توکن فروشگاه و توکن پنل شریک بر اساس مخاطب جدا می‌شوند: یک توکنِ کاربر نهایی از نظر فنی نمی‌تواند به API شریک برسد (و برعکس). یک شریکِ حذف‌شده حتی با یک توکن زنده رد می‌شود.

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

تاریخچهٔ ورود ۹۰ روز نگهداری می‌شود و ورودهای موفق، کدهای نادرست و منقضی‌شده و نیز تلاش‌های بیش از حد را نشان می‌دهد. اگر نشانه‌ای از استفادهٔ دوباره از نسخه‌ای که پیش‌تر مبادله شده است دیده شود، سیستم نشست را کپی‌شده تلقی می‌کند، همهٔ نشست‌ها و اتصال‌های هوش مصنوعی را پایان می‌دهد و برای مالک اعلان می‌فرستد.

SR-14توکن‌های نشست و رازهای داخلی در دسترس JavaScript سمت کلاینت نیستند.تأییدشده+

هیچ توکن نشستی در حافظه‌ی محلیِ مرورگر وجود ندارد، فقط تنظیمات رابط. توکن را لایه‌ی سروریِ Next.js در کوکیِ HttpOnly قرار می‌دهد؛ مرورگر نشانی داخلی بک‌اند را دریافت نمی‌کند و از طریق Server Actions به آن دسترسی پیدا می‌کند. CORS به مبداهای (origin) دیگر اجازه نمی‌دهد پاسخ‌های API حاوی داده‌های نیازمند مجوز را بخوانند.

استثناهای عمدی‌ای وجود دارد که کنترلشان در دست خودِ مالک است: اکسپورت کلید خصوصی SSH پس از کدِ ارسالی به ایمیل (SR-4) و کلید تازه‌ی Partner API که راز کامل آن فقط یک بار هنگام ایجاد در مرورگر نمایش داده می‌شود. پس از آن بازیابی‌اش از پایگاه‌داده ممکن نیست — آنجا فقط هش باقی می‌ماند. دامنه‌ی عمومی API بنا به کارکردش از اینترنت در دسترس است، اما بدون نشست معتبر، کلید API یا توکن OAuth هیچ داده‌ی محافظت‌شده‌ای را برنمی‌گرداند.

SR-15دامنه‌های عمومی پلتفرم از HTTPS با هدرهای امنیتی سختگیرانه استفاده می‌کنند.تأییدشده+

میزبان‌های عمومی CreateYourVPN از طریق HTTPS و همراه با HSTS (با max-age دو سال و includeSubDomains) ارائه می‌شوند. هر رابط وبی که میزبانی می‌کنیم — سایت پلتفرم، پنل شرکا و ویترین‌های شرکا، چه روی زیردامنه‌های ما و چه روی دامنهٔ اختصاصی شریک — و نیز دامنهٔ API، همگی مجموعهٔ یکسانی از سرایندهای امنیتی را ارسال می‌کنند: Content-Security-Policy (روی API برابر default-src 'none'؛ روی رابط‌های وب، جاسازی در iframe را ممنوع می‌کند و base-uri و form-action را تثبیت می‌کند)، X-Content-Type-Options: nosniff، X-Frame-Options و یک Referrer-Policy سخت‌گیرانه (روی API برابر no-referrer؛ روی رابط‌های وب برابر strict-origin-when-cross-origin که Permissions-Policy محدودکننده نیز ارسال می‌کنند).

این موارد روی همهٔ آن میزبان‌ها در محیط عملیاتی فعال است و به‌صورت مستقل قابل بررسی است — با هر ابزار بازرسی سرایند HTTP یا سرویسی مانند SSL Labs.

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

برنامهٔ هوش مصنوعی از طریق OAuth متصل می‌شود و کوکی پنل شما را دریافت نمی‌کند. در صفحهٔ رضایت، یکی از سه سطح را انتخاب می‌کنید: فقط مشاهده؛ مشاهده و پیکربندی؛ حذف و اعطای دسترسی. سرور دسترسی‌ها را در هر فراخوانی بررسی می‌کند. حذف‌های حساس به یک کد یک‌بارمصرفِ اضافی از ایمیل نیاز دارند، و کل اتصال را می‌توان در بخش «هوش مصنوعی متصل» باطل کرد.

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

صادقانه درباره‌ی ریسک‌ها (آنچه وعده نمی‌دهیم)

صادقانه درباره‌ی ریسک‌ها (آنچه وعده نمی‌دهیم)

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

01ذخیره‌سازی متمرکز کلیدها — تحت حفاظت چندلایه.

پنل کنترل، کلیدهای دسترسیِ رمزگذاری‌شده به کل ناوگان سرورها را نگهداری می‌کند. این، طبیعتاً، حساس‌ترین بخش سامانه است — و ما آن را متناسب با همین حساسیت حفاظت می‌کنیم.

چه چیزی از آن محافظت می‌کند: اسرار سنگین تنها به‌صورت متن رمزشده در پایگاه داده قرار دارند؛ کلید رمزگذاری (KEK) جدا از پایگاه داده نگهداری می‌شود؛ کلیدهای مدیریت در پاسخ‌های معمولی به مرورگر قرار نمی‌گیرند و هنگام حذف یک سرور صفر می‌شوند. توکن‌های اشتراک یک لایهٔ اضافی دارند — جست‌وجوی هش (hash lookup) به‌همراه AES-GCM — به‌طوری‌که حتی یک نسخهٔ dump از پایگاه داده بدون KEK هیچ لینک /sub کارآمدی ندارد.

سقف صادقانه: رمزگذاری به‌طور مطمئن در برابر سرقت خودِ پایگاه داده محافظت می‌کند — یک نسخهٔ پشتیبان، یک replica یا یک dump. اما خطر به‌خطرافتادنِ کاملِ میزبانِ (host) اپلیکیشن را از میان نمی‌برد، جایی که فرآیند هم به KEK و هم به پایگاه داده دسترسی دارد. در حال حاضر از KMS/HSM اختصاصی استفاده نمی‌شود؛ به همین دلیل کانون اصلی حفاظت، جداسازی میزبان، به‌روزرسانی‌های خودکار و کمترین سطح عمومیِ ممکن است.

02نخستین اتصال SSH بر اعتماد در نخستین تماس تکیه دارد.

هنگام نخستین افزودن یک VPS، پلتفرم هنوز SSH host key آن را نمی‌شناسد و اثرانگشت آن را از طریق یک کانال مستقل و مورد اعتماد دریافت نمی‌کند. به همین دلیل نخستین اتصال با گذرواژهٔ root واردشده از مدل trust on first use استفاده می‌کند: مهاجمی فعال روی مسیر شبکه در همان لحظه از نظر تئوری می‌تواند خود را به‌جای سرور جا بزند. ما این خطر را صفر نمی‌نامیم.

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

این محدودیت را تنها با بررسی مستقلِ نخستین اثرانگشت می‌توان به‌طور کامل برطرف کرد، مثلاً از طریق API ارائه‌دهندهٔ VPS یا با تأیید مالک. چنین بررسی‌ای در حال حاضر وجود ندارد، بنابراین این مورد همچنان یک خطر باز است.

03دسترسی فیزیکی به سرور در اختیار ارائه‌دهندهٔ VPS شماست.

این ویژگیِ هر سرور اجاره‌ای است، نه فقط سرور ما: اسنپ‌شات‌ها، حالت rescue و مانند آن‌ها در دسترس ارائه‌دهنده هستند و هیچ نرم‌افزاری از آن محافظت نمی‌کند. در مقابل، انتخاب یک ارائه‌دهندهٔ قابل‌اعتماد در دست شماست و سرور کاملاً از آنِ شماست — می‌توانید در هر زمان میزبان را عوض کنید یا ماشین را حذف نمایید.

04آسیب‌پذیری‌های ناشناخته (0-day) همیشه وجود دارند.

هیچ‌کس حفاظت مطلق را وعده نمی‌دهد — آسیب‌پذیری‌های جدید در همهٔ نرم‌افزارها پدیدار می‌شوند. کاری که ما می‌کنیم: به‌روزرسانی‌های امنیتی به‌طور خودکار نصب می‌شوند، و اصلاحاتی که به راه‌اندازی مجدد نیاز دارند (کرنل و گاهی OpenSSH) پس از راه‌اندازی مجدد اعمال می‌شوند — دستی باشد یا زمان‌بندی‌شده (به SR-11 نگاه کنید).

05ایمیل: نشانی شما را نگه می‌داریم، نشانی کاربران شما را نه.

نشانی شما برای ورود لازم است و تا زمانی که حساب وجود دارد نگهداری می‌شود. نشانی کاربران نهایی به‌عنوان دادهٔ پروفایل نگهداری نمی‌شود؛ استثنا نشانی پرداخت‌کننده درون رویداد پرداختیِ پردازش‌نشده یا در انتظار بررسی است که در SR-6 و SR-9 شرح داده شده است. در لاگ‌های اقدام‌های هوش مصنوعی، ایمیل کاربران تنها به‌شکل تا حدی پنهان‌شده ذخیره می‌شود.

06ورود با کدِ ایمیلی انجام می‌شود — هنوز 2FA جداگانه‌ای وجود ندارد.

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

07لاگ‌های سرویسیِ مختلف مدت نگهداری متفاوتی دارند.

ایمیل کاربر نهایی پس از ارسال پیام از صف حذف می‌شود، و بدنهٔ خام یک رویداد پرداختِ موفق پس از پردازش پاک می‌گردد. لاگ Partner API به ۵۰۰ سطر آخر و مدتی حدود ۲۵ ساعت محدود است؛ رویدادهای زیرساخت و نتایج عیب‌یابی حداکثر ۷ روز نگهداری می‌شوند.

تاریخچهٔ ورود به حساب شریک ۹۰ روز نگهداری می‌شود. همین سقف زمانیِ بدون فعالیت برای بدنهٔ رویداد پرداختی که در انتظار تلاش مجدد یا بررسی دستی است اعمال می‌شود و پس از آن داده‌های شخصی صفر می‌شوند.

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

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

08پشتیبان‌گیری کاربران داده‌ها را به بیرون از سرور شما منتقل می‌کند.

اگر خروجی پشتیبان به Google Drive یا S3 را فعال کنید، داده‌های کاربران سرور شما را ترک می‌کنند و حفاظت از آن‌ها دیگر به ابر شما بستگی دارد — این گزارش آن را جداگانه پوشش نمی‌دهد. این انتخاب آگاهانهٔ شماست: این قابلیت را خودتان فعال می‌کنید.

حرف ما را نپذیرید

چگونه این را بررسی کنید.

هر ادعای بالا یک شرط‌بندیِ عمومی است. از شما دعوت می‌کنیم پیدا کنید کجا اشتباه کردیم یا آب‌وتاب دادیم:

مسیر A

مسیر A — آسیب‌پذیری‌های کلاسیک (RCE، دور زدنِ مجوز، IDOR، نشت‌ها و مانند آن).

مسیر B

مسیر B — رد کردنِ این گزارش: ثابت کنید که هر SR-N نادرست است، پاداش بگیرید، و ما اصلاحیه را به‌صورت عمومی منتشر می‌کنیم.

چیزی پیدا کردید؟

با یک اثبات مفهومِ قابل‌بازتولید برای ما بنویسید. ظرف ۷۲ ساعت پاسخ می‌دهیم و دسته‌بندی را به‌صورت داخلی انجام می‌دهیم.

security@createyourvpn.com۹۰ روز سکوت · بندر امنپاداش به موجودی حساب CreateYourVPN شما اضافه می‌شود؛ این تنها روش پرداخت ماست.