CVE-2026-59931 in PhpSpreadsheet
الملخص
بحسب VulDB • 28/07/2026
PhpSpreadsheet هي مكتبة PHP خالصة لقراءة وكتابة ملفات الجداول الحسابية. في الإصدارات من 4.0.0 إلى 5.8.0، ومن 3.3.0 إلى 3.10.6، ومن 2.2.0 إلى 2.4.6، ومن 2.0.0 إلى 2.1.17، وفي جميع الإصدارات حتى بما فيها 1.30.5، يمكن تجاوز قائمة السماح (whitelist) للنطاقات في دالة WEBSERVICE() عبر إعادة توجيه HTTP (SSRF).
في الملف Calculation/Web/Service.php، تقوم الطريقة webService() بالتحقق من استضافة عنوان URL مقابل القائمة المحددة مسبقاً عبر Spreadsheet::setDomainWhiteList()، ثم تجلب المحتوى باستخدام file_get_contents($url, false, $ctx)؛ ونظراً لأن غلاف تدفق HTTP الخاص بـ PHP يتبع إعادة التوجيه 301/302 تلقائياً (حتى 20 نقلة)، ولا يتم التحقق من صحة الوجهة المعاد توجيهها إليها مرة أخرى، يمكن لمهاجم قادر على إحداث إعادة توجيه من نطاق موجود في القائمة البيضاء الوصول إلى عناوين URL تعسفية، بما في ذلك العناوين الداخلية.
يمكن للمهاجم القادر على رفع ملفات XLSX إلى تطبيق يستخدم setDomainWhiteList() وgetCalculatedValue() تحقيق SSRF بقراءة كاملة، حيث يعيد ما يصل إلى 32,767 بايت من جسم الاستجابة كقيمة محسوبة لخلية، مما يتيح استخراج بيانات التعريف السحابية (مفاتيح AWS/GCP/Azure عبر http://169.254.169.254/)، والوصول إلى الخدمات الداخلية فقط، وفحص المنافذ الداخلية (حيث لا يتم التحقق من صحة المنفذ).
تم إصلاح هذه المشكلة في الإصدارات 5.8.1 و3.10.7 و2.4.7 و2.1.18 و1.30.6.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.