# باحث في PortSwigger يخترق 6 من 8 مكتبات لتنقية ملفات SVG بثغرات أبسطها حالة الأحرف

> **المغزى:** المغزى: مكتبة التنقية والمتصفح قد يقرآن الملف نفسه فيريان شيئين مختلفين، وهذا الفرق وحده كافٍ لتمرير سكربت عبر صورة رفعها مستخدم.

- المصدر: المغزى (https://almaghza.com/a/2026-10-28-svg-sanitizers-six-of-eight-bypassed/)
- التاريخ: 17 جمادى الأولى - 28 أكتوبر 2026 (2026-10-28)
- القسم: أمن سيبراني
- الوسوم: SVG، الثغرات الأمنية، الأمن السيبراني

نشر الباحث Gareth Heyes من PortSwigger Research في 27 أكتوبر 2026 بحثًا بعنوان Scalable Vector Grief، اختبر فيه 8 مكتبات مخصصة لتنقية ملفات SVG، ونجح في تجاوز 6 منها.

ويخص هذا كل منتج يقبل صورة من المستخدم، سواء كانت صورة حساب أو شعارًا أو أيقونة. فملف SVG ليس صورة بالمعنى المعتاد، بل ملف XML يمكنه أن يحمل سكربتات وevent handlers وعناصر HTML. لذلك تمرّره المنتجات عادة على مكتبة تنقية قبل عرضه.

أبسط الثغرات في البحث تتعلق بحالة الأحرف. فالمتصفح، وهو يقرأ ملف SVG، يحوّل اسم العنصر foreignobject إلى شكله الصحيح foreignObject بحرف كبير في وسطه. أما مكتبة mattkrick/sanitize-svg فكانت تبحث عن الاسم بأحرف صغيرة، فلا تجده، ويمر الملف بما يحمله. المكتبة والمتصفح يقرآن الملف نفسه ويريان شيئين مختلفين، وهذا الفرق هو الثغرة.

وفي Firefox لم يكن محتوى الملف ضروريًا أصلًا. وضع الباحث ملف التنسيق في response header اسمه Link، وترك جسم الملف XML سليمًا تمامًا، فعمل السكربت. ومعنى ذلك أن فحص محتوى الملف لا يكفي إن بقيت الـ headers المرافقة له مفتوحة. وفي Safari، أدى استيراد ملف GIF كأنه SVG عبر العنصر use إلى تجاوز cloudflare/svg-hush وjams2/py-svg-hush وbgalek/safe-svg.

ويذكر البحث مكتبتين اجتازتا كل ما فيه دون خرق: DOMPurify من cure53، وsvg-sanitizer من darylldoyle. وبالنسبة للفرق التي تكتب بنفسها التحقق من الملفات المرفوعة، يصبح السؤال عن المكتبة المستخدمة، وعن الـ headers التي تُرسل مع الملف، وعن خيار تحويل SVG إلى PNG على الخادم.

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

## المصادر

- [بحث Scalable Vector Grief من PortSwigger Research](https://portswigger.net/research/scalable-vector-grief)
- [مكتبة DOMPurify على GitHub](https://github.com/cure53/DOMPurify)
- [مكتبة svg-sanitizer على GitHub](https://github.com/darylldoyle/svg-sanitizer)
