- Szycy
- 23 września 2026 08:54 UTC
- Autor
- Kamo
- Pochęt się
- da4e9f3
Wyniki 2-6 z audytu systemu telefonicznego, ustalone razem, ponieważ kilka plików udostępnia. 2. HIGH — VoipInstanceController nie miał właściwej kontroli pod żadnym mutującym punktem końcowym Każdy zarejestrowany członek orgu, a nie tylko jego VOIP Administratorzy, mogą tworzyć, usuwać lub ponownie określać poświadczenia serwera telefonu. Teraz wymaga MANAGE_VOIP_SETTINGS, ten sam prawo Ustawienia -> Funkcje -> Sam telefon jest zamknięty. Również: platformaUrl/baseUrl nie był potwierdzony, więc członek mógł wskazać miętę tokenową RingCentral (który wysyła prawdziwy klientID/kliennik orgien + JWT) lub klienta FreePBX GraphQL w hostie Wybierając i przechwytując poświadczenia lub dotrzeć do sieci kapsuł (Redis/MinIO/Yugabyte wszystkie Odpowiedz nieuwierzytelnieni, bez egress NetworkPolicy). Naprawiono z PhoneServerUrlGuard: RingCentral is Teraz ograniczono do własnych dwóch hostów (produkcja/sandbox); FreePBX otrzymuje tylko dla publiczności Kontrola SSRF zbudowana na kamo-wspólnie biblioteką PublicHostGuard (ta sama prymitywna SecurityService’s SafeSiteFetcher i aiservice's OutboundUrlGuard use). Zarówno RingCentralJwtTokenService i Uchwyty tokenów FreePBXTokenCache były przyklejone bez gospodarza, więc token na żywo nośnika został wybity wobec prawdziwego hosta będzie wysyłany do nowego po edycji platformyUrl / bazowy – Oba klucze podręczne zawierają teraz to. mergeConfig nie pozwala już zamaskowanej tajnej przejażdżce "A" wzdłuż do a. Nowo ustawiony host (musi zostać ponownie wprowadzony), nigdy nie scala konta przypisane serwerowo KamoPBXID/realm z Klient i synchronizacja testowa / instrukcja nie odzwierciedlają już surowego komunikatu wyjątku (który może Przewozić hosta docelowego lub fragment odpowiedzi z powrotem do dzwoniący). Dodano do koszyka: Telnyx's apiKey SECRET_FIELDS. 3. HIGH — MemberVoipConfig Administrator PUT tylko sprawdził, czy członek docelowy był w dzwonieniu Org. Każdy zarejestrowany członek może ponownie przydzielić COLLEAGUE's i SipController.getSipCredentials przekazuje zwrot z powrotem, jakie przedłużenie jest obecnie przypisane -- Recepta na konto prymitywne, a nie tylko IDOR. Teraz wymaga MANAGE_EXTENSIONS lub MANAGE_VOIP_SETTINGS bezwarunkowo, dopasowując własny komentarz UI ustawień tego rozszerzenia Przypisanie jest zarządzane przez administratora i nigdy samoobsługowe. instanceId jest teraz również sprawdzane pod kątem Org rozmówcy - wcześniej serwer telefoniczny z innej organizacji może być nazwany i, jeśli Jedno z jego rozszerzeń było nieprzypisane, twierdzi. 4. WYSOKI – brak właściwych kontroli w dowolnym miejscu: (utwórz/zektualizowanie/deletowanie/ test/test-send/wysyłanie), VoipDevicesSNauka Kontroler, VoipUsersController, VoipExtensionsController, VoipOrgAggregateController, OrgPhoneNumberController, MemberPhoneNumberController. Większość teraz Wymagaj odpowiedniego ekranu kamo-internal samego w nim ogrodzonym (MANAGE_VOIP_SETTINGS Dla ekranów inwentaryzacji / serwerów telefonicznych, dla Przypisanie rozszerzenia). VoipOrgAggregateController's /org/voicemails dodatkowo wymagane VIEW_VOICEMAIL w szczególności (dopasowanie VoipVoicemailController, a nie domyślne domyślne orgregowane) i Uzyskał ten sam telefon z audytem ujawnienia informacji transkrypcji PHI. BulkTextInstanceStroller's /send wysłany Bezpłatne SMS bez zgody / bramki do tłumienia - teraz odmawia (409) numeru, którego Najnowsza TCPA_SMS ConsentRecord jest REVOKED, czytaj już WORM ledger SmsKeywordService pisuje na każdym przyjeździe STOP/START, dzierżawicie-scoped, więc STOP do innego orgia nigdy tego nie blokuje Jeden. MemberPhoneNumberController jest jedynym wyjątkiem od "wymaganego przez min, okres": w przeciwieństwie do VOIP Rozszerzenie/przypisanie instancji (znalezienie 3, brak ścieżki samoobsługowej w ogóle przez wyraźny produkt Decyzja - komentarz użytkownika własnego UI mówi tak), ustawień / członkinia karty Telefonu MemberTextNumbersCard oferuje każdemu widzowi pełną kontrolę samoobsługową (przypisać/usuać/make-primary) Na ich własnych numerach bez własnej bramki - ta strona jest osiągalna na ACCESS_VOIP Tylko w monoterapii, według własnego komentarza: "ACCESS_" obejmuje użytkownika zarządzającego własnymi ustawieniami; okładki MANAGE_ Administratorzy konfigurują się w imieniu członka.” Więc ten kontroler ma zamiast tego zasadę samo-or-admin. (lustry > istniejący kształt): członek zarządza Własne numery bez specjalnego prawa; działanie na podstawie decyzji kolegi nadal wymaga MANAGE_EXTENSIONS lub MANAGE_VOIP_SETTINGS. Reguła tylko dla administratora tutaj miałaby 403'd każdego członka ACCESS_VOIP Z karty, która działa dzisiaj. 5. MEDIUM — unikalny indeks ORG_PHONE_NUMBER jest (org_id, phone_canon), nie (telefon_kanon) sam (celowo, więc historia numeru portowanego może Istnieją w dwóch organizacjach w czasie) - ale nic nie powstrzymało drugiego orga przed stworzeniem jego. Własny wiersz dla numeru, który FIRST org już aktywnie posiada, ponieważ get()/findByNumber() są lub g-scoped I po prostu nie znajdzie wiersza drugiego orgi. save() teraz odmawia utworzenia nowego rzędu, gdy Inny org ma już aktywne roszczenie dotyczące tego samego numeru; odkrycie (co wymaga od dostawcy Sam, prawdziwy dowód własności) jest nietknięty. MemberPhoneNumberService przypisanie/nietypowanie/ setPrimary/forMemberate validate numberId przeciwko org, ale nigdy w ogóle memberId - razem Z przypisaniem() zapisu do MemberVoipConfig (wyglądanego przez członka id) w jednym Org może ponownie wskazać PRAWDZIWEJ Członkowskiego zainteresowanych rozmówców Defestrę na własny telefon Infrastruktura. wymagaMemberInOrg jest poprawka. 6. LOW (perf) — InstanceSyncService ponownie zaratował każde buforowane rozszerzenie/użytkownik/urządzenie/konlogódmail na Każda zamiatarka z rozbitą zaktualizowanyAmadologu, nawet gdy dostawca nie zgłosił niczego innego - 23 tys. możliwe do uniknięcia aktualności/dzień. Każda z czterech metod synchronizacji porównuje teraz każde pole przed zapisem To i tylko oszczędza, gdy coś się zmieniło. Testy: PhoneServerUrlGuardTest, ? RingCentralJwtTokenServiceTest (nowy przypadek), FreePBXTokenCacheTest, . . / / "" (dozwolona samoobsługa, międzynażana Wymaga prawa administratora, oba prawa akceptowane), - dodawania tylko do praw do - zostały zweryfikowane Według przeglądu kodu i kompilacji pełnej, a nie dedykowanego testu na kontrolerze - wzór jest Idendencjonalne i już objęte : i . Każda nadpowyższa osłona została sprawdzona przez mutację (odwrócona lokalnie, potwierdzona, że dopasowany test staje się czerwony, przywrócony). Trzy wcześniej istniejące testy VoipInstanceController - VoipInstanceJustCallIdTest, - wstępne znalezienie 2 i zbudowanie ich sesji bez żadnej listy praw; Obecnie zawierają one MANAGE_VOIP_SETTINGS, więc nadal ćwiczą zachowanie, dla którego zostały napisane (provisioning Powtórz, adopcja id JustCall, walidacja kształtu JWT), zamiast potykać się o nową właściwą kontrolę. Sprawa FreePBX również nierozwiązywał symbolu zastępczego "pbx.example.com" Dla dosłownego adresu IP, ponieważ kontrola bazowaUrl PhoneServerUrlGuard wykonuje teraz prawdziwy odnośnik DNS. Sprawozdanie dla koordynatora: brak zmian schematu, brak zmian konfiskaty, brak zmian bramek niezbędnych do Te sześć ustaleń (tylko ustalenie raportu 1 ma działania następcze). Potwierdzony przeciwko apiservice: to jest do przodu /api/voip/' hurtowo, więc wyniki 2, 3, 5 i 6 nie potrzebują tam nic. BulkTextInstanceNagrzewanek (odnalezienie 4) znajduje się w /api/bulktext/instancje/-, które apiservice Celowo NIE robi dziką kartę (tylko /api/bulktext/inbound/- jest publiczny, pilnujący wewnętrznego X-Internal-Auth /api/bulktext/wyskończenie z bycia kiedykolwiek dostępnym z Internetu) - ale nigdy Musi: własny serwer kamo-internal dociera do niego bezpośrednio przez - które są pełnomocnicze VOIPSERVICE_URL, z pominięciem publiczności Brama w całości. Nic do zmiany po obu stronach.
