تصحيح الثغرات في تبعيات npm/gem في discourse

تتطلب مؤسستنا منا إصلاح جميع الثغرات الأمنية العالية/الحرجة في صور الدوكر الخاصة بنا، قبل أن نتمكن من نشرها في بيئة الإنتاج. حاليًا، لدينا عدد قليل من الثغرات في بناء الـ discourse الخاص بنا، والذي يعتمد على discourse/base:2.0.20251008-0017-web-only، ونحن نحاول إصلاحها إن أمكن. فيما يلي قائمة بالثغرات الأمنية التي نحتاج إلى إصلاحها.

vuln-report-opencves.txt (2.3 KB)

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

أيضًا، لاحظت وجود العديد من الثغرات المتعلقة بـ golang. هل يستخدم الـ discourse لغة golang بأي شكل من الأشكال أثناء وقت التشغيل، أم يمكننا إزالتها تمامًا من الصورة النهائية؟ وينطبق الشيء نفسه على python أيضًا.

إعجاب واحد (1)

أعتقد أنه يمكنك تجربتها ومعرفة ما يحدث. يقوم الكثير من الأشخاص بعملهم بدوام كامل في إدارة الأمان وإصدارات المكتبات.

ولكن انتظر. إذا كنت تنظر إلى صورة Docker الأساسية (أوه، ربما تقصد الصورة التي بنيتها؛ لا يمكنني تحديد ذلك تمامًا)، فأعتقد أن مهمتك مستحيلة، حيث يتم إدارة الكثير من هذه الأشياء في مصدر Discourse. على سبيل المثال، هذا الالتزام يرقّي Rack إلى 2.2.20. الإصدار في صورة Docker الأساسية لا يهم. ربما تريد بناء صورتك باستخدام launcher ثم معرفة إصدارات الأشياء التي لديك. يمكنك بعد ذلك إضافة بعض YAML لإزالة go و python، على سبيل المثال.

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

إعجاب واحد (1)

عذرًا لعدم وضوحي.

تبدأ عملية البناء الحالية لدينا بصورة discourse الأساسية المذكورة في الرسالة السابقة، ثم نقوم بتشغيل برنامج نصي، وهو مجرد خطوة تمهيدية لعملية التثبيت المدعومة (البرنامج النصي المشغل)، ولكن دون تشغيل الخطوات التي تتطلب اتصالاً نشطًا بـ redis/db.

لذلك، تفترض خطوة التمهيد تثبيت جميع تبعيات ruby وتبعيات npm الخاصة بـ discourse. الإصدارات التي تظهر في قائمة الثغرات هي في الغالب تبعيات تطبيق discourse نفسه.

لقد قمت أيضًا ببعض البحث واكتشفت أن تبعيات golang التي يتم تمييزها تأتي من تبعية npm تسمى esbuild، والتي يتم بناؤها باستخدام golang. الإصدار الذي يستخدمه من go يحتوي على ثغرة في المكتبة القياسية، والتي يتم تمييزها. لذلك أعتقد أن حل هذه المشكلة سيتطلب إعادة تجميع تلك المكتبة، لذلك لست متأكدًا مما إذا كان الأمر يستحق الجهد.

ولكن الثغرات الأخرى هي إما تبعيات ruby/npm مباشرة أو تبعيات متعدية لـ discourse. كان سؤالي بشكل أساسي حول تحديث إصدارات تلك التبعيات، قبل تثبيتها مباشرة. أفهم أنه سيكون من الصعب على مطوري discourse العمل على إصلاح تلك الثغرات. كنت أحاول فقط فهم ما إذا كانت هناك طريقة للتحقق مما إذا كان “الترقية” تسبب مشكلة أم لا، حيث كان تخميني هو أن بعض التبعيات قد تسبب مشاكل فقط في مسارات معينة من التعليمات البرمجية.

إعجاب واحد (1)