
استشارة إفصاح مسؤول عن CVE-2026-79294، وهو XSS مخزّن في معاينة HTML artifact الخاصة بـ Moonshot AI Kimi عبر عرض Share العام مما يتيح سرقة رمز الجلسة والاستيلاء على الحساب.
CVE-2026-79294 — ثغرة XSS مخزّنة في معاينة قطعة HTML الفنية في Moonshot AI Kimi، تُنفَّذ عبر عرض المشاركة العام، ما يؤدي إلى تسريب رمز الجلسة وإثبات الاستيلاء على الحساب. إشعار إفصاح مسؤول.
| المورّد / المنتج | Moonshot AI — Kimi |
| المكوّنات | عرض معاينة قطعة HTML الفنية؛ عرض المشاركة العام |
| موطن الضعف | CWE-79 — عدم تحييد المدخلات بشكل صحيح أثناء توليد صفحة الويب |
يعرض Kimi قطع HTML الفنية المولّدة من النموذج في لوحة معاينة داخل أصل التطبيق نفسه، دون تحييد السكربت. ومشاركة محادثة تنشر تلك القطعة الفنية على رابط مشاركة عام، لذا يعمل السكربت الذي كتبه حساب ما داخل متصفح أي شخص يفتح الرابط.
قيم الجلسة التي يعتمد عليها Kimi محفوظة في localStorage، وبالتالي يمكن لذلك السكربت قراءتها:
access_token
refresh_token
msh_user_id
وبالتالي لا يتوقف تنفيذ السكربت عند حد تنفيذ السكربت. يمكن قراءة تلك القيم الثلاث من متصفح الضحية، وإرسالها إلى أي مكان، وإعادة تشغيلها للحصول على جلسة موثّقة بصفة تلك الضحية.
حساب المهاجم → قطعة فنية تحتوي سكربت تسريب → مشاركة عامة
→ الضحية يفتح الرابط → يعمل السكربت في أصل Kimi
→ تصل قيم localStorage الثلاث إلى المهاجم
→ يُعاد تشغيلها في متصفح نظيف → مصادَق بصفة الضحية
يحتاج المهاجم إلى حساب عادي. ولا تحتاج الضحية إلا إلى فتح رابط مشاركة وهي مسجّلة الدخول — وهذا هو الغرض من روابط المشاركة.
| ما لوحظ | كيف |
|---|---|
| يعمل السكربت في متصفح الضحية | وصل طلب إلى نقطة نهاية المهاجم، صادرًا من جلسة الضحية |
| القيم الثلاث قابلة للقراءة بواسطة السكربت | كانت القيم الثلاث جميعها موجودة في جسم ذلك الطلب |
| القيم تصادق على نفسها بنفسها | كُتبت في متصفح لم يسجّل الدخول إلى Kimi قط؛ وبعد إعادة التحميل، أصبح ذلك المتصفح يحمل جلسة موثّقة |
| القيم هي السبب | الضبط: المتصفح نفسه، مع حذف القيم، إعادة تحميل — بقي غير موثّق |
كلا الحسابين المعنيين أنشأهما الباحث وأدارهما. ولم يُ accessed أي بيانات طرف ثالث في أي مرحلة.
السلسلة موثّقة أعلاه بالكامل. الحمولة العاملة ونقطة النهاية المستقبِلة محجوبتان — فنشرهما سيسلّح الهجوم بدلًا من وصفه.
تأخذ مطالبة القطعة الفنية الشكل التالي:
Generate an HTML page that reads the three localStorage values above
and POSTs them to <attacker endpoint>.