ضعف في RubyGems.org ، مما يسمح باستبدال حزم الآخرين

تم التعرف على ثغرة خطيرة (CVE-2022-29176) في مستودع حزم RubyGems.org الذي يسمح ، بدون سلطة مناسبة ، باستبدال حزم بعض الأشخاص الآخرين في المستودع عن طريق بدء سحب حزمة شرعية وتحميل ملف آخر باستخدام نفس الاسم ورقم الإصدار بدلاً من ذلك.

لاستغلال الثغرة بنجاح ، يجب استيفاء ثلاثة شروط:

  • لا يمكن تنفيذ الهجوم إلا على الحزم التي تحتوي على حرف الواصلة في أسمائها.
  • يجب أن يكون المهاجم قادرًا على وضع حزمة جوهرة مع جزء من الاسم يصل إلى حرف الواصلة. على سبيل المثال ، إذا كان الهجوم ضد حزمة "rails-html-sanitizer" ، فيجب على المهاجم وضع حزمة "rails-html" الخاصة به في المستودع.
  • يجب أن تكون الحزمة التي يتم مهاجمتها قد تم إنشاؤها في آخر 30 يومًا أو لم يتم تحديثها لمدة 100 يوم.

سبب الثغرة الأمنية هو خطأ في معالج الإجراء "yank" ، والذي يتعامل مع جزء الاسم بعد الواصلة على أنه اسم النظام الأساسي ، مما جعل من الممكن بدء إزالة الحزم الأجنبية التي تتطابق في جزء من اسم ما يصل إلى حرف الواصلة. على وجه الخصوص ، تم استخدام 'find_by! (full_name: "# {rubygem.name} - # {slug}")' في كود معالج العملية "yank" للعثور على الحزم ، بينما تم تمرير المعلمة "slug" بواسطة مالك الحزمة لتحديد الإصدار المراد إزالته. يمكن لمالك الحزمة "rails-html" تحديد "sanitizer-1.2.3" بدلاً من الإصدار "1.2.3" ، مما قد يتسبب في تطبيق العملية على "rails-html-sanitizer-1.2.3" لشخص آخر " طَرد.

تم تحديد المشكلة بواسطة باحث أمني كجزء من برنامج مكافأة HackerOne للعثور على مشكلات أمنية في مشاريع مفتوحة المصدر معروفة. تم إصلاح المشكلة في RubyGems.org في 5 مايو ، ووفقًا للمطورين ، لم يتعرفوا بعد على آثار استغلال الثغرة الأمنية في السجلات على مدار الثمانية عشر شهرًا الماضية. في الوقت نفسه ، تم إجراء تدقيق سطحي فقط حتى الآن ، ومن المقرر إجراء تدقيق أعمق في المستقبل.

للتحقق من مشاريعك ، يوصى بتحليل محفوظات العمليات في ملف Gemfile.lock. يتم التعبير عن النشاط الضار في وجود تغييرات بنفس الاسم والإصدار ، أو تغيير النظام الأساسي (على سبيل المثال ، عند gemname-1.2.3 .1.2.3 يتم تحديث الحزمة إلى gemname-XNUMX-java). كحل بديل ضد انتحال الحزمة المخفية في أنظمة التكامل المستمر أو عند نشر المشاريع ، يتم تشجيع المطورين على استخدام Bundler مع خيارات "- المجمدة" أو "- النشر" لربط التبعيات.

المصدر: opennet.ru

إضافة تعليق