
هذا عرض توضيحي لـ Spring Boot جاهز لـ Cloud Foundry لـ CVE-2024-38819، وهي ثغرة اجتياز مسار (Path Traversal) في إطار Spring Framework في معالجة الموارد الثابتة الوظيفية.
CVE-2024-38819 يتم تصحيحها في Spring Framework، وليس مباشرة في Spring Boot.
يبقى Spring Boot مهمًا في العرض التوضيحي لأنه يدير إصدارات تبعيات Spring Framework المستخدمة من قبل التطبيق. بعبارة أخرى، يمكن لإصدار صيانة من Spring Boot أن يجلب لك إصدار Framework المُصحَّح، لكن مسار الكود المعرض والميزة الأمنية يكمنان في معالجة الموارد الثابتة الوظيفية في WebFlux/WebMvc الخاصة بـ Spring Framework.
يعرض التطبيق واجهة صغيرة لقبو مستندات العملاء. يتم تقديم المستندات العامة من /files/** باستخدام WebFlux.fn RouterFunctions.resources(...) مع FileSystemResource، وهو ما يطابق الشروط القابلة للاستغلال في نشرة Spring الأمنية. عند بدء التشغيل، يقوم التطبيق بإنشاء:
السر مولّد من التطبيق ولا يحتوي على أي اعتمادات حقيقية.
يبقي هذا المختبر عمدًا Spring Boot عند 3.3.4 في كلا الوضعين ويغيّر فقط إصدار Spring Framework المُدار:
| الوضع | Spring Boot | Spring Framework |
|---|
ملف تعريف Maven patched يحدد:
<spring-framework.version>6.1.14</spring-framework.version>
بدون ملف التعريف هذا، يدير Spring Boot 3.3.4 إصدار Spring Framework 6.1.13، وهو الإصدار القابل للاستغلال المستخدم في العرض التوضيحي.
ابْنِ كلا مخرجَي العرض التوضيحي:
scripts/build-artifacts.sh
هذا ينشئ ملفي jar متميزين قابلين للنشر:
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: vulnerable behavior confirmed. The fake secret was served from outside the public file root.
شغّل الوضع المُصحَّح:
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
| المخرَج |
|---|
| قابل للاستغلال | 3.3.4 | 6.1.13 | target/cve-2024-38819-vulnerable.jar |
| مُصحَّح | 3.3.4 | 6.1.14 | target/cve-2024-38819-patched.jar |