- शिप
- 23 सितंबर 2026 को 8:54 am बजे UTC
- लेखक
- Kamo
- Commit
- da4e9f3
फोन सिस्टम ऑडिट से 2-6 का पता लगाना, एक साथ तय करना क्योंकि कई शेयर फाइलें हैं। 2. उच्च - VoipInstanceController के पास किसी भी उत्परिवर्तन समापन बिंदु पर सही जांच नहीं थी ************* org के किसी भी हस्ताक्षरित सदस्य, न सिर्फ इसकी वीओआईपी व्यवस्थापक, एक फोन सर्वर के क्रेडेंशियल को बना, हटा सकते हैं या फिर दोहरा सकते हैं। अब आवश्यकता है MANAGE VOIP SETTINGS, वही सही सेटिंग्स -> सुविधाएँ -> फोन खुद ही फाटक है। इसके अलावा: प्लैटफॉर्मUrl/baseUrl अमान्य थे, इसलिए एक सदस्य रिंगसेंट्रल के टोकन टकसाल को इंगित कर सकता था। (जो ऑर्ग के वास्तविक ग्राहक आईडी / क्लाइंटसेक्रेट + JWT) या एक FreePBX GraphQL क्लाइंट को होस्ट पर भेजता है। उनके चयन और पर कब्जा क्रेडेंशियल, या पॉड नेटवर्क (Redis/MinIO/Yugabyte) तक पहुंचें Unauthenticated जवाब, कोई egress नेटवर्कनीति). PhoneServerUrlGuard के साथ फिक्स्ड: रिंगसेंट्रल है अब अपने स्वयं के दो होस्ट (प्रोडक्शन/सैंडबॉक्स) तक सीमित है; FreePBX को आम तौर पर सार्वजनिक रूप से सार्वजनिक रूप से प्राप्त होता है एसएसआरएफ चेक कामो-शेयर्ड-library's PublicHostGuard पर बनाया गया (एक ही आदिम सुरक्षा सेवा की) SafeSiteFetcher और aiservice के आउटबाउंड UrlGuard उपयोग). दोनों रिंगसेंट्रलJwtTokenService's और FreePBXTokenCache के टोकन कैश को मेजबान के बिना कुंजी दी गई थी, इसलिए एक लाइव बियरर टोकन मिंटेड वास्तविक मेजबान के खिलाफ एक मंच के बाद एक नया एक को भेजा जाएगा Url/baseUrl संपादित - दोनों कैश कुंजी अब इसमें शामिल हैं। mergeconfig अब एक मुखौटा "***" गुप्त सवारी के साथ एक करने के लिए नव-सेट होस्ट (पुनः प्रवेश नहीं किया जाना चाहिए), कभी भी KamoPBX के सर्वर-assigned accountId/realm को विलय नहीं किया जाना चाहिए। एक ग्राहक, और टेस्ट कनेक्शन / मैनुअल सिंक अब एक कच्चे अपवाद संदेश को गूंज नहीं सकता है (जो हो सकता है) गंतव्य होस्ट या कॉलर को वापस एक प्रतिक्रिया खंड ले लो। Telnyx की apiKey को जोड़ा गया SECRET FIELDS. 3. उच्च- MemberVoipConfigController के PUT ने केवल यह जांच की कि लक्ष्य सदस्य कॉलर में था org. कोई भी हस्ताक्षरित सदस्य COLLEAGUE के **************************** और SipController.getSipCredentials हाथ वापस जो भी विस्तार वर्तमान में सौंपा गया है - एक उसी-ऑर्ग खाता अधिग्रहण आदिम, केवल एक IDOR नहीं। अब MANAGE EXTENSIONs की आवश्यकता है या MANAGE VOIP SETTINGS बिना शर्त, सेटिंग्स से मेल खाती है UI की अपनी टिप्पणी है कि एक्सटेंशन असाइनमेंट व्यवस्थापक-प्रबंधित है और कभी स्वयं सेवा नहीं है। Id को अब इसके खिलाफ भी जांचा गया है कॉलर का org -- पहले एक अलग संगठन से एक फोन सर्वर नामित किया जा सकता है और अगर इसके विस्तार में से एक ने असाइन किया, दावा किया। 4. उच्च - कहीं भी सही जाँच नहीं: ************* (create/update/delete/) परीक्षण/परीक्षण/send), VoipDevicesController, VoipUsersController, VoipExtensionsController, VoipOrgAggregateController, OrgPhoneNumberController, MemberPhoneNumberController. अब सही करने की आवश्यकता होती है संबंधित कामो-आंतरिक स्क्रीन खुद को गेट किया जाता है (MANAGE VOIP SETTINGS) फोन सर्वर सूची / संख्या स्क्रीन के लिए, ************* एक्सटेंशन असाइनमेंट). VoipOrgAggregateController's /org/voicemails अतिरिक्त रूप से आवश्यक विशेष रूप से View VOICEMAIL (VoicemailController, org-aggregate डिफ़ॉल्ट नहीं) और उसी PHI ट्रांसक्रिप्ट-डिस्क्लोज़र ऑडिट कॉल प्राप्त किया। BulkTextInstanceController's /send भेजा कोई बाहरी सहमति / दमन गेट के साथ मनमाने एसएमएस -- यह अब (409) एक संख्या है जिसका इनकार करता है नवीनतम TCPA SMS ConsentRecord को REVOK किया गया है, जो पहले से ही WORM लेजर SmsKeyword Service को पढ़ रहा है। प्रत्येक इनबाउंड STOP/START पर लिखते हैं, तो एक अलग-अलग ऑर्ग के लिए STOP ने कभी भी इसे ब्लॉक नहीं किया एक। MemberPhoneNumberController एक अपवाद है "व्यवस्थापक सही आवश्यक, अवधि": वीओआईपी के विपरीत एक्सटेंशन / इंस्टेंस असाइनमेंट (फंडिंग 3, एक्सप्लिकिट उत्पाद द्वारा सभी पर कोई स्वयं सेवा पथ नहीं निर्णय - सेटिंग्स यूआई की अपनी टिप्पणी इतनी कहती है, सेटिंग्स / सदस्य फोन टैब MemberTextNumbersCard हर दर्शक पूर्ण स्व-सेवा नियंत्रण (assign/remove/make-primary) प्रदान करता है। अपनी खुद की कोई व्यवस्थापक-केवल गेट के साथ उनके OWN नंबर पर - वह पृष्ठ ACCESS VOIP पर पहुंच योग्य है अकेले, अपनी टिप्पणी के अनुसार: "ACCESS * उपयोगकर्ता को अपनी सेटिंग्स के प्रबंधन को कवर करता है; प्रबंधक * कवर एक सदस्य की ओर से कॉन्फ़िगर करना व्यवस्थापक। इसलिए इस नियंत्रक को इसके बजाय स्व-या व्यवस्थापक नियम मिला (mirrors **************** मौजूदा आकार): एक सदस्य प्रबंधन करता है उनके पास कोई विशेष अधिकार नहीं है; एक सहयोगी के साथ काम करने के लिए अभी भी MAAGE EXTENSIONS की आवश्यकता है। या MANAGE VOIP SETTINGS. यहाँ एक एडमिन-केवल शासन में प्रत्येक ACCESS VOIP-only सदस्य होंगे। एक ऐसा कार्ड जो आज काम करता है। 5. मध्यम - **************** ORG PHONE NUMBER पर अद्वितीय सूचकांक है (org id, phone canon) अकेले नहीं (phone canon) (deliberately, इसलिए एक बंदरगाह संख्या का इतिहास हो सकता है समय के साथ दो संगठनों के तहत मौजूद हैं - लेकिन कुछ भी नहीं एक SECOND org बंद कर दिया अपने निर्माण से एक नंबर के लिए अपनी पंक्ति पहले से ही सक्रिय रूप से आयोजित की जाती है, क्योंकि get ()/findByNumber () org-scoped हैं और बस अन्य org की पंक्ति नहीं मिलेगी। सहेजें () अब एक नई पंक्ति बनाने से मना कर दिया जब पहले से ही एक ही नंबर पर एक सक्रिय दावा है; खोज (जो प्रदाता से पूछता है) स्वयं, स्वामित्व का वास्तविक सबूत नहीं है। MemberPhoneNumberService's असाइन/unassign/ setPrimary/forMember मान्य संख्या org के खिलाफ आईडी लेकिन कभी सदस्यसभी पर - संयुक्त असाइन () के साथ सदस्यवोइप कॉन्फिग (केवल सदस्य आईडी द्वारा देखा गया), एक कॉलर में एक org अपने फोन पर एक अलग ORG के आउटबाउंड कॉलर आईडी के REAL सदस्य को फिर से इंगित कर सकता है बुनियादी ढांचा की आवश्यकता हैMemberInOrg तय है। 6. LOW (perf) - InstanceSyncService ने प्रत्येक कैश्ड एक्सटेंशन/user/device/voicemail पंक्ति को फिर से सहेज लिया जब प्रदाता ने कुछ अलग नहीं बताया -- ~ 23k बचे UPDATEs/day. चार सिंक विधियों में से प्रत्येक अब हर क्षेत्र की तुलना लिखने से पहले करता है यह केवल तभी बचाता है जब कुछ वास्तव में बदल जाता है। टेस्ट: PhoneServerUrlGuardTest, ********** ************* रिंगसेंट्रलJwtTokenServiceTest (नया मामला), FreePBXTokenCacheTest, **************************************************************************************************************************************************************** ************* ************* ************* ************* ************* (self-service Allow, cross-member) व्यवस्थापक अधिकार की आवश्यकता है, दोनों अधिकार स्वीकार किए जाते हैं), **************** केवल अधिकार-केवल इसके अलावा ************* सत्यापित किया गया प्रति नियंत्रक एक समर्पित परीक्षण के बजाय कोड समीक्षा और पूर्ण-suite संकलन द्वारा - पैटर्न है समान और पहले से ही **************** और ******************* ऊपर हर गार्ड mutation-checked था (स्थानीय रूप से उलटा, पुष्टि की मिलान परीक्षण लाल हो जाता है, बहाल)। तीन पूर्व मौजूदा VoipInstanceController परीक्षण ************* VoipInstanceJustCallIdTest, ************* 2 खोजने की तारीख और सब पर कोई अधिकार सूची के साथ अपने सत्र का निर्माण; उनमें अब MANAGE VOIP SETTINGS शामिल हैं, इसलिए वे अभी भी उन व्यवहारों का अभ्यास करते हैं जो उनके लिए लिखे गए थे (संशोधन) पहले नए दायें चेक की बजाय, जस्टकैल आईडी गोद लेने, JWT-आकार सत्यापन)। ************* FreePBX मामले ने एक गैर-रिसोल्विंग "pbx.example.com" प्लेसहोल्डर भी लगाया एक साक्षर आईपी के लिए, चूंकि फोनसर्वरउर्लगार्ड का आधारउर्ल चेक अब एक वास्तविक DNS लुकअप करता है। समन्वयक के लिए रिपोर्ट: कोई स्कीमा परिवर्तन नहीं, कोई कॉन्फ़िगरेशन परिवर्तन नहीं, कोई प्रवेश द्वार परिवर्तन की जरूरत नहीं है इन छह निष्कर्षों (केवल 1 की रिपोर्ट में एक परिचालन अनुवर्ती है)। के खिलाफ पुष्टि की Apiservice: यह आगे बढ़ता है /api/voip/* थोक, इसलिए निष्कर्ष 2, 3, 5 और 6 वहाँ कुछ नहीं की जरूरत है। BulkTextInstanceController (finding 4) /api/bulktext/instances/* पर बैठता है, जो apiservice जानबूझकर वाइल्डकार्ड नहीं करता है (केवल /api/bulktext/inbound/**) सार्वजनिक है, आंतरिक सुरक्षा X-Internal-Auth /api/bulktext/send कभी इंटरनेट से पहुँचा जा रहा है) - लेकिन यह कभी नहीं करने के लिए आवश्यक: कामो-आंतरिक सर्वर इसे सीधे तक पहुंचता है ************* जो VOIPSERVICE URL की प्रॉक्सी, जनता को बायपास करने के लिए पूरी तरह से प्रवेश द्वार किसी भी पक्ष में परिवर्तन के लिए कुछ नहीं।.
