
CVE-2024-38819 Spring Framework path traversal vulnerability को प्रदर्शित करने वाला हैंड्स-ऑन लैब, जिसमें सुरक्षा शिक्षा के लिए कमजोर और पैच किए गए Spring Boot डिप्लॉयमेंट शामिल हैं।
यह CVE-2024-38819 के लिए एक क्लाउड फाउंड्री-रेडी स्प्रिंग बूट डेमो है, जो कार्यात्मक स्थैतिक संसाधन हैंडलिंग में एक स्प्रिंग फ्रेमवर्क पथ ट्रैवर्सल भेद्यता है।
CVE-2024-38819 को स्प्रिंग फ्रेमवर्क में पैच किया गया है, सीधे स्प्रिंग बूट में नहीं।
स्प्रिंग बूट डेमो में अभी भी महत्वपूर्ण है क्योंकि यह एप्लिकेशन द्वारा उपयोग किए जाने वाले स्प्रिंग फ्रेमवर्क डिपेंडेंसी संस्करणों का प्रबंधन करता है। दूसरे शब्दों में, स्प्रिंग बूट का एक मेंटेनेंस रिलीज़ आपके लिए फिक्स किए गए फ्रेमवर्क संस्करण को ला सकता है, लेकिन भेद्य कोड पथ और सुरक्षा फिक्स स्प्रिंग फ्रेमवर्क के वेबफ्लक्स/वेबएमवीसी कार्यात्मक स्थैतिक संसाधन हैंडलिंग में हैं।
ऐप एक छोटा ग्राहक दस्तावेज़ वॉल्ट UI प्रस्तुत करता है। सार्वजनिक दस्तावेज़ /files/** से WebFlux.fn RouterFunctions.resources(...) और FileSystemResource के साथ परोसे जाते हैं, जो स्प्रिंग सलाहकार में भेद्य स्थितियों से मेल खाता है। स्टार्टअप पर ऐप निर्माण करता है:
गुप्त ऐप द्वारा उत्पन्न होता है और इसमें कोई वास्तविक क्रेडेंशियल नहीं होते।
यह लैब जानबूझकर दोनों मोड में स्प्रिंग बूट को 3.3.4 पर रखता है और केवल प्रबंधित स्प्रिंग फ्रेमवर्क संस्करण बदलता है:
| मोड | स्प्रिंग बूट | स्प्रिंग फ्रेमवर्क | आर्टिफैक्ट |
|---|---|---|---|
| असुरक्षित | 3.3.4 | 6.1.13 | target/cve-2024-38819-vulnerable.jar |
| पैचयुक्त | 3.3.4 | 6.1.14 | target/cve-2024-38819-patched.jar |
patched Maven प्रोफाइल सेट करता है:
<spring-framework.version>6.1.14</spring-framework.version>
उस प्रोफाइल के बिना, स्प्रिंग बूट 3.3.4 स्प्रिंग फ्रेमवर्क 6.1.13 का प्रबंधन करता है, जो डेमो के लिए उपयोग किया जाने वाला असुरक्षित संस्करण है।
दोनों डेमो आर्टिफैक्ट्स बनाएं:
scripts/build-artifacts.sh
यह दो अलग-अलग तैनात करने योग्य जार बनाता है:
target/cve-2024-38819-vulnerable.jar
target/cve-2024-38819-patched.jar
mvn spring-boot:run
खोलें:
http://127.0.0.1:8080
सीमित प्रूफ चलाएं:
python3 scripts/prove-secret-exposure.py --expect vulnerable
अपेक्षित असुरक्षित परिणाम:
RESULT: असुरक्षित व्यवहार की पुष्टि हुई। नकली गुप्त को सार्वजनिक फ़ाइल रूट के बाहर से परोसा गया।
पैचयुक्त मोड चलाएं:
mvn -Ppatched spring-boot:run
फिर:
python3 scripts/prove-secret-exposure.py --expect patched
असुरक्षित पुश करें:
scripts/cf-push-vulnerable.sh
यह target/cve-2024-38819-vulnerable.jar को patch-your-spring-vulnerable के रूप में तैनात करता है।
अपने ऐप रूट के विरुद्ध प्रूफ चलाएं:
python3 scripts/prove-secret-exposure.py \
--target https://YOUR-VULNERABLE-ROUTE \
--allow-remote-demo \
--expect vulnerable
पैचयुक्त पुश करें:
scripts/cf-push-patched.sh
यह target/cve-2024-38819-patched.jar को patch-your-spring-patched के रूप में तैनात करता है।
वही प्रूफ चलाएं:
python3 scripts/prove-secret-exposure.py \
--target https://YOUR-PATCHED-ROUTE \
--allow-remote-demo \
--expect patched
सफाई:
cf delete patch-your-spring-vulnerable -f -r
cf delete patch-your-spring-patched -f -r