Klaim yang dapat diverifikasi.
Ini bukan halaman pemasaran yang berkata 'kami aman', melainkan sekumpulan klaim yang dapat diverifikasi (SR-N), yang masing-masing dapat Anda bantah dalam program bug bounty kami demi sebuah imbalan.
Akses ke server Anda
SR-1Kata sandi root digunakan satu kali dan tidak disimpan di sisi kami.terverifikasi+
Kata sandi hanya diperlukan untuk membuka koneksi SSH pertama dan memasang pengguna layanan. Kata sandi itu diteruskan sebagai autentikasi SSH untuk koneksi kami — bukan sebagai argumen skrip atau variabel lingkungan. Basis data kami tidak memiliki bidang untuknya; kata sandi itu tidak masuk ke lingkungan eksekusi skrip dan tidak ditulis ke log (galat koneksi hanya berisi alamat dan port, tidak pernah kata sandi). Di memori, kata sandi dihapus (sebisa mungkin) setelah dipakai — itu pertahanan berlapis, bukan jaminan: Go bisa saja menyimpan salinan nilai tersebut di heap sampai pengumpulan sampah (garbage collection).
Catatan jujur: ini tetaplah kata sandi root di server Anda. Setelah pemasangan, kami menonaktifkan login kata sandi dan root melalui SSH, tetapi kami tidak mengubah kata sandinya sendiri — ubahlah sendiri jika Anda mau. 'Kami tidak menyimpannya' itu benar; 'kata sandi itu berhenti menjadi rahasia' tidak.
SR-2Setelah pemasangan, login kata sandi dan root SSH dinonaktifkan.terverifikasi+
PasswordAuthentication no, PermitRootLogin no, SSH dipindahkan ke port non-standar (12011 secara bawaan), fail2ban diaktifkan (pemblokiran satu jam setelah 5 kali gagal), login hanya dengan kunci. Kunci publik divalidasi secara ketat sebelum digunakan: baris baru (perlindungan agar tidak ada kunci tambahan diselipkan ke authorized_keys) dan kunci yang tidak valid secara sintaksis ditolak.
Anti-terkunci: port 22 tidak ditutup sampai kernel memastikan (melalui ss) bahwa port SSH baru benar-benar mendengarkan; konfigurasi diperiksa dengan sshd -t dan aturan sudo dengan visudo -cf, keduanya dikembalikan jika terjadi galat.
SR-3Kunci pengelolaan hanya disimpan dalam bentuk terenkripsi.terverifikasi+
Panel bekerja bukan dengan kata sandi Anda, melainkan dengan kunci terpisah (ed25519) yang dibuatnya sendiri. Bagian privatnya berada di basis data, terenkripsi dengan AES-256-GCM. Kunci enkripsi (KEK) disimpan terpisah dari basis data — dalam variabel lingkungan server — dan di produksi bersifat wajib (tidak ada bawaan yang tidak aman: tanpa KEK, subsistem kripto tidak akan mulai). Enkripsi yang sama melindungi rahasia-rahasia berat di basis data — kata sandi/token/JWT admin Marzban, kunci Reality, kunci penyedia pembayaran, cache kredensial proxy, konfigurasi backup.
Enkripsi tidak hanya menyembunyikan, tetapi juga mengautentikasi data (tag autentikasi GCM): perusakan pada bidang terenkripsi terdeteksi saat dekripsi dan ditolak. Setiap bidang dienkripsi dengan nonce acak yang baru; nilai KEK tidak pernah sampai ke log — hanya id pendeknya.
Tentang token kapabilitas: token langganan /sub adalah rahasia pemegang (bearer). Untuk pencarian, kami hanya menyimpan SHA-256-nya, sedangkan salinan yang dibutuhkan untuk menampilkan ulang tautan yang sudah diterbitkan disimpan sebagai ciphertext AES-GCM. Catatan teks-biasa yang lebih lama dimigrasikan ke format baru, secara fail-closed, sebelum server HTTP dimulai. Pengidentifikasi URL webhook pembayaran disimpan secara terbuka, tetapi dengan sendirinya tidak mengautentikasi sebuah peristiwa: keasliannya diverifikasi terpisah oleh tanda tangan HMAC.
SR-4Kunci privat tidak pernah sampai ke browser.terverifikasi+
Kunci hanya didekripsi di server, dalam memori; API biasa tidak pernah mengembalikannya. Satu-satunya cara memperolehnya adalah fungsi ekspor yang disengaja ('ambil kunci Anda'), yang dilindungi oleh proses masuk plus kode email sekali pakai (kode hanya disimpan sebagai hash HMAC, dibandingkan dalam waktu konstan, TTL 10 menit, 5 percobaan). Jadi kunci dapat diambil dengan sengaja, tetapi tidak 'bocor' melalui permintaan biasa.
SR-5Ketika sebuah server dihapus, kuncinya dibersihkan secara sinkron dari catatannya.terverifikasi+
Sebelum status server berubah dan sebelum operasi jaringan latar belakang apa pun, bidang-bidang yang menyimpan kunci pengelolaan dinolkan secara sinkron. Jika basis data tidak mengonfirmasi pembersihan itu, operasi mengembalikan galat dan dapat dicoba lagi. Penghapusan tetap 'lunak' (soft): baris dan data layanan yang bukan rahasia dipertahankan. Ini tidak berarti penghapusan fisik atas backup yang sudah dibuat — siklus hidupnya diatur oleh kebijakan retensi backup.
SR-16API mitra yang diaudit membatasi akses pada pemilik sumber daya.terverifikasi+
Rute mitra yang diaudit mengotorisasi berdasarkan partner_id, yang diturunkan server dari token login bertanda tangan — bukan dari apa yang dikirim klien di path atau body. Sebelum mengembalikan atau mengubah apa pun, sistem memeriksa ulang bahwa server, klaster, inbound, rute, pengguna VPN, atau pembayaran yang diminta adalah milik akun Anda; kueri basis data yang bersangkutan dibatasi oleh partner_id Anda, dan skemanya (kunci unik komposit plus kunci asing komposit) menolak tautan lintas-mitra yang tidak valid. Isolasi berlapis: aplikasi, pemeriksaan ulang usecase, filter partner_id, dan skema.
Catatan jujur: ini diverifikasi oleh audit kode di sepanjang jalur permintaan, bukan oleh uji penetrasi publik — jadi SR-16, seperti yang lainnya, terbuka untuk dibantah dalam bug bounty.
Secara jujur tentang akses panel — ini admin penuh, bukan 'terbatas'.catatan jujur+
Untuk mengonfigurasi semuanya secara otomatis (memasang Xray+Reality, menerapkan konfigurasi, membaca metrik), panel memegang akses administratif penuh di server (setara root, melalui pengguna layanan dengan sudo tanpa kata sandi). Ini diperlukan untuk pengelolaan, dan kami TIDAK menyebutnya 'terbatas'.
Yang mengurangi risiko: rahasia diteruskan ke server hanya melalui stdin proses (bukan sebagai argumen perintah — tidak terlihat di daftar proses); setelah pemasangan awal, setiap koneksi pengelolaan memverifikasi host key server yang telah dipatok (pinned) — pergantian server 'di tengah' ditolak. Yang Anda kendalikan: akses bertumpu pada kunci yang dapat Anda cabut kapan saja — dengan menghapus server (kunci dinolkan) atau cukup menghapus VPS di penyedia Anda (lalu semuanya lenyap).
Data dan privasi Anda
SR-6Pengguna VPN berada di server Anda; kami memegang metadata layanan seminimal mungkin.terverifikasi+
Akun VPN itu sendiri (VLESS/Reality) dibuat dan berada di dalam Marzban pada server master Anda. Secara terpusat, kami hanya menyimpan apa yang diperlukan untuk menerbitkan tautan langganan: token langganan acak dan snapshot terenkripsi dari kredensial proxy (sebuah cache; sumber kebenarannya adalah Marzban Anda). Kami tidak memiliki riwayat lalu lintas, IP, atau kunjungan pengguna.
Berikut daftar jujur tentang di mana saja email pengguna akhir memang melewati basis data pusat kami: email berisi kode masuk dikirim oleh kami, sehingga alamatnya melewati antrean pengiriman kami (untuk setiap masuk ke etalase, termasuk yang gratis); saat pembayaran, email pembeli tiba di webhook pembayaran dan masuk ke log pembayaran; saat menautkan Telegram, email disimpan ke profil. Inilah satu-satunya titik sentuh — bersifat fungsional dan karena keharusan; tidak satu pun di antaranya menyangkut lalu lintas atau perilaku pengguna.
Data layanan ini hanya kami simpan selama diperlukan dan kami bersihkan secara otomatis: email dihapus dari antrean pengiriman tepat setelah dikirim, isi peristiwa pembayaran setelah diproses, dan peristiwa yang menunggu percobaan ulang dalam jendela 90 hari. Anda dapat menghapus akun Anda beserta data yang terkait dengannya dengan menghubungi dukungan (lihat risiko 7 untuk detail). Kami mengungkapkan ini secara terbuka alih-alih menyembunyikannya di balik kata-kata yang samar.
SR-7Kami tidak mengumpulkan log lalu lintas atau kunjungan Anda, dan server tidak menyimpan jurnal kunjungan.terverifikasi+
Platform CreateYourVPN tidak menerima atau menyimpan informasi tentang situs mana yang Anda atau pengguna Anda kunjungi. Skema penerimaan metrik bersifat tertutup: secara fisik ia tidak memiliki bidang untuk IP, domain, atau kunjungan — hanya agregat (jumlah unik yang daring, total byte, CPU/RAM/beban). Setiap node mengautentikasi dengan token HMAC yang terikat pada id-nya sendiri dan hanya dapat menulis metrik untuk dirinya sendiri. Penyeimbang di node (HAProxy) bekerja sebagai router TCP berdasarkan SNI dan tidak mendekripsi lalu lintas. Di server itu sendiri, jurnal sistem (journald) disimpan tidak lebih dari sekitar satu jam dan tidak diteruskan ke syslog.
Selain di tingkat platform, server juga tidak menyimpan jurnal kunjungan: pencatatan akses Xray dipaksa nonaktif pada setiap pengiriman konfigurasi (platform menyetel log.access ke none), sehingga proxy tepi tidak merekam alamat mana yang dihubungi pengguna. Ini diberlakukan di kode dan digulirkan ke seluruh armada.
SR-8Analitik web adalah Google Analytics; tidak ada pelacak lain.terverifikasi+
Untuk memahami bagaimana situs dan panel digunakan, kami menerapkan Google Analytics (spanduk cookie memperingatkan tentang pengumpulan cookie dan statistik; detailnya ada di Kebijakan Privasi). Tidak ada pelacak pihak ketiga lain: tidak ada Sentry, PostHog, Mixpanel, atau piksel iklan (diverifikasi dengan menelusuri kedua frontend). Backend sama sekali tidak memiliki telemetri pihak ketiga. Etalase pengguna akhir sama sekali tidak tercakup oleh analitik — tidak ada GA, tidak ada pelacak (dapat diverifikasi dari sumbernya).
Catatan: GA menerima IP Anda (di sisi Google) dan alamat halaman panel yang dilihat; URL panel hanya berisi pengidentifikasi klaster, bukan email.
SR-9Pembayaran bersifat eksternal — kami tidak menerima nomor kartu lengkap.terverifikasi+
Pembayaran dan seluruh data kartu ditangani di sisi penyedia (Tribute / Lemon Squeezy). Kami hanya menerima webhook bertanda tangan (HMAC-SHA256, perbandingan waktu konstan, diverifikasi sebelum body diurai dan sebelum penulisan basis data apa pun: tanpa mengetahui rahasianya, sebuah peristiwa gagal verifikasi). Kami tidak menerima nomor kartu lengkap (PAN) atau CVV. Pengiriman ulang webhook yang sama (percobaan ulang penyedia) tidak menyebabkan pemberian ganda — peristiwa didedupikasi.
Catatan: penyedia dapat menyertakan metadata kartu (merek dan 4 digit terakhir) serta nama dan email pembayar di body webhook. Body asli dibutuhkan worker sampai pemrosesan selesai; setelah berhasil diproses, body itu dihapus bersama petunjuk email. Peristiwa yang menunggu percobaan ulang atau tinjauan manual hanya menyimpan body asli sampai akhir jendela retensi (90 hari tanpa aktivitas), setelah itu metadata kartu dan email pembayar dihapus otomatis. 'Tidak ada nomor kartu lengkap' itu benar, tetapi itu adalah properti para penyedia (kami sendiri tidak menyaring body); 'kami tidak melihat apa pun tentang kartu sama sekali' tidak.
Apa yang kami simpan tentang Anda (mitra), secara jujur.catatan jujur+
Email (diperlukan untuk masuk), waktu masuk terakhir, mode antarmuka; untuk penagihan — saldo dan Telegram (untuk isi ulang). IP mitra tidak disimpan di basis data, dan kami tidak menyimpan riwayat klik atau tindakan di panel (selain log akses singkat saat terjadi galat).
Pengerasan server
SR-10Firewall menolak semuanya kecuali yang diperlukan.terverifikasi+
Firewall menolak koneksi masuk secara bawaan. Yang terbuka ke luar: 443 (VPN, Xray+Reality), SSH pada port non-standar (12011 secara bawaan), dan — pada server master — port panel admin Marzban, hanya untuk IP control-plane. Port 80 dibuka secara terpisah hanya dalam mode Let's Encrypt untuk HTTP-01. Port 22 ditutup setelah SSH dipindahkan.
Port pengelolaan node hanya terbuka untuk IP server master, bukan ke luar (kegagalan pengikatan ini membatalkan pemasangan). Jika firewall tidak menjadi aktif, pemasangan gagal. ICMP echo dibatasi hanya untuk IPv4; kami tidak menjanjikan server 'tidak terlihat', dan ICMP IPv6 dipertahankan agar IPv6 bekerja dengan benar.
SR-11Pembaruan keamanan otomatis.terverifikasi+
Unattended upgrades memasang pembaruan paket keamanan secara otomatis. Catatan: reboot otomatis sengaja dinonaktifkan (agar kernel yang belum diverifikasi tidak melakukan reboot sendiri) — yang berarti perbaikan yang memerlukan reboot (kernel, terkadang OpenSSH) baru diterapkan setelah reboot manual atau terjadwal. 'Penambalan otomatis' benar untuk userland, bukan untuk yang memerlukan reboot.
Secara jujur tentang 'ketidakterlihatan' — kami tidak mengklaimnya.catatan jujur+
Kami TIDAK mengklaim server 'tidak terlihat' atau 'tidak bisa dipindai'. Port 443 terbuka dan menjawab koneksi TCP seperti server web mana pun. Properti 'pada koneksi yang tidak benar ia tampak seperti situs web biasa yang tidak berkaitan' disediakan oleh protokol Reality di dalam Xray — komponen terpisah yang tidak kami jadikan pernyataan mutlak.
Platform (panel kontrol)
SR-12Masuk ke akun CreateYourVPN Anda tanpa kata sandi.terverifikasi+
Proses masuk mitra menggunakan kode 6 digit sekali pakai yang dikirim ke email. Tidak ada kata sandi akun. Ini tidak berlaku untuk kredensial internal komponen yang dikelola, seperti kata sandi admin Marzban yang dihasilkan. Kode dihasilkan oleh generator kriptografis; hanya hash HMAC-nya yang disimpan, dan perbandingannya dilakukan dalam waktu konstan. Kode bersifat sekali pakai: saat berhasil, ia langsung dihapus (tanpa replay); setelah 5 percobaan salah, ia dipadamkan lebih awal. Batas laju penerbitan dihitung per email, bukan per IP — tidak bisa dilewati dengan berganti alamat.
SR-13Sesi terlindungi.terverifikasi+
Token sesi berada di cookie HttpOnly dan Secure (JS tidak bisa membacanya), diverifikasi di backend (bukan hanya di edge). Batas waktu diam dan keluar-otomatis saat tidak aktif diterapkan di klien, bukan di server. Token ditandatangani dengan HS256; saat verifikasi, kami secara ketat menolak algoritma lain apa pun (termasuk 'none') — serangan pertukaran algoritma klasik tidak lolos. Token etalase dan token panel mitra dipisahkan berdasarkan audience: token pengguna akhir secara teknis tidak bisa menjangkau API mitra (dan sebaliknya). Mitra yang telah dihapus ditolak bahkan dengan token yang masih aktif.
Catatan: pencabutan diterapkan dengan memeriksa bahwa mitra masih ada pada setiap permintaan, bukan dengan membatalkan token itu sendiri; keluar akan menghapus cookie, tetapi token yang sudah diterbitkan tetap valid secara kriptografis sampai kedaluwarsa (hingga satu jam). Belum ada daftar pencabutan terpusat (penyederhanaan MVP yang disengaja).
SR-14Token dan rahasia tidak bocor ke browser.terverifikasi+
Tidak ada token di penyimpanan lokal browser (hanya pengaturan UI); tidak ada rahasia atau alamat API yang masuk ke bundel klien. Hanya server (Next.js) yang menempatkan token di cookie HttpOnly. Browser berbicara dengan inti hanya melalui server (Server Actions): frontend tidak memanggil API langsung dari browser, dan CORS tidak mengizinkan browser membaca respons API dari origin lain.
Klarifikasi alih-alih pernyataan mutlak yang lama: domain API itu sendiri adalah host publik — secara teknis Anda bisa membukanya dari browser, tetapi tanpa sesi ia tidak mengembalikan data terotorisasi apa pun.
SR-15Domain publik platform menggunakan HTTPS dengan header keamanan yang ketat.terverifikasi+
Domain publik CreateYourVPN disajikan melalui HTTPS dengan HSTS (max-age dua tahun, includeSubDomains). Baik frontend web maupun domain API mengirim seperangkat header keamanan yang ketat: Content-Security-Policy yang restriktif, X-Content-Type-Options: nosniff, X-Frame-Options, dan Referrer-Policy yang terkunci (no-referrer pada API; strict-origin-when-cross-origin pada frontend, yang juga mengirim Permissions-Policy yang restriktif).
Ini aktif di produksi pada kedua domain dan dapat diperiksa secara independen — dengan inspektur header HTTP apa pun atau layanan seperti SSL Labs.
Secara jujur tentang risiko (apa yang TIDAK kami janjikan)
Sebuah laporan tanpa bagian ini adalah pemasaran. Berikut batasan-batasan yang sebenarnya:
Panel kontrol menyimpan kunci akses terenkripsi ke seluruh armada server. Ini, secara alami, merupakan komponen sistem yang paling sensitif — dan kami melindunginya sesuai dengan itu.
Yang melindunginya: rahasia berat berada di basis data hanya sebagai teks tersandi; kunci enkripsi (KEK) disimpan terpisah dari basis data; kunci tidak pernah sampai ke peramban; dan dinolkan saat sebuah server dihapus. Token langganan memiliki lapisan tambahan — pencarian hash (hash lookup) plus AES-GCM — sehingga bahkan dump basis data tanpa KEK pun tidak memuat tautan /sub yang berfungsi.
Batas yang jujur: enkripsi melindungi secara andal dari pencurian basis data itu sendiri — cadangan, replika, atau dump. Ia tidak menghilangkan risiko kompromi penuh atas host panel itu sendiri, tempat KEK dan basis data tersedia bagi satu proses tunggal. Itulah sebabnya fokus utama pertahanan kami adalah mencegah justru pengambilalihan host: isolasi, pembaruan keamanan otomatis, dan permukaan terekspos yang minimal.
KMS/HSM khusus akan hadir dalam salah satu rilis keamanan mendatang.
Saat Anda menambahkan server, kami terhubung ke sana tepat satu kali — menggunakan kata sandi sementara yang Anda masukkan. Justru pada koneksi pertama inilah serangan Man-in-the-Middle (MITM) secara teori dimungkinkan. Kami menetralkannya melalui beberapa langkah independen, sehingga risiko praktisnya ditekan hingga nol.
Kata sandi bersifat sekali pakai: ia melayani tepat satu koneksi, tidak disimpan di mana pun di sisi kami, dan tidak pernah digunakan kembali. Kunci privat tidak pernah dikirim melalui jaringan — autentikasi berikutnya bertumpu pada pasangan kunci (autentikasi kunci publik, pubkey), bukan pada kata sandi.
Segera setelah penyiapan, autentikasi kata sandi dan login root dinonaktifkan pada server, port SSH diubah, dan akses dialihkan sepenuhnya ke kunci. Sejak saat itu, bahkan kata sandi yang tersadap pun tidak membuka apa-apa.
Setiap koneksi pengelolaan berikutnya memverifikasi sidik jari server yang telah dipatok (host-key pinning) — server yang disubstitusikan «di tengah» akan ditolak.
Alhasil, penyadapan hanya mungkin dilakukan oleh penyerang yang secara fisik berada di jalur jaringan antara kami dan server selama beberapa detik pemasangan awal itu — dan bahkan dalam kasus ekstrem tersebut, data yang tersadap langsung menjadi tidak berguna.
Ini adalah sifat dari server sewaan mana pun, bukan hanya milik kami: snapshot, mode rescue, dan sejenisnya tersedia bagi penyedia, dan tidak ada perangkat lunak yang melindungi dari itu. Sebaliknya, memilih penyedia yang tepercaya ada di tangan Anda, dan server sepenuhnya milik Anda — Anda dapat berganti penyedia atau menghapus mesin kapan saja.
Tidak ada yang bisa menjanjikan perlindungan mutlak — kerentanan baru muncul di semua perangkat lunak. Yang kami lakukan: pembaruan keamanan dipasang secara otomatis, dan perbaikan yang memerlukan boot ulang (kernel, terkadang OpenSSH) berlaku setelah boot ulang — baik manual maupun terjadwal (lihat SR-11).
Email Anda untuk masuk, dan email pengguna akhir dalam beberapa kasus layanan (lihat SR-6). Disimpan hanya selama diperlukan dan dibersihkan secara otomatis (lihat risiko 9).
Karena proses masuk mengandalkan kode sekali pakai melalui email, kotak surat Anda pada dasarnya adalah kunci ke akun — layak dilindungi dengan baik. Faktor kedua belum ada: wajar untuk tahap ini, tetapi baik untuk diketahui.
Kami menyimpan data pribadi hanya selama sebuah operasi membutuhkannya, lalu membersihkannya secara otomatis. Email dihapus dari antrean segera setelah pesan terkirim, dan isi mentah dari sebuah peristiwa pembayaran yang berhasil segera setelah diproses.
Hanya satu hal yang bertahan lebih lama: peristiwa pembayaran yang menunggu percobaan ulang atau peninjauan manual. Isi aslinya disimpan bukan tanpa batas waktu, melainkan hingga akhir jendela 90 hari tanpa aktivitas, setelah itu data pribadi dihapus secara otomatis.
Kontrol swalayan «hapus data saya» di antarmuka belum ada — fitur itu sudah direncanakan. Sementara itu, Anda dapat menghapus akun Anda, beserta data yang terkait, dengan menghubungi dukungan.
Tautan /sub adalah token pemegang (bearer) permanen sampai pencabutan manual atau penghapusan pengguna; tidak ada kedaluwarsa-otomatis atau rotasi (tautan yang bocor tetap hidup).
Jika Anda mengaktifkan ekspor cadangan ke Google Drive atau S3, data pengguna meninggalkan server Anda, dan perlindungannya kemudian bergantung pada cloud Anda — laporan ini tidak membahasnya secara terpisah. Ini pilihan Anda yang disengaja: fitur ini Anda aktifkan sendiri.
Cara memeriksanya.
Setiap klaim di atas adalah taruhan publik. Kami mengundang Anda menemukan di mana kami keliru atau melebih-lebihkan:
Jalur A — kerentanan klasik (RCE, pelewatan otorisasi, IDOR, kebocoran, dan sebagainya).
Jalur B — membantah laporan ini: buktikan bahwa SR-N mana pun salah, dapatkan imbalan, dan kami mempublikasikan koreksinya secara terbuka.
Menemukan sesuatu?
Tulislah kepada kami dengan bukti konsep yang dapat direproduksi. Kami membalas dalam 72 jam dan menangani triase secara internal.