
ثغرة قبول بيانات غير موثوقة غريبة مع بيانات موثوقة في Nuxt3
مستودع لإعداد بيئة الثغرة الأمنية لتسميم ذاكرة التخزين المؤقت في nuxt3 >=3.0.0 <3.16.0
عند وجود CDN أمام خادم nuxt، حيث يخزن CDN المسار فقط (باستثناء استعلامات URL) كمفتاح للذاكرة المؤقتة، يؤدي الطلب /?/_payload.json إلى تخزين المسار / فقط كمفتاح، مما يتسبب في أن المستخدم الآخر الذي يرسل طلبًا إلى / يتلقى استجابة _payload.json من الذاكرة المؤقتة بدلاً من الصفحة العادية.
إذا أرسل المهاجم طلبات إلى /?/_payload.json بشكل دوري (عند انتهاء صلاحية الذاكرة المؤقتة)، يمكن أن يؤدي ذلك إلى ثغرة DoS حيث لا يمكن للمستخدمين الآخرين الحصول على الصفحات العادية.
https://preo123.tistory.com/19
git clone https://github.com/jiseoung/CVE-2025-27415-PoC.git
cd CVE-2025-27415-PoC
docker-compose up --build
'/' : صفحة لتوجيه تسميم الذاكرة المؤقتة
عند إرسال طلب إلى http://localhost/?/_payload.json فعليًا، يتم إنشاء ذاكرة مؤقتة للمسار '/'، ثم عند الوصول إلى http://localhost/، لا يتم إرجاع استجابة الصفحة '/' بل يتم إرجاع محتوى _payload.json المخزن كـ JSON.
'/ex' : صفحة تنفذ هجوم تسميم الذاكرة المؤقتة تلقائيًا
Target Origin : المسار الذي سيتم تنفيذ هجوم تسميم الذاكرة المؤقتة عليه
في هذه البيئة، يجب استخدام حاوية nginx (nuxt-nginx) على المضيف، لأن خادم الأتمتة مبني على Flask في حاوية أخرى، وإرسال الطلبات إلى localhost سيتم تفسيرها على أنها localhost للحاوية نفسها.
Cache Interval : الفترة الزمنية (بالثواني) لإرسال الطلبات. يجب ضبطها أقل قليلاً من فترة انتهاء صلاحية ذاكرة CDN.
في هذه البيئة، يتم تخزين الطلبات في الذاكرة المؤقتة لمدة 60 ثانية.