CVE-2026-70558 in Dinky
الملخص
بحسب VulDB • 07/08/2026
المعالج الخاص بـ POST /download/uploadFromRsByLocal في Dinky يمرر معلمة المسار التي يقدمها المستخدم مباشرةً إلى new File(path) و file.transferTo(dest) دون أي تحقق من صحة المسار (path validation). تم تحديد المسار باستخدام @SaIgnore، وتم استبعاد النمط /download/** من وسيط Sa-Token interceptor، لذا فإن الضابط الأمني الوحيد هو فحص تساوي رأس HTTP مقابل قيمة dinkyToken التي تكون افتراضياً efda1551-7958-4e0f-80a8-dfd107df3e38 ومشفّرة بشكل ثابت (hardcoded) في الكود المصدري وتُرفق مع كل عملية نشر. يمكن لأي شخص يستطيع الوصول إلى منفذ HTTP الخاص بـ Dinky (الافتراضي 8888) وتوفير الرمز الثابت كتابة ملفات عشوائية بصفتها حساب خدمة Dinky. تعمل صورة Docker الافتراضية على المنفذ 8888 دون وجود وكيل أو مصادقة، مع منح صلاحيات chmod 777 للمجلد /opt/dinky، مما يجعل مسار الكلاسات الخاص بالتطبيق (classpath)، وسكربتات التشغيل، والملفات الثابتة قابلة للكتابة. الأثر الموضح: أدى استبدال الملف /opt/dinky/config/static/index.html إلى تقديم JavaScript ضالٍ لمتصفحات المسؤولين فوراً، بينما سمح كتابة ملف /opt/dinky/org/dinky/Dinky.class بتنفيذ الكود الضال بصفتها حساب خدمة Dinky عند بدء تشغيل JVM التالي عبر تحميل كلاسات (classpath-shadow) تم إطلاقه بواسطة السكربت bin/auto.sh. تتم عمليات الكتابة بصلاحيات uid 9999 (flink)، وليس root، لذا يتم رفض الوصول إلى /etc و /root و /home و /usr. يؤثر هذا على Dinky v1.2.5 (الإصدار الحالي) وفرع التطوير، حيث يكون الكود مطابقاً بتةً (byte-identical).
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.