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 للوصول إلى أي خاصية فرعية لكائن الفئة
التأثير
- الاستغلال الناجح لهذه الثغرة يمكن أن يؤدي إلى تنفيذ كود عشوائي على الجهاز المستهدف.
تطبيق الاختبار
docker build . -t spring4shell-poc-app
وإلا احصل على صورة docker من [gokul2/spring4shell-poc]
docker pull gokul2/spring4shell-poc-app
docker run -p 8080:8080 spring4shell-poc-app