
الإفصاح عن CVE-2025-57298.
Kotaemon هو نظام أسئلة وأجوبة مفتوح المصدر يعتمد على RAG (التوليد المعزز بالاسترجاع) ويوفر واجهة ويب للاستعلام عن المستندات المرفوعة مثل ملفات PDF وWord وExcel.
توجد ثغرة تخزين للبرمجة النصية عبر المواقع (XSS) في مسار عرض المستندات في Kotaemon. يتم معالجة المحتوى الذي يتحكم به المستخدم بواسطة LLM وعرضه في واجهة الويب بعد تحويل markdown إلى HTML دون تعقيم مناسب، مما يسمح بحقن عناصر HTML التي يوفرها المهاجم بشكل دائم في الصفحة.
عند رفع مستند، يقوم النظام تلقائيًا بإطلاق طلب تلخيص (على سبيل المثال، "summary this file") كجزء من سير المعالجة العادي. نتيجة لذلك، يتم تمرير أي مستند مرفوع ضمنيًا عبر مسار تحليل وعرض markdown، مما يجعل الثغرة قابلة للاستغلال عبر رفع المستندات وحده دون الحاجة إلى تفاعل صريح من المستخدم.
الإصدارات التالية من Kotaemon مؤكدة الضعف:
kotaemon/blob/main/libs/ktem/ktem/utils/render.py
@staticmethod
def table(text: str) -> str:
"""Render table from markdown format into HTML"""
text = replace_mardown_header(text)
return markdown.markdown(
text,
extensions=[
"markdown.extensions.tables",
"markdown.extensions.fenced_code",
],
)
يعتمد التطبيق على الدالة markdown.markdown() لتحويل محتوى markdown الناتج عن LLM إلى HTML. ومع ذلك، يتم عرض مخرجات HTML المحولة مباشرة في المتصفح دون تعقيم HTML أو هروب المخرجات.
نتيجة لذلك، يتم تحويل بناء markdown الذي ينتج عناصر HTML خام—وأبرزها بناء الصورة ![]()—إلى HTML قابل للتنفيذ مثل وسم `` وتخزينه في مخرجات المحادثة.
"summary" means ""
تتيح القدرة على حقن عناصر HTML دائمة للمهاجمين:
/logout)يتطلب الاستغلال فقط رفع مستند ويحدث تلقائيًا أثناء التلخيص، دون حاجة إلى تفاعل إضافي من المستخدم.
قد يسمح عرض HTML غير المعقم بتنفيذ JavaScript عبر معالجات الأحداث اعتمادًا على سياق العرض للواجهة الأمامية.



تم إعداد هذا التقرير بواسطة minnggyuu. (Team 404 Not Found, WhiteHat School 3rd Cohort, South Korea)
البريد الإلكتروني: [email protected]
GitHub: https://github.com/minnggyuu