Spring4Shell - PoC
CVE - 2022 - 22965
प्रभावित संस्करण :
- Spring Framework संस्करण 5.3.0 से 5.3.17, 5.2.0 से 5.2.19 और पुराने संस्करण
- Java JDK 9
- Apache Tomcat संस्करण 10..0.20, 9.0.62 और 8.5.78 से नीचे
- पारंपरिक WAR के रूप में पैकेज किए गए एप्लिकेशन जिनमें spring-webmvc या spring-webflux निर्भरता है और जो अकेले एक स्टैंडअलोन Servlet कंटेनर पर तैनात हैं, प्रभावित होते हैं
विवरण
- समस्या को classLoader हेरफेर द्वारा बढ़ाया जा सकता है
- अनुचित डेटा बाइंडिंग जो अनुरोध पैरामीटर से ऑब्जेक्ट को आबाद करने के लिए उपयोग की जाती है (Request Mapping एनोटेशन), इस कमजोरी का कारण बनती है
- हमलावर मनमानी कक्षाएं लोड कर सकते हैं और मनमाना कोड इंजेक्ट कर सकते हैं जो एप्लिकेशन द्वारा निष्पादित किया जा सकता है
- एक समान कमजोरी (CVE-2010-1622) पहले खुलासा की गई थी और
class.classLoader और class.protectionDomain को प्रतिबंधित करने के लिए पैच लागू किए गए हैं
- लेकिन JDK9 ने एक नई विधि
class.getMethod() पेश की, जो class.module.classLoader का उपयोग करके class ऑब्जेक्ट की किसी भी चाइल्ड प्रॉपर्टी तक पहुंचने के लिए उस प्रतिबंध को बायपास करती है
प्रभाव
- इस कमजोरी का सफल शोषण कमजोर मशीन पर मनमाना कोड निष्पादन का कारण बन सकता है।
परीक्षण अनुप्रयोग
docker build . -t spring4shell-poc-app
या [gokul2/spring4shell-poc] से डॉकर इमेज प्राप्त करें
docker pull gokul2/spring4shell-poc-app
docker run -p 8080:8080 spring4shell-poc-app