Paksa adalah _ palsu, dan tutup lubang yang membiarkan tanda tangan tanpa pengawasan di

FeatureSecurityService
Shipped
19 Agustus 2026 pukul 08.09 UTC
Author
Kamo
Commit
19ddc01

Dua bagian dari satu insiden. Sebuah akun terdaftar, diverifikasi alamat pada sekali pakai Penyedia, mengambil sesi login otomatis dan membuat lima organisasi dalam tiga menit dan forty- dua detik - empat dari mereka byte- identik "Acme Corp baris berbeda hanya dalam mereka domain. Ini menghasilkan baris ZERO dalam system _ access _ log, sehingga tidak ada IP dan tidak ada sumber-agen pada catatan untuk semua itu. Dipaksa memaksa bendera untuk pergi. - Otentikasi Pengguna Layanan: 'u.is _ fake = FALSE' masuk ke ACCOUNT _ QUERY _ PREFIX, bukan kedalam Penelepon. Ketiga identifier login - nama pengguna, email akun, dan kotak-surat primary lihat baik-baik oleh id - gunakan kembali bahwa salah satu proyeksi, jadi salah satu clause menutup semua tiga dan identifier keempat ditambahkan kemudian mewarisi itu. Sebuah akun ditandai berbunyi sebagai tidak ada dan memperoleh generik "pengguna tidak ada atau kata sandi tidak benar"; sebuah pesan bernama flag akan memberitahu penyiksa persis apa yang harus berubah. - KSesionService.createSesi: ditolak langsung. Ini adalah pinggang terkecil di sistem untuk "may this account act" - setiap * * * adalah minted di sini, sehingga satu gerbang mencakup login sandi, enter-as, desktop SSO, perangkat auth AND cornel register post- verifikasi auto- login, yaitu bagaimana akun dalam pertanyaan mendapat sebuah sesi tanpa pernah memanggil / login. Melempar daripada kembali kosong, karena tiga puluh penelepon mengasumsikan sebuah id bukan null dan akan NPE di tempat lain sepenuhnya; login dan auto- session jalan menangkapnya dan bentuk jawaban yang bersih. - Fake AccountGuard: dua tiers sengaja. Cek akun tunggal UNCACHED (backs gerbang keras, di mana jawaban basi berarti rekening ditandai masih masuk); id set cache untuk 60-an (mereka kembali membaca penyaringan, di mana kasus terburuk adalah org sintetis tinggal dalam daftar untuk di bawah satu menit). Gagal terbuka - menyembunyikan segelintir baris tidak worth 500 ing an org listing - and does NOT cache a fail, so one blip does not become Satu menit bendera diam-diam tidak bekerja. - Organisme ObjectStorageSweep: menghentikan snapshocking organ sintetis. Di sinilah uang itu: snapshots ditulis per org per hari selamanya, dan lima orgs ditinggalkan sudah menjadi ~ 9% dari tabel itu. Sebuah akun yang tidak dapat log in tidak melakukan apa-apa tentang pekerjaan Platform terus melakukannya. - Fake AccountController: flag, unflag, list - behind Manage _ ORGANIZATIONS daripada sebuah platform baru benar, karena kamo- internal 's platformCoverage test menegaskan kanan diatur terhadap konsol yang diberikan permukaan. Mengcabut sesi hidup pada flagging, karena gerbang pada MINTING sebuah sesi, bukan menggunakan satu; menolak untuk menandai Pengguna Sistem, yang akan membuat platform tidak dapat memasukkan anak org. Dan lubang-lubang itu... - / register tidak pernah membaca '* * * Token'. UI register selalu memecahkan Capcha tantangan dan diposting hasil; grep untuk bidang di seluruh Java tidak menghasilkan apa-apa. Widget pada peramban dan titik akhirnya terbuka lebar. Sekarang diverifikasi, dan FAIL CLOSED - asimetris dengan login dengan tujuan: login hanya dapat memverifikasi muatan ketika satu adalah saat ini, karena klien seluler tidak mengirim dan sangat membutuhkan akan mengunci pengguna sejati keluar. Pendaftaran memiliki persis satu klien dan sudah mengirimkan tanda. - Layanan CapchaVerificationService mengembalikan TRUE ketika 'capcha.service-url' tidak diset, sehingga config Omissi tidak bisa dibedakan dari tantangan terpecahkan. Sekarang ditolak, di belakang 'capcha.allow-unconfigured' (default false) untuk local run. Tidak ada perubahan produksi - properti diatur dalam amanity- config - tetapi bypass laten hilang. - POST / org tidak memiliki batas tingkat apapun. Now capped per ACCOUNT (not per IP - an IP key akan menghukum semua orang di belakang satu perusahaan NAT). Sengaja murah hati: pelanggan sejati menciptakan tiga organ dalam lima setengah menit, dua dengan nama yang sama dan alias, sementara Mengerjakan si penyihir. Batas ketat akan menghalangi mereka. Menghitung usaha, tidak Sukses, dan gagal membuka outage Redis. - org alias tidak memiliki pemeriksaan unik di jalan ini - hanya domain yang melakukannya, itulah sebabnya empat organ hidup berbagi "acme-corp" dan mengapa pencipta bervariasi hanya domain setiap kali: itu adalah satu bidang server akan menolak. Now a 409, scoped to the security provider karena '(security _ provider _ id, alias)' adalah pasangan login menyelesaikan sebuah host web-alias. - REGISTRASI / REGISTREASI _ REJECTED / EMAIL _ VERIFIED / ORG _ CRETED sekarang ditulis dengan IP dan agen. Setiap aturan deteksi tombol dari acara login, sehingga seluruh register corong duduk di luar deteksi mesin bidang pandang. Tidak secara paksa selesai, setelah diperiksa: login tidak dibuat * * -strict (merusak ponsel app, butuh rilis terkoordinasi); domain surel yang disita tidak diblokir (sebuah domain nyata Pelanggan tanda-tanda di dari proton.me, dan naif "bukan penyedia mainstream" aturan blok nyata orang-orang); tidak ada content- mencetak auto-block (strongest-looking perilaku sinyal - duplikasi nama org dibuat terpisah menit - cocok dengan pelanggan sebenarnya). Skema prasyarat sudah puas: KamoInitializer terapan users.is _ fake sebelum shared-lib push, diverifikasi sebagai 'boolean NOT DEFAULT false' dengan indeks parsial, dan re-berlari idempotently tanpa membersihkan bendera.

All changes

Seperti apa yang Anda lihat pengiriman?

Semua pembaruan ini secara otomatis mendarat di ruang kerja Anda. Mulai bebas dan menontonnya tumbuh minggu demi minggu.

Mulai Bebas SelamanyaTampilkan Harga