Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-27621 — CVE-2026-27621 - يحتوي TypiCMS Core على برمجة نصية مخزنة عبر المواقع (XSS) عبر رفع ملفات SVG | Kitploit
أدوات/GitHubGitHub/lukasz-rybak/cve-2026-27621
تحليل الثغرات الأمنيةاستغلال تطبيقات الويبأمن الويبالأوراق والأبحاثالتعلم والتعليم
GitHublukasz-rybak/cve-2026-27621

CVE-2026-27621

CVE-2026-27621 - يحتوي TypiCMS Core على برمجة نصية مخزنة عبر المواقع (XSS) عبر رفع ملفات SVG

عرض المستودع
1منذ 5 أشهرلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

CVE-2026-27621: TypiCMS Core يحتوي على ثغرة تخزين البرمجة النصية عبر المواقع (XSS) عبر رفع ملفات SVG

نظرة عامة

الحقلالتفاصيل
معرف CVECVE-2026-27621
الخطورةمتوسطة
النشرة الأمنيةعرض النشرة
اكتشفهاLukasz Rybak

المنتجات المتأثرة

  • typicms/core (الإصدارات: < 16.1.7)

تصنيف CWE

  • CWE-79: عدم تحييد المدخلات بشكل صحيح أثناء توليد صفحة الويب ('البرمجة النصية عبر المواقع')

التفاصيل

I. الملخص

توجد ثغرة تخزين البرمجة النصية عبر المواقع (Stored XSS) في وحدة رفع الملفات في TypiCMS. يسمح التطبيق للمستخدمين الذين لديهم صلاحيات رفع الملفات برفع ملفات SVG. وعلى الرغم من وجود تحقق من نوع MIME، إلا أن محتوى ملف SVG لا يتم تنظيفه. يمكن للمهاجم رفع ملف SVG مُعدّ خصيصًا يحتوي على كود JavaScript خبيث. عندما يقوم مستخدم آخر (مثل مسؤول) بعرض هذا الملف أو الوصول إليه عبر التطبيق، يتم تنفيذ السكربت في متصفحه، مما يؤدي إلى اختراق جلسة ذلك المستخدم.

وتتفاقم المشكلة بسبب خطأ في منطق تحليل SVG، والذي يمكن أن يسبب خطأ 500 إذا كان ملف SVG المرفوع لا يحتوي على خاصية viewBox. ومع ذلك، فإن هذا لا يخفف من ثغرة XSS، إذ يمكن للمهاجم بسهولة تضمين خاصية viewBox صالحة في حمولته الخبيثة.

II. تفاصيل الثغرة

  • نوع الثغرة: تخزين البرمجة النصية عبر المواقع (Stored XSS) (CWE-79)
  • المكوّن المتأثر: TypiCMS\Modules\Core\Http\Requests\FileFormRequest.php و TypiCMS\Modules\Core\Services\FileUploader.php.
  • الإصدارات المتأثرة: <= 16.0.5

تنبع الثغرة من نقطتين رئيسيتين:

  1. التحقق المتساهل من الملفات: يقوم FileFormRequest بإدراج svg صراحةً في القائمة البيضاء لأنواع MIME المسموح بها للرفع.
  2. عدم تنظيف المحتوى: تقوم خدمة FileUploader بحفظ ملف SVG على الخادم دون تحليل محتواه وتنظيفه لإزالة العناصر التي يحتمل أن تكون خطيرة مثل وسوم <script> أو معالجات الأحداث on*.

عند ضبط قرص نظام الملفات الافتراضي على public، يتم تخزين ملف SVG المرفوع في دليل متاح للعموم، مما يجعل الوصول إلى الملف عبر رابط مباشر وتشغيل حمولة XSS أمرًا تافهًا.

III. إثبات المفهوم (PoC)

  1. إنشاء ملف SVG خبيث: أنشئ ملفًا باسم malicious.svg بالمحتوى التالي. تم تضمين خاصية viewBox لتجاوز خطأ التحليل في التطبيق.

    root@kitploit:~
    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
        <script>
            // A simple PoC to demonstrate the vulnerability
            alert('XSS in TypiCMS! Your session cookie is: ' + document.cookie);
        </script>
        <text x="10" y="50">If you see this, the script has run.</text>
    </svg>
    
  2. رفع الملف الخبيث:

    • سجّل الدخول إلى لوحة تحكم TypiCMS كمستخدم لديه صلاحيات رفع الملفات.
    • انتقل إلى وحدة "الملفات" (مثل /admin/files).
    • ارفع ملف malicious.svg. سيقبل التطبيق الملف ويخزنه. image
image
  1. تشغيل XSS:
    • سيوفر التطبيق رابطًا عامًا للملف المرفوع، عادةً بتنسيق http://<your-site>/storage/files/malicious.svg.
    • أي شخص ينتقل إلى هذا الرابط سيتم تنفيذ JavaScript المضمّن في متصفحه.
    • يمكن للمهاجم إرسال هذا الرابط إلى مستخدم متميز (مثل مسؤول). عندما ينقر المسؤول على الرابط، يمكن سرقة ملفات تعريف الارتباط الخاصة بالجلسة، أو يمكن للمهاجم تنفيذ إجراءات نيابةً عنه.
image
image

IV. الأثر

الاستغلال الناجح لهذه الثغرة يسمح للمهاجم بتنفيذ JavaScript عشوائي في سياق متصفح الضحية. وعلى الرغم من أن استخدام علامة HttpOnly على ملفات تعريف الارتباط الخاصة بالجلسة يمنع السرقة المباشرة لمعرف الجلسة عبر document.cookie، إلا أن المهاجم لا يزال قادرًا على تحقيق اختراق كامل لحساب الضحية من خلال تنفيذ إجراءات نيابةً عنه.

يشمل الأثر:

  • الاستيلاء على الحساب عبر تزوير الإجراءات: يمكن لسكربت المهاجم إرسال طلبات مصادقة إلى واجهة برمجة التطبيقات (API) الخاصة بالتطبيق من متصفح الضحية. وهذا يسمح للمهاجم بتنفيذ أي إجراء مفوض للضحية، مثل:

    • إنشاء حساب مسؤول جديد للمهاجم.
    • تغيير البريد الإلكتروني وكلمة المرور الخاصة بالضحية.
    • حذف أو تعديل كل المحتوى والمستخدمين والإعدادات.
  • كشف المعلومات الحساسة: يمكن للسكربت قراءة محتوى أي صفحة تعرضها الضحية داخل لوحة التحكم. ويشمل ذلك قوائم المستخدمين (مع الأسماء وعناوين البريد الإلكتروني)، وإعدادات التطبيق الخاصة، وغيرها من البيانات الحساسة، التي يمكن بعد ذلك إرسالها إلى خادم يتحكم فيه المهاجم.

  • التصيد والهندسة الاجتماعية: يمكن للسكربت التلاعب بواجهة لوحة التحكم لعرض نماذج تسجيل دخول مزيفة لخداع المستخدم لإعادة إدخال بيانات اعتماده، أو إعادة توجيهه إلى موقع ويب خبيث.

  • تسجيل ضغطات المفاتيح: يمكن للسكربت التقاط أي معلومات يكتبها الضحية في النماذج على الصفحة المخترقة.

نظرًا لأن المهاجم يمكنه تنفيذ أي إجراء بصفته مسؤولًا مصادقًا، فإن هذه الثغرة تؤدي فعليًا إلى اختراق كامل للتطبيق، حتى دون الوصول المباشر إلى ملف تعريف ارتباط الجلسة. الخطر مرتفع.

V. التصحيحات والتخفيفات الموصى بها

يوصى باتباع نهج الدفاع العميق للتخفيف من هذه الثغرة.

  1. الإصلاح الأساسي: تنظيف محتوى SVG: الحل الأكثر متانة هو تنظيف ملفات SVG عند الرفع. قبل حفظ الملف، يجب تحليله لإزالة جميع العناصر التي يحتمل أن تكون خطرة، بما في ذلك وسوم <script> و<style> و<foreignObject> وجميع سمات الأحداث on*. يمكن تحقيق ذلك باستخدام مكتبة مخصصة لتنظيف SVG.

  2. الإصلاح الثانوي: تعطيل رفع SVG: إذا لم تكن ميزة رفع SVG ميزة حاسمة للتطبيق، فإن الحل الأبسط والأكثر أمانًا هو تعطيلها تمامًا. يمكن القيام بذلك عن طريق إزالة 'svg' من قائمة أنواع MIME المسموح بها في TypiCMS\Modules\Core\Http\Requests\FileFormRequest.php.

    root@kitploit:~
    // In FileFormRequest.php
    // BEFORE:
    $fileRule = 'mimes:jpeg,gif,png,...,svg,...|max:...';
    
    // AFTER:
    $fileRule = 'mimes:jpeg,gif,png,...,pdf,...|max:...'; // Removed 'svg'
    
  3. التحصين - سياسة أمان المحتوى (CSP): قم بتنفيذ ترويسة سياسة أمان المحتوى (Content-Security-Policy) صارمة للتطبيق. يمكن لسياسة CSP مُعدّة جيدًا منع تنفيذ السكربتات المضمّنة، مما يخفف من أثر ثغرة XSS هذه.

  4. التحصين - تقديم محتوى المستخدم من نطاق منفصل: قدّم جميع الملفات التي يرفعها المستخدمون من نطاق منفصل بدون ملفات تعريف ارتباط (cookie-less). هذا إجراء أمني فعال للغاية يعزل المحتوى الذي ينشئه المستخدم عن التطبيق الرئيسي، ويمنع السكربتات من الوصول إلى ملفات تعريف ارتباط الجلسة أو التفاعل مع DOM الخاص بالتطبيق.

المراجع

  • https://github.com/TypiCMS/Core/security/advisories/GHSA-xfvg-8v67-j7wp
  • https://nvd.nist.gov/vuln/detail/CVE-2026-27621
  • https://github.com/TypiCMS/Core/commit/d480a0be1e8e7c0600bb9a325bb11920ee66497d
  • https://github.com/advisories/GHSA-xfvg-8v67-j7wp

إخلاء المسؤولية

تم الإبلاغ عن هذا CVE بشكل مسؤول وفقًا لممارسات الإفصاح المنسق عن الثغرات الأمنية. المعلومات الواردة هنا مخصصة للأغراض التعليمية والدفاعية فقط.

تنزيل الأداة