KamoCRM

Cek kanan, SSRF / credential penjaga dan cross- org perbaikan di VOIP

FixVOIPService
Dikirim
23 September 2026 pukul 08.54 UTC
Penulis
Kamo
Commit
da4e9f3

Findings 2-6 dari audit sistem telepon, tetap bersama-sama karena beberapa file berbagi. Dua. * * * * * * * * * * * * * apapun signed- dalam anggota org, bukan hanya VOIP nya admin, bisa membuat, menghapus atau menunjuk ulang kredensial server telepon. Sekarang dibutuhkan Manvage _ VOIP _ SETTINGS, pengaturan kanan yang sama - > Fitur - > Telepon itu sendiri bergerbang di. Juga: platformUrl / baseUrl yang unvalidated, sehingga anggota bisa titik RingCentral 's token mint (yang mengirim klien clientId / clients Secret + JWT) atau klien FreePBX GraphQL di host dari pilihan dan kredensial penangkapan mereka, atau mencapai jaringan pod (Redis / MiniO / Yugabita semua jawaban tidak terotentikasi, tidak ada jalan keluar NetworkPolicy). Tetap dengan PhoneServerUrlGuard: RingCentral adalah sekarang dibatasi untuk sendiri dua host (produksi / sandbox); FreePBX mendapatkan umum public -saja Cek SSRF yang dibangun pada kamo- shared-perpustakaan PublisitostGuard (yang sama primitif SecurityService 's SafetFetcher and aiservice 's OutboundUrlGuard digunakan). Baik RingCentral JwtTokenService dan Tanda FreePBXTokenCache yang tajam tanpa host, sehingga Boarer token hidup minted terhadap host nyata akan terus dikirim ke yang baru setelah sebuah platformUrl / baseUrl edit - kedua kunci cache sekarang termasuk itu. mergeConfig tidak lagi memungkinkan bertopeng "* *" naik rahasia sepanjang ke host -set baru (harus dimasukkan kembali), tidak pernah menggabungkan server KamoPBX 's - ditugaskan accountId / realm dari a client, and Test Connection / manual sync no longer echo a raw exception message (which could (Di hari kiamat) dinamakan Al-Qaari 'ah karena kengerian-kengerian yang terjadi di dalamnya sangat menggentarkan kalbu. Kunci Apik Telnyx ditambahkan ke Rahasia. Nomor 3. org. Setiap sinyal - dalam anggota bisa resisign COLLEAG 's * * * * * * * * * * * dan SipController.getSipCredentihands kembali ekstensi apapun saat ini ditugaskan - sebuah SAME -org akunt- takeover primitif, bukan hanya sebuah IDOR. Sekarang memerlukan "manage _ EXTENSIONS" atau Kelola _ VOIP _ SETTINGS tanpa syarat, pencocokan pengaturan UI sendiri komentar yang ekstensi penugasan diatur dan tidak pernah melayani diri sendiri. instanceId sekarang juga diperiksa terhadap pemanggil org -- sebelumnya server telepon dari sebuah organisasi berbeda dapat dinamai dan, jika salah satu perpanjangan nya terjadi untuk tidak ditugaskan, diklaim. 4. (buat / update / hapus / test / test- send / send), VoipDevicesController, VoipUsersController, VoipExtensionsController, VoipOrganity Aggregates Controller, Organic PhoneNumberController, Anggota PhoneNumberController. Kebanyakan sekarang membutuhkan kanan layar internal kamo- yang berhubungan itu sendiri digated (manage _ VOIP _ SETTINGS untuk ponsel - server inventaris / nomor layar, * * * * * * * * * * * * * * * untuk extension assignment). VoipOrganity Aggregate Controller 's / org / voicemail tambahan diperlukan VIEW _ VOICEMAIL secara khusus (cocokkan VoipVoiceController, bukan baku org- kumpulan) dan mendapatkan panggilan audit pengungkapan PHI yang sama. BulkTextInstanceController mengirim acak SMS dengan tidak ada persetujuan / penekanan gerbang outbound - sekarang menolak (409) sebuah nomor yang TCPA _ SMS terakhir Conagn Record telah DIREVOWD, membaca buku Working SmsKeyWordService sudah tulis di setiap inbound STOP / START, tenant- scoped sehingga STOP ke org berbeda tidak pernah memblokir ini Satu. Anggota PhoneNumberController adalah salah satu pengecualian untuk "hak admin, titik": tidak seperti VOIP extension / instance assignmen (find 3, no self-service path sama sekali oleh produk eksplisit keputusan - pengaturan UI sendiri komentar mengatakannya), pengaturan / anggota tab Telepon Anggota TextNumbersCard menawarkan setiap pemirsa kontrol layanan penuh (assign / remove / make-primary) lebih dari nomor OWN mereka dengan tidak ada admin- hanya gerbang sendiri - halaman yang dapat dicapai pada AKSES _ VOIP sendirian, setiap komentarnya sendiri: "ACCESS _ * melingkupi pengguna yang mengelola pengaturan mereka sendiri; MANAGE _ * meliputi admin konfigurasi atas nama anggota. "Jadi pengontrol ini punya aturan sendiri-atau-admin sebagai gantinya (mirror * * * * * * * * * * * * * bentuk yang ada): seorang anggota mengelola angka mereka sendiri dengan tidak ada hak khusus; bertindak pada rekan apos; s masih membutuhkan MANAGE _ EXTENSIONS or manage _ VOIP _ SETTINGS. Aturan satu-satunya di sini akan memiliki 403d setiap AKSES _ VOIP-hanya anggota keluar dari kartu yang bekerja hari ini. 5. (org _ id, phone _ canon), bukan (phone _ canon) sendiri (sengaja, sehingga nomor ported dapat ada di bawah dua organisasi dari waktu ke waktu) -- tapi tidak ada yang menghentikan SECOND org dari penciptaan nya baris sendiri untuk sebuah nomor sebuah PERTAMA org telah secara aktif diadakan, sejak memperoleh () / findByNumber () adalah org-scoped dan hanya tidak akan menemukan baris org lain. simpan () sekarang menolak untuk membuat sebuah baris baru ketika org lain telah memiliki klaim aktif pada nomor yang sama; penemuan (yang meminta penyedia itu sendiri, bukti nyata kepemilikan) tidak tersentuh. Anggota PhoneNumberService 's assign / unassign / setPrimary / formber memvalidasi numberId terhadap org tetapi tidak pernah memberId sama sekali -- gabungan dengan menetapkan () 's write- melalui untuk UmberVoipConfig (dilihat oleh anggota id saja), seorang penelepon dalam satu org bisa menunjuk kembali sebuah MBER REAL DARI A DIFFERENT ORG apos; s outbound penelepon di telepon mereka sendiri infrastruktur. MemberInOrg adalah yang terbaik. 6. LOW (perf) - InstanceSyncService kembali - disimpan setiap ekstensi cached / user / deviled baris di setiap menyapu dengan menumbangkan dateUpdated, bahkan ketika penyedia melaporkan tidak ada yang berbeda - - 23k dihindari UPDATE / hari. Masing-masing dari empat metode sync sekarang membandingkan setiap bidang sebelum menulis itu dan hanya menyelamatkan ketika sesuatu benar-benar berubah. Tes: PhoneServerUrlGuardTest, * * * * * * * * * * * * * * * * * * * * * * * * * * * * * RingCentralJwtTokenServiceTest (kasus baru), FreePBXTokenCacheTest, * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * (self-service diperbolehkan, cross- anggota membutuhkan hak admin, kedua hak diterima), * * * * * * * * * * * * * * * Kanan - hanya tambahan ke * * * * * * * * * * * * * * * * yang diverifikasi oleh kode review dan compilasi full-suite daripada sebuah tes dedicated per controller -- polanya adalah identik dan sudah ditutupi oleh * * * * * * * * * * * * * * * * dan * * * * * * * * * * * * * * * * * Setiap penjaga di atas itu mutasi - diperiksa (berbalik lokal, dikonfirmasi tes pasangan berjalan merah, dipulihkan). Tiga tes sebelum-ada VoipInstanceController * * * * * * * * * * * * * * * VoipInstanceJust CallIdTest, * * * * * * * * * * * * * * * sebelum tanggal pencarian 2 dan membangun sesi mereka tanpa daftar hak sama sekali; sekarang mereka termasuk Manvage _ VOIP _ SETTINGS sehingga mereka masih melakukan perilaku mereka ditulis untuk (provisioning coba lagi, ID Just Call adopsi, validasi bentuk JWT) daripada tersandung cek kanan baru pertama. * * * * * * * * * * * * * * * Kasus FreePBX juga bertukar sebuah "pbx.example.com" placeholder untuk IP literal, sejak pemeriksaan BaseUrl PhoneServerUrl sekarang melakukan pencarian DNS yang nyata. Laporkan untuk koordinator: tidak ada perubahan skema, tidak ada perubahan konfigurasi, tidak ada perubahan gateway yang diperlukan untuk 6 temuan ini (hanya menemukan 1 laporan memiliki tindak lanjut operasional). Dikonfirmasi terhadap apiservice: itu maju / api / voip / * grosir, jadi penemuan 2, 3, 5 dan 6 perlu apa-apa di sana. BulkTextInstanceController (find 4) duduk di / api / bulktext / instance / *, dimana apiservice TIDAK sengaja wildcard (hanya / api / bulktext / inbound / * * * adalah publik, menjaga internal X- Internall - Auth / api / bulktext / send dari pernah dapat dicapai dari internet) -- tapi tidak pernah dibutuhkan untuk: kamo- internal sendiri server mencapai langsung melalui * * * * * * * * * * * * * yang proxies ke VOIPSERVICE _ URL, melewati publik gerbang sepenuhnya. Tidak ada yang berubah di kedua sisi.

Semua perubahan

Seperti apa yang Anda lihat pengiriman?

Semua itu tiba di ruang kerjamu sendiri. Mulailah dengan rencana gratis dan baca halaman ini lagi dalam sebulan.

Mulai Bebas SelamanyaTampilkan Harga