ثغرة XSS بـ Vue I18n: escapeParameter ما بيحمي srcdoc، حدّث لـ 11.4.14

Vue I18n مع escapeParameter بينضّف الترجمات، بس ما بيعالج srcdoc تبع iframe، فترجمة بتنعرض بـ v-html ممكن تشغّل سكربت بموقعك. الإصلاح بـ 11.4.14.

نُشر في دقيقتين قراءة#أمن التطبيقات#تطوير الويب#تحديثات أمنية

إذا موقعك Vue وبيعرض ترجمات Vue I18n كـ HTML، في ثغرة XSS بتمرق من التنضيف يلي فاكره بيحميك. هون بتعرف إذا تطبيقك متأثر، وكيف تصلّحه.

شو الثغرة بـ Vue I18n؟

ثغرة Vue I18n هي إنو الخيار escapeParameter بينضّف الترجمات، فبيرمّز الأقواس وبيعطّل معالجات الأحداث، بس ما بيعالج الخاصية srcdoc تبع <iframe>. فترجمة فيها srcdoc بتقدر تشغّل سكربت بصفحتك.

الـ XSS هو إنو مهاجم يشغّل كود JavaScript من عنده جوّا موقعك، بنفس صلاحيات صفحتك.

الإرشاد بقاعدة ثغرات GitHub اسمه GHSA-83rm-6c8r-g728، ورقم الثغرة CVE-2026-118257. تقييمها عالي: 7.2 على CVSS 3.1.

ليش srcdoc بيفلت من التنضيف؟

السبب إنو المتصفح بيفك مراجع الحروف جوّا srcdoc، وبعدين بيقرا يلي طلع كصفحة كاملة جوّا الـ iframe، من نفس أصل موقعك. يعني الأقواس يلي التنضيف رمّزها بترجع أقواس حقيقية هونيك.

والإرشاد بيقول إنو هالثغرة بتتجاوز إصلاح ثغرة قبلها، CVE-2025-53892، يلي هو أصلاً ضاف دالة التنضيف.

هل تطبيقي متأثر؟

تطبيقك متأثر إذا الشروط هدول مجتمعين:

  1. نسختك من النسخ المتأثرة: من 11.1.10 لحد قبل 11.4.14، أو 9.14.5 أو 10.0.8 أو 12.0.0-alpha.4.

  2. مفعّل escapeParameter (أو escapeParameterHtml بالـ Legacy API).

  3. بتعرض الترجمة كـ HTML، متل بـ v-html.

  4. في شي بالترجمة جاي من مصدر ما بتثق فيه: قيمة من المستخدم بتنحط جوّا srcdoc، أو نص ترجمة جزء منه مش منك، متل ترجمات بيكتبها متطوعين.

الحزم المتأثرة هي vue-i18n وpetite-vue-i18n وحزم @intlify يلي تحتها.

ومقالاتنا عن واجهات المواقع ومكتباتها بمكان واحد: تطوير الويب.

كيف بتصلّحها؟

حدّث vue-i18n لـ 11.4.14، أو لـ 12.0.0-alpha.5 إذا إنت على نسخة 12 التجريبية. الإصلاح بيخلّي التنضيف يعالج srcdoc متل ما بيعالج معالجات الأحداث.

npm ls vue-i18n
npm install vue-i18n@11.4.14

إذا إنت على 9 أو 10، ما في إصلاح: الإرشاد بيقول إنهن ما عاد إلهن دعم، وبينصح بالانتقال لـ 11.

ولحد ما تحدّث، الإرشاد بيعطي حلين مؤقتين:

  • اعرض الترجمات يلي ممكن يكون فيها شي من برّا بـ <i18n-t> بدل v-html. العرض بـ <i18n-t> مش متأثر لأنه ما بيعرض الترجمة كـ HTML.

  • ما تحط srcdoc بنصوص الترجمة، وما تمرّق قيم جوّاه.

من وين تبلّش هلق؟

بلّش بنسختك وبالأماكن يلي بتعرض فيها ترجمات كـ HTML.

  1. شغّل npm ls vue-i18n وشوف إذا نسختك من النسخ المتأثرة.

  2. دوّر بكودك على v-html جنب $t أو t(، وعلى escapeParameter.

  3. حدّث لـ 11.4.14، وبدّل v-html بـ <i18n-t> وين الترجمة فيها قيم من المستخدم.

وإذا بدك حدا يدوّر على ثغرات XSS بواجهة موقعك متل ما بيدوّر عليها مهاجم، هاد شغل مُحَصَّن.

ومقالات أمان التطبيقات كلها بمكان واحد: أمن التطبيقات.

أسئلة شائعة

أنا على Vue I18n 9 أو 10، في إصلاح إلي؟

لأ. الإرشاد بيقول إنو النسختين 9 و10 ما عاد في إلهن دعم وما رح ينصلّحوا، والحل الانتقال لـ 11.

إذا بعرض الترجمات بـ i18n-t، أنا متأثر؟

لأ. الإرشاد بيقول إنو العرض بـ i18n-t مش متأثر، لأنه ما بيعرض الترجمة كـ HTML.

ليش ثغرة جديدة إذا escapeParameter انصلّح قبل؟

لأنو هالثغرة بتتجاوز الإصلاح يلي انعمل لـ CVE-2025-53892. داك الإصلاح ما كان بيعالج srcdoc.

شارك المقال

نسخة Markdown

مقالات أخرى