
CVE-2018-1000529 के लिए प्रूफ-ऑफ-कॉन्सेप्ट: Grails Fields प्लगइन <=2.2.7 में संग्रहीत XSS। एक चलने योग्य Grails एप्लिकेशन के साथ कमजोरी का प्रदर्शन करता है और इसमें प्रकटीकरण समयरेखा शामिल है।
NVD CVE-2018-1000529: https://nvd.nist.gov/vuln/detail/CVE-2018-1000529
MITRE CVE-2018-1000529: https://cve.mitre.org/cgi-bin/cvename.cgi?name=2018-1000529
यह रिपॉजिटरी Grails टीम को जिम्मेदार प्रकटीकरण हेतु भेद्यता के एक प्रूफ ऑफ कॉन्सेप्ट को प्रदर्शित करने के लिए उपयोग किया गया था।
XSS भेद्यता Grails v3.3.5 और उससे नीचे का उपयोग करने वाले सभी प्रोजेक्ट्स में मौजूद है, क्योंकि वे सभी प्रभावित Grails Fields प्लगइन v2.2.7 और उससे नीचे शामिल करते हैं। इसे Grails Fields प्लगइन v2.2.8 में ठीक किया गया था, जिसका उपयोग Grails v3.3.6 में किया जा रहा है।
Grails v3.3.5 या उससे कम का उपयोग करने वाले सभी प्रोजेक्ट्स को कम से कम v3.3.6 में अपग्रेड करने या build.gradle में Grails Fields प्लगइन निर्भरता के संस्करण को v2.2.8 या उच्चतर परिभाषित करने की अनुशंसा की जाती है।
चूंकि Grails Fields प्लगइन का व्यापक रूप से Grails Scaffolding में उपयोग किया जाता है, Grails v3.3.5 और उससे नीचे का उपयोग करने वाले सभी स्कैफोल्ड किए गए एप्लिकेशन संभावित रूप से संवेदनशील हैं। हालांकि Grails में डिफ़ॉल्ट रूप से अच्छे XSS काउंटरमेजर्स मौजूद हैं, Grails Fields प्लगइन के टैग द्वारा प्रदर्शित किए जा रहे कोई भी डोमेन ऑब्जेक्ट जिनमें HTML या जावास्क्रिप्ट कोड होता है, एन्कोड या मान्य नहीं किए जाते हैं और ब्राउज़र द्वारा निष्पादित किए जाते हैं।
इस प्रोजेक्ट को क्लोन करें और फिर निम्न चलाकर एप्लिकेशन को स्थानीय रूप से प्रारंभ करें:
In a command prompt / powershell:
grailsw.bat run-app
In a terminal window:
./grailsw run-app
जब Grails एप्लिकेशन पूरी तरह से आरंभ हो जाता है, तो यह प्रदर्शित करेगा:
Grails application running at http://localhost:8080 in environment: development
myapp.TestController पर क्लिक करेंXSS टेक्स्ट के साथ एक जावास्क्रिप्ट अलर्ट डायलॉग खुलेगा।डोमेन ऑब्जेक्ट Test1 आरंभीकरण के दौरान बनाया जा रहा है और grails-app/init/myapp/BootStrap.groovy फ़ाइल में परिभाषित है।
भेद्यता न केवल तब मौजूद है जब ऑब्जेक्ट BootStrap के दौरान बनाया जा रहा है, बल्कि तब भी जब उपयोगकर्ता इनपुट द्वारा स्कैफोल्ड किए गए GUI में बनाया जा रहा है।
इसे Test1 ऑब्जेक्ट को हटाकर और नाम Test1<script>alert('XSS');</script> वाला एक नया Test ऑब्जेक्ट जोड़कर परीक्षण किया जा सकता है।
इस भेद्यता को शीघ्रता से हल करने के लिए Grails टीम को बहुत धन्यवाद, जिनमें शामिल हैं: