हाम्रो अघिल्लो ब्लगले बुकली प्लगइन (वर्डप्रेस अनलाइन बुकिङ र शेड्युलिङ प्लगइन - बुकली) भित्रको XSS जोखिमको अन्वेषण गर्यो। आज, हामी उही प्लगइनमा हाम्रो अनुसन्धानको क्रममा प्रकाशमा आएको अर्को XSS जोखिमको बारेमा जानकार हुनेछौं।
हाम्रो टोलीले मार्च २०२३ मा यो जोखिम पत्ता लगायो। यसको खोज पछि, हामीले जोखिमलाई तुरुन्तै सम्बोधन गरिनेछ भनेर सुनिश्चित गर्न जिम्मेवार खुलासा प्रक्रियाहरू तुरुन्तै सुरु गर्यौं। यस जोखिमको लागि तोकिएको CVE पहिचानकर्ता CVE-२०२३-११५९ हो, र यसलाई मे २०२३ मा सफलतापूर्वक प्याच गरिएको थियो।
यस ब्लग पोस्टमा, हामी Bookly प्लगइनमा पाइने जोखिमको मूल कारणको विस्तृत विश्लेषण गर्नेछौं। थप रूपमा, हामी यो समस्यालाई प्रभावकारी रूपमा कम गर्न जारी गरिएको प्याचको जाँच गर्नेछौं।
विश्लेषण CVE–२०२३-११५९ – सेवा शीर्षक मार्फत प्रमाणित (प्रशासक+) भण्डारण गरिएको क्रस-साइट स्क्रिप्टिङ:
हाम्रो अनुसन्धानले "सेवा शीर्षक" क्षेत्रसँग सम्बन्धित Bookly प्लगइनमा एउटा जोखिम पहिचान गर्यो। यो जोखिमले अपर्याप्त इनपुट सेनिटाइजेसन उपायहरूको कारणले गर्दा प्लगइनलाई भण्डारण गरिएको क्रस-साइट स्क्रिप्टिङ (XSS) आक्रमणहरूमा पर्दाफास गर्छ। यो ध्यान दिनु महत्त्वपूर्ण छ कि प्रशासकहरूले प्लगइन इन्टरफेस मार्फत सिधै शीर्षक सम्पादन वा सेट गर्न सक्छन्।
थप अनुसन्धान पछि, हामीले पत्ता लगायौं कि यदि सेवा भित्र कुनै दुर्भावनापूर्ण शीर्षक सेट गरिएको छ भने, ग्राहकले उक्त सेवा पहुँच गर्दा उनीहरूको जानकारी वा सहमति बिना नै उनीहरूको ब्राउजरमा रेन्डर र कार्यान्वयन गरिनेछ। यो कार्यान्वयनले सम्भावित रूपमा रिमोट कोड कार्यान्वयन सक्षम पार्न सक्छ, जसले पर्याप्त सुरक्षा जोखिम निम्त्याउँछ।
अझ सटीक बुझाइ प्रदान गर्न, निम्न कोड स्निपेटले नयाँ सेवा सिर्जना गर्दा "सेवा शीर्षक" फिल्डको मान कसरी सेट र पढिन्छ भनेर चित्रण गर्दछ:

चित्र १. createService विधि, जुन नयाँ सेवा सिर्जना गर्दा कल हुन्छ।
'createService' ले 'parameters' विधिलाई आह्वान गर्छ।

चित्र २ मा प्यारामिटर विधि देखाइएको छ।
'प्यारामिटरहरू' विधि भित्र, 'getRequest()' प्रकार्यमा कल हुन्छ। यो प्रकार्य इन्टरफेसबाट प्रविष्ट गरिएका मानहरू पुन: प्राप्त गर्न जिम्मेवार हुन्छ। त्यसपछि, यी मानहरू 'createService' विधिमा पठाइन्छ, जहाँ तिनीहरू भण्डारण गरिन्छन्। यद्यपि, यो प्रक्रियाको क्रममा कुनै पनि इनपुट सेनिटाइजेसन हुँदैन भन्ने कुरा हाइलाइट गर्नु महत्त्वपूर्ण छ, जसले गर्दा प्रणाली सम्भावित सुरक्षा जोखिमहरूको जोखिममा पर्दैन।

चित्र ३ मा getRequest विधि देखाइएको छ।
समाधानको अनावरण: प्याचको अनुसन्धान गर्दै
जोखिम समाधान गर्ने प्याचको जाँच गर्दा, हामीले $parameters चर उचित सेनिटाइजेसनबाट गुज्रिएको छ भनेर निर्धारण गर्यौं, जसले कार्यक्रम भित्र सम्भावित सुरक्षा उल्लङ्घनहरूलाई प्रभावकारी रूपमा रोक्छ। यो उल्लेखनीय वृद्धिमा 'unfiltered_html' प्रकार्य र 'stripScripts' विधि लागू गर्ने समावेश छ, जुन $parameters लाई सेनिटाइज गर्न र सम्भावित आक्रमणहरूलाई कम गर्न महत्त्वपूर्ण छन्।
'unfiltered_html' प्रकार्य प्रयोग गरेर, प्याचले आवश्यक क्षमता भएका अधिकृत प्रयोगकर्ताहरूले मात्र फिल्टर नगरिएको HTML सामग्री पेश गर्न सक्छन् भन्ने कुरा सुनिश्चित गर्दछ। यसले दुर्भावनापूर्ण स्क्रिप्टहरूको परिचयलाई रोक्छ र क्रस-साइट स्क्रिप्टिङ (XSS) आक्रमणहरूको जोखिमलाई उल्लेखनीय रूपमा कम गर्छ। 'stripScripts' विधिले $parameters भित्र कुनै पनि एम्बेडेड JavaScript कोड हटाएर वा बेअसर गरेर सेनिटाइजेसन प्रक्रियालाई अझ बढाउँछ।
समग्रमा, सरसफाइको यो व्यापक दृष्टिकोणले $parameters चर कोडबेसमा प्रयोगको लागि सुरक्षित छ भनी सुनिश्चित गर्दछ, सुरक्षा कमजोरीहरूको सम्भावनालाई कम गर्दै र कार्यक्रमको समग्र सुरक्षालाई सुदृढ बनाउँछ।

चित्र ४. प्याच चित्रण गर्दै।
निष्कर्ष
यस ब्लग पोस्टमा, हामीले Bookly प्लगइनमा पत्ता लागेको एउटा जोखिमको जाँच गर्यौं, जसले प्रमाणित आक्रमणकारीहरूलाई हानिकारक स्क्रिप्टहरू घुसाउन सक्षम बनायो, जसले प्रयोगकर्ताहरूको उपकरणहरूको लागि खतरा निम्त्याउँछ। धन्यबाद, यो जोखिम संस्करण २१.८ मा प्याच गरिएको छ। हामी WordPress साइट मालिकहरूलाई सम्भावित आक्रमणहरूलाई कम गर्न आवश्यक पर्ने नवीनतम प्लगइन संस्करणमा आफ्नो स्थापनाहरू तुरुन्तै अद्यावधिक गर्न सल्लाह दिन्छौं। सुरक्षित अनलाइन उपस्थिति कायम राख्न अद्यावधिकहरू र प्याचहरूको समयमै प्रयोग सुनिश्चित गर्नु महत्त्वपूर्ण छ। थप रूपमा, प्रयोगकर्ता भूमिकालाई 'unfiltered_html' क्षमता प्रदान गर्दा, सावधानी अपनाउनुहोस् र यो क्षमताको सम्भावित सुरक्षा प्रभावहरूलाई विचार गर्दै, साँच्चै आवश्यक पर्ने विश्वसनीय व्यक्तिहरूलाई मात्र तोक्नुहोस्।
सबै SEQRITE र क्विक हिलका ग्राहकहरूलाई निम्न हस्ताक्षरहरू मार्फत यस जोखिमलाई लक्षित गर्ने कुनै पनि शोषणबाट सुरक्षित गरिएको छ:
- HTTP/CVE-2023-1159!VK.47550
- HTTP/CVE-2023-1159!VK.47551
- HTTP/CVE-2023-1159!VK.47552
सह-लेखक:
अञ्जली राजकुमार राउत



