Langkau ke kandungan
Keselamatan

Apa yang melindungi seorang penyewa, dinyatakan terus terang.

Tiada persijilan yang kami tidak pegang, tiada kata sifat yang menggantikan kawalan. Inilah yang dikuatkuasakan, di mana ia dikuatkuasakan, dan apa yang masih tiada.

Enam belas ruang kerja, dan tiada apa-apa antaranyaKekisi empat kali empat sel ruang kerja, setiap satu memegang pengendali, kunci, versi konfigurasi dan log audit. Ruang antara sel dilukis sebagai garis pejal, dan tiada laluan melintasinya di mana-mana dalam lukisan ini. Satu sel dibuka pada tiga kali ganda saiz: repositori yang terhad kepada ruang kerja itu, satu kunci API dan satu rahsia webhook yang masing-masing membawa key id, serta log audit tambah-sahaja yang dikuatkuasakan oleh pencetus pangkalan data.Ruang kerjaPengasingan bersifat struktur01020304050607080910111213141516Satu ruang kerjaworkspace_idsetiap pertanyaan di lapisan data memerlukannyaapi_key(kid)diputar dalam tetingkap bertindihwebhook_secret(kid)diputar dengan cara yang samaaudit_logtambah sahaja — dikuatkuasakan oleh pencetus pangkalan dataTiada laluan melintasi celah — ketiadaannya itulah maksudnyaSetiap pertanyaan di lapisan data mengambil satu ruang kerja. Tiada tempat panggilan yang boleh meninggalkannya.
Enam belas ruang kerja. Tiada garisan dilukis antara mana-mana dua petak, kerana tiada apa yang boleh ditulis antara keduanya.
Berbilang penyewa

Pengasingan bersifat struktur, bukan hasil pengawasan.

Setiap pertanyaan atas data milik sesebuah ruang kerja membawa id ruang kerja itu dalam syaratnya. Tiada laluan capaian tanpa skop yang boleh terlupa digunakan.

Kegagalan yang dihapuskan reka bentuk ini ialah yang paling biasa: sebuah sistem yang betul, dengan satu endpoint baharu yang ditulis tergesa-gesa lalu tertinggal klausa WHERE. Jika lapisan data enggan menjawab soalan yang tidak menamakan ruang kerja, endpoint itu tidak terkompil menjadi satu kebocoran — ia langsung tidak terkompil.

Ujian kebocoran bergaya penyerang memaku sifat ini dan bukannya mempercayai kebiasaan, kerana sesuatu kebiasaan hanya sebaik orang terakhir yang membaca fail itu.

internal/tenancy · migrations/0002

Rekod

Sifat hanya-boleh-tambah log audit ada dalam pangkalan data, bukan dalam aplikasi.

Satu pencetus membangkitkan ralat pada setiap kemas kini atau padaman. Aplikasi yang memutuskan untuk tidak menulis semula sejarah ialah satu dasar; pangkalan data yang enggan menulis semula ialah satu kawalan.

Inilah perbezaan yang ditanya juruaudit dan lazimnya tidak dapat dijawab vendor. Jika satu-satunya yang menghalang suntingan ke belakang ialah “tiada laluan kod yang melakukannya”, maka satu skrip sokongan, satu migrasi, atau seorang pengendali dengan konsol boleh melakukannya, dan log tidak akan tahu.

internal/tenancy · migrations/0002 audit_log_immutable()

Kelayakan

Kunci ditukar tanpa gangguan. Log masuk tahan pancingan data.

Penukaran kunci yang memerlukan tetingkap penyelenggaraan ialah penukaran yang tidak pernah berlaku.

Dua isipadu, dan satah antaranyaDua isipadu isometrik berdiri di atas dua petak tanah bergaris yang berasingan, dengan satu satah menegak di antaranya yang dilihat dari birai. Isipadu kiri milik pengendali, terbahagi kepada empat petak: Stripe, NOWPayments, bank dan dompet. Isipadu kanan milik platform, terbahagi kepada lejar, larian, tuntutan dan peti keluar. Empat garis melintasi satah di antaranya, dilabel pada satah itu sendiri: peristiwa, suruhan, resit dan arahan. Tiada garis membawa wang, dan isipadu kanan tidak mempunyai petak yang boleh memegang baki.Dua isipadu · satu satah · tiada pintuSTRIPELejarNOWPAYMENTSLarianBankTuntutanDompetPeti keluarPengendaliXEXSempadan kustodiPeristiwaArahanResitPerintahTiada isipadu melintasWang berada dalam petak pengendali dan tidak pernah disalin ke petak kami.Empat perkara melintasi satah ini. Tiada satu pun ialah baki, dan tiada satu pun ialah kunci.
Dua isipadu, satu satah di antaranya. Tiada pintu padanya.
  1. 01

    Id kunci dengan tempoh sah bertindih

    Kunci API dan kunci tandatangan webhook setiap ruang kerja membawa satu id kunci. Semasa penukaran, kedua-duanya sah, jadi anda beralih mengikut jadual sendiri dan membatalkan yang lama selepas itu.

    internal/tenancy · internal/outbox/sign.go

  2. 02

    Passkey untuk ahli dan untuk pengendali

    WebAuthn dengan pengesahan pengguna dan kelayakan boleh ditemui sebagai kewajipan — bukan pilihan, kerana token ini berdiri betul-betul di hadapan aliran wang. Log masuk boleh ditemui mencari akaun daripada kelayakan itu sendiri, jadi tiada apa yang ditaip dan tiada apa yang boleh dipancing.

    internal/passkey

  3. 03

    Dua faktor melalui aplikasi pengesah, disimpan dengan betul

    Rahsia TOTP tidak boleh dicincang — pengesahan perlu mengira semula kod daripadanya — jadi rahsia ahli dimeterai dengan AES-256-GCM di bawah subkunci khusus konteks, bukan disimpan terdedah. Pembilang bagi kod yang diterima ditulis semula, jadi satu kod tidak boleh digunakan semula dalam tempoh sahnya.

    internal/membertotp · internal/secretbox

  4. 04

    Cincang jika boleh, meterai jika tidak

    Kata laluan atau kod pemulihan dicincang, kerana platform hanya perlu menjawab “inikah dia?”. Rahsia yang perlu dibaca semula oleh platform pula dimeterai, dan simpanan yang wujud sebelum binaan itu sedang dipindahkan ke sana, bukan dibiarkan seperti asal.

    internal/secretbox

Trafik keluar

Tiada apa yang bocor melalui URL yang anda konfigurasi.

Destinasi sesuatu webhook, dari segi binaannya, ialah input yang dipengaruhi penyerang — ia URL yang ditaip penyewa, dan platform kemudiannya memanggilnya dari dalam rangkaiannya sendiri.

Penghantar menjalankan pengawal trafik keluar sebelum permintaan dihantar dan bukannya mempercayai nama hos; hanya susunan itu yang membantu: semakan selepas peleraian nama, atau semakan pada teksnya dan bukan pada alamat sebenar, ialah semakan yang memang direka untuk dilepasi oleh serangan DNS rebinding. Destinasi loopback dan rangkaian persendirian hanya dibenarkan dalam sandbox dan ujian hujung ke hujung, dan pelonggaran itu ialah bendera yang dinyatakan secara jelas, bukan tekaan persekitaran.

internal/outbox/ssrf.go · internal/outbox/dispatcher.go

Kustodi

Kami bukan pemegang amanah aset, dan kodnya enggan menjadi begitu.

Tiada dana ahli. Tiada kunci persendirian. Tiada kelayakan platform di dalam saluran bayaran seorang penyewa.

Ahli membayar kepada anda

Setiap saluran dikonfigurasi dengan kelayakan penyewa itu sendiri, pada akaun penyewa itu sendiri.

internal/rails

Konfigurasi menolak milik kami

Menyimpan kelayakan yang sama dengan kepunyaan platform akan ditolak. Semakan ini wujud kerana “guna punya kita dulu” ialah cara sebuah vendor perisian tanpa sengaja menjadi institusi pembayaran.

internal/rails

Tuntutan mengarah, tidak pernah memindahkan

Satu tuntutan menempah baris lejar yang tepat dan mengeluarkan satu arahan. Pelaksanaannya milik anda, dan wang yang dilaksanakan itu juga milik anda.

internal/claims

Identiti

Pengesahan tanpa menyimpan dokumen.

Sesi pembekal berjalan pada akaun anda sendiri. Yang kembali ialah satu keputusan dan satu pemegang yang tidak boleh dipatah balik.

Pemegang itu cukup untuk menguatkuasakan seorang satu kedudukan, dan tidak lebih. Ia tidak cukup untuk membina semula sesuatu identiti, dan itulah intinya: cara paling selamat menyimpan imbasan pasport ialah dengan tidak menyimpannya, dan satu kebocoran tidak boleh mendedahkan data yang memang tidak pernah disimpan.

internal/verification

Yang tidak kami dakwa

Perkara yang tidak kami dakwa.

Jika anda sedang mengisi borang penilaian vendor, inilah baris yang kami akan gagal. Lebih baik tahu di sini daripada pada bulan keempat.

Kami tidak memegang laporan SOC 2. Tiada ujian penembusan oleh pihak ketiga pernah dijalankan. Kami tidak menerbitkan sebarang komitmen ketersediaan, kerana belum ada apa-apa di sini yang mengukurnya. XEX memberi anda kawalan dan rekod; ia tidak memberi anda lesen, dan ia bukan nasihat guaman. Sama ada pelan pampasan anda sah di negara tempat anda memasarkannya adalah tanggungjawab anda untuk pastikan, dan terma platform kami memang mewajibkannya.
Pendedahan kelemahan
Buat masa ini tiada program ganjaran pepijat, dan tiada bayaran ditawarkan bagi sesuatu laporan. Laporkan kelemahan melalui laluan keselamatan di halaman hubungi; kami akan mengesahkan penerimaannya dan memberitahu apa yang sedang kami lakukan. Sila jangan menguji pada ruang kerja penyewa yang sedang beroperasi — ambil sandbox percuma, yang merupakan produk penuh, dan ujilah di situ.

See /contact#security

Seterusnya

Hantar borang penilaian, atau ambil sandbox dan lihat sendiri.

Kedua-duanya baik. Salah satunya lebih pantas.