Skip to content

Security ar

Hammad Maqbool edited this page Oct 29, 2026 · 1 revision

English · 简体中文 · 繁體中文 · Español · العربية · Français · Português (Brasil) · Deutsch · हिन्दी · 日本語 · 한국어 · Русский · Bahasa Indonesia · Türkçe · Italiano · Tiếng Việt

الأمان في docxi: الإبلاغ عن المشكلات والتعامل مع المدخلات غير الموثوقة

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

الإبلاغ عن ثغرة

يُرجى عدم الإبلاغ عن المشكلات الأمنية في البلاغات (issues) العامة، بل أرسلها بالبريد الإلكتروني إلى عناوين الصيانة المذكورة في docxi.gemspec. اذكر إصدار docxi وطريقة مختصرة لإعادة إنتاج المشكلة.

الترقية من 0.0.x

يمرر docxi 0.0.x سلاسل مسارات الصور إلى Kernel#open. وتنفّذ Kernel#open أي سلسلة تبدأ بالرمز | كأمر shell، لذا فمن يتحكم في مسار صورة يستطيع تشغيل أوامر على خادمك. يفتح الإصدار 0.1.0 الملفات باستخدام File.open وينزّل عناوين URL باستخدام URI#open، ولا ينفّذ أي منهما أوامر.

المدخلات غير الموثوقة

تمرير النص آمن. يُكتب النص ومحتوى الجداول والسلاسل الأخرى كنص XML أو كقيم سمات تُهرِّبها nokogiri. لا يمكن لمدخلات المستخدمين إضافة عناصر إلى المستند.

مصادر الصور تحتاج إلى حذر. تقبل add_media:

المصدر ما تفعله docxi
كائن IO فتحته بنفسك تقرؤه
مسار ملف تقرأ ذلك الملف من قرص خادمك
عنوان URL من نوع http أو https أو ftp تنزّله من خادمك

إذا كان المستخدم يستطيع اختيار المسار، فقد يحصل على أي ملف قابل للقراءة على خادمك، مثل ملفات الإعدادات أو المفاتيح، مُضمَّنًا في المستند. وإذا كان يستطيع اختيار عنوان URL، فسيطلبه خادمك، وقد يصل ذلك إلى عناوين داخلية (تزوير الطلبات من جانب الخادم، SSRF). مرّر كائن IO فتحته بنفسك، أو اسمح فقط بمسارات ومضيفين معروفين.

الارتباطات التشعبية تشير إلى أي مكان يحدده عنوان URL. تحقق من عناوين URL التي يقدمها المستخدمون قبل تمريرها إلى add_hyperlink.

كيف تُحمى الإصدارات

  • تُنشر الإصدارات من GitHub Actions باستخدام النشر الموثوق (trusted publishing) في RubyGems، لذا لا يُخزَّن أي مفتاح API في المستودع.
  • تضبط البيانات الوصفية للحزمة الخيار rubygems_mfa_required، لذا تتطلب عمليات الدفع التي تستخدم مفتاح API شخصيًا المصادقة متعددة العوامل.

صفحات ذات صلة


→ الصفحة الرئيسية للويكي · README

Clone this wiki locally