RubyGems.org میں کمزوری جو دوسرے لوگوں کے پیکجوں کی جعل سازی کی اجازت دیتی ہے۔

RubyGems.org پیکج ریپوزٹری میں ایک اہم کمزوری (CVE-2022-29176) کی نشاندہی کی گئی ہے، جو مناسب اتھارٹی کے بغیر، جائز پیکج کے ینک کو شروع کرکے اور اس کی جگہ لوڈ کرنے کے ذریعے کچھ دوسرے لوگوں کے پیکجوں کو ریپوزٹری میں تبدیل کرنے کی اجازت دیتا ہے۔ اسی نام اور ورژن نمبر کے ساتھ ایک اور فائل۔

کمزوری کا کامیابی سے فائدہ اٹھانے کے لیے، تین شرائط کو پورا کرنا ضروری ہے:

  • حملہ صرف ان پیکٹوں پر کیا جا سکتا ہے جن کے نام پر ہائفن لکھا ہوا ہو۔
  • حملہ آور کو ہائفن کریکٹر سے پہلے نام کے کچھ حصے کے ساتھ ایک منی پیکج رکھنے کے قابل ہونا چاہیے۔ مثال کے طور پر، اگر حملہ "rails-html-sanitizer" پیکج پر ہے، تو حملہ آور کو اپنا "rails-html" پیکیج ریپوزٹری میں رکھنا چاہیے۔
  • جس پیکج پر حملہ کیا جا رہا ہے وہ لازمی طور پر پچھلے 30 دنوں میں بنایا گیا ہو یا 100 دنوں تک اپ ڈیٹ نہ کیا گیا ہو۔

کمزوری "یانک" ایکشن ہینڈلر میں خرابی کی وجہ سے ہوتی ہے، جو ہائفن کے بعد نام کے حصے کو پلیٹ فارم کے نام سے تعبیر کرتا ہے، جس کی وجہ سے نام کے حصے سے مماثل غیر ملکی پیکجوں کو حذف کرنا ممکن ہوا۔ ہائفن سے پہلے خاص طور پر، "yank" ہینڈلر کوڈ میں، 'find_by!(full_name: "#{rubygem.name}-#{slug}")" کال کو پیکجز تلاش کرنے کے لیے استعمال کیا جاتا تھا، جبکہ "سلگ" پیرامیٹر کو پیکیج کے مالک کو ہٹانے کے لیے ورژن کا تعین کرنا ہے۔ پیکیج "rails-html" کا مالک ورژن "1.2.3" کے بجائے "sanitizer-1.2.3" کی وضاحت کر سکتا ہے، جس کی وجہ سے آپریشن کسی اور کے پیکج "rails-html-sanitizer-1.2.3" پر لاگو کیا جائے گا۔ "

اس مسئلے کی نشاندہی ایک سیکیورٹی محقق نے ہیکر اون کے باؤنٹی پروگرام کے حصے کے طور پر کی تھی جو معلوم اوپن سورس پروجیکٹس میں سیکیورٹی کے مسائل کو تلاش کرتی ہے۔ RubyGems.org میں 5 مئی کو مسئلہ حل کیا گیا تھا اور ڈویلپرز کے مطابق، انہوں نے ابھی تک پچھلے 18 مہینوں میں لاگز میں موجود کمزوری کے استحصال کے کسی نشان کی نشاندہی نہیں کی ہے۔ ساتھ ہی، اب تک صرف سطحی آڈٹ کیا گیا ہے اور مستقبل میں مزید گہرائی سے آڈٹ کا منصوبہ ہے۔

اپنے پروجیکٹس کو چیک کرنے کے لیے، Gemfile.lock فائل میں آپریشنز کی تاریخ کا تجزیہ کرنے کی سفارش کی جاتی ہے؛ نام اور ورژن کے تحفظ یا پلیٹ فارم کی تبدیلی کے ساتھ تبدیلیوں کی موجودگی میں بدنیتی پر مبنی سرگرمی ظاہر کی جاتی ہے (مثال کے طور پر، جب gemfile.lock -1.2.3 پیکیج کو gemname-1.2.3-java میں اپ ڈیٹ کیا گیا ہے)۔ مسلسل انضمام کے نظام میں چھپے ہوئے پیکج کے متبادل کے خلاف حفاظت کے لیے ایک کام کے طور پر یا پروجیکٹ شائع کرتے وقت، ڈویلپرز کو انحصار کو ٹھیک کرنے کے لیے "-Frozen" یا "-deployment" کے اختیارات کے ساتھ Bundler استعمال کرنے کی سفارش کی جاتی ہے۔

ماخذ: opennet.ru

نیا تبصرہ شامل کریں