آنها یک آسیب پذیری را در RubyGems.org کشف کردند که امکان جایگزینی بسته ها را فراهم می کرد

اخیراً این خبر منتشر شد یک آسیب پذیری حیاتی در شناسایی شد مخزن بسته rubygems.org (این آسیب پذیری قبلاً تحت CVE-2022-29176 فهرست شده است) که اجازه می دهد تا بدون مجوز مناسب، بسته های دیگران را جایگزین کنید در مخزن با حذف یک بسته قانونی و آپلود فایل دیگری با همان نام و شماره نسخه در جای خود.

ذکر شده است که این آسیب‌پذیری به دلیل وجود اشکال در کنترل‌کننده اکشن «yank» است، که بخشی از نام بعد از خط تیره را به عنوان نام پلتفرم در نظر می گیرد، که این امکان را فراهم می کند تا حذف بسته های خارجی که با بخشی از نام تا کاراکتر خط فاصله مطابقت دارند آغاز شود.

به ویژه در کد کنترل کننده عملیات "یانک"، تماس 'find_by!(name_full: "#{rubygem.name}-#{slug}")' برای جستجوی بسته ها استفاده شد، در حالی که پارامتر "slug" برای تعیین نسخه حذف شده به صاحب بسته ارسال شد.

صاحب بسته "rails-html" می توانست "sanitizer-1.2.3" را به جای نسخه "1.2.3" مشخص کند که باعث می شود این عملیات روی "rails-html-sanitizer-1.2.3" اعمال شود. بسته ″ از شخص دیگری. »

یک توصیه امنیتی برای Rubygems.org دیروز منتشر شد.

این مشاوره مربوط به اشکالی بود که به یک کاربر مخرب اجازه می داد تا سنگ های خاصی را استخراج کند و فایل های مختلفی را با نام، شماره نسخه و پلتفرم متفاوت آپلود کند.

بیایید نگاهی عمیق‌تر بیندازیم تا ببینیم در حین انجام فرآیند استخراج چه اشتباهی رخ داده است. به عنوان یک بهانه، بیایید سناریویی را تصور کنیم که در آن جواهری به نام "rails-html" با هدف دسترسی غیرمجاز به جواهر پرکاربرد "rails-html-sanitizer" ایجاد می کنیم.

ذکر شده است که سه شرط باید رعایت شود، به منظور بهره برداری موفقیت آمیز از این آسیب پذیری:

  • حمله فقط بر روی بسته هایی انجام می شود که یک کاراکتر خط فاصله در نام خود دارند.
  • یک مهاجم باید بتواند یک بسته جواهر با بخشی از نام تا کاراکتر خط فاصله قرار دهد. به عنوان مثال، اگر حمله علیه بسته "rails-html-sanitizer" باشد، مهاجم باید بسته "rails-html" خود را در مخزن قرار دهد.
  • بسته مورد حمله باید در 30 روز گذشته ایجاد شده باشد یا به مدت 100 روز به روز نشده باشد.

مشکل توسط یک محقق امنیتی شناسایی شد به عنوان بخشی از برنامه جایزه HackerOne برای یافتن مسائل امنیتی در پروژه های منبع باز شناخته شده.

مشکل در 5 می در RubyGems.org ثابت شد و به گفته توسعه دهندگان، هنوز آثاری از بهره برداری را شناسایی نکرده اند آسیب‌پذیری در گزارش‌ها در 18 ماه گذشته. در عین حال، تاکنون فقط یک ممیزی سطحی انجام شده و در آینده ممیزی عمیق تری در نظر گرفته شده است.

در حال حاضر، ما معتقدیم که این آسیب پذیری مورد سوء استفاده قرار نگرفته است.

RubyGems.org زمانی که نسخه جواهر منتشر یا حذف می شود، ایمیلی برای همه دارندگان جواهر ارسال می کند. ما هیچ ایمیل پشتیبانی از صاحبان جواهر دریافت نکرده‌ایم که نشان دهد جواهر آنها بدون مجوز استخراج شده است.

ممیزی تغییرات جواهر در 18 ماه گذشته هیچ نمونه ای از استفاده مخرب از این آسیب پذیری پیدا نکرد. ممیزی بیشتر برای هرگونه استفاده احتمالی از این اکسپلویت هیچ نمونه ای از استفاده از این اکسپلویت برای تصاحب یک جواهر بدون مجوز در تاریخچه RubyGems پیدا نکرد. ما نمی توانیم تضمین کنیم که هرگز اتفاق نیفتاده است، اما بعید به نظر می رسد.

برای تأیید پروژه های خود، توصیه می شود تاریخچه عملیات را در فایل Gemfile.lock تجزیه و تحلیل کنید. فعالیت مخرب در حضور تغییراتی با همان نام و نسخه یا تغییر پلت فرم بیان می شود (مثلاً وقتی یک بسته xxx-1.2.3 وجود دارد. 1.2.3 به xxx-XNUMX-xxx به روز شده است).

به عنوان یک راه حل در برابر جعل بسته های پنهان در سیستم های یکپارچه سازی مداوم یا هنگام انتشار پروژه ها، به توسعه دهندگان توصیه می شود از Bundler استفاده کنند با گزینه های "-frozen" یا "-deployment" برای تایید وابستگی ها

در نهایت، اگر شما علاقه مند به دانستن بیشتر در مورد آن هستید، می توانید جزئیات را در قسمت لینک زیر


محتوای مقاله به اصول ما پیوست اخلاق تحریریه. برای گزارش یک خطا کلیک کنید اینجا.

اولین کسی باشید که نظر

نظر خود را بگذارید

نشانی ایمیل شما منتشر نخواهد شد.

*

*

  1. مسئول داده ها: میگل آنخل گاتون
  2. هدف از داده ها: کنترل هرزنامه ، مدیریت نظرات.
  3. مشروعیت: رضایت شما
  4. ارتباط داده ها: داده ها به اشخاص ثالث منتقل نمی شوند مگر با تعهد قانونی.
  5. ذخیره سازی داده ها: پایگاه داده به میزبانی شبکه های Occentus (EU)
  6. حقوق: در هر زمان می توانید اطلاعات خود را محدود ، بازیابی و حذف کنید.