RubyGems.org-da digər insanların paketlərini əvəz etməyə imkan verən zəiflik

RubyGems.org paket anbarında kritik boşluq (CVE-2022-29176) müəyyən edilib ki, bu da müvafiq səlahiyyət olmadan qanuni paketi çıxarıb onun yerinə yükləməyə başlamaqla bəzi digər insanların paketlərini repozitoriyada əvəz etməyə imkan verir. eyni ad və versiya nömrəsi olan başqa bir fayl.

Zəiflikdən uğurla istifadə etmək üçün üç şərt yerinə yetirilməlidir:

  • Hücum yalnız adında defis olan paketlərə həyata keçirilə bilər.
  • Təcavüzkar tire simvolundan əvvəl adın bir hissəsi olan qiymətli daş paketini yerləşdirməyi bacarmalıdır. Məsələn, hücum "rails-html-sanitizer" paketindədirsə, təcavüzkar öz "rails-html" paketini depoya yerləşdirməlidir.
  • Hücuma məruz qalan paket son 30 gün ərzində yaradılmalı və ya 100 gün ərzində yenilənməməlidir.

Zəifliyə səbəb adın defisdən sonra olan hissəsini platformanın adı kimi şərh edən “yank” əməliyyat idarəedicisindəki xəta, adın hissəsinə uyğun gələn xarici paketlərin silinməsinə başlamağa imkan verdi. defisdən əvvəl. Xüsusilə, "yank" işləyici kodunda 'find_by!(tam_ad: "#{rubygem.name}-#{slug}")" çağırışı paketləri tapmaq üçün istifadə edilib, "şlaq" parametri isə silinəcək versiyanı müəyyən etmək üçün paket sahibi. "Rails-html" paketinin sahibi "1.2.3" versiyası əvəzinə "sanitizer-1.2.3" təyin edə bilər ki, bu da əməliyyatın başqasının "rails-html-sanitizer-1.2.3" paketinə tətbiq edilməsinə səbəb olacaq. ".

Problem təhlükəsizlik tədqiqatçısı tərəfindən məlum açıq mənbəli layihələrdə təhlükəsizlik problemlərini tapmaq üçün HackerOne-un mükafat proqramının bir hissəsi kimi müəyyən edilib. Problem mayın 5-də RubyGems.org-da aradan qaldırıldı və tərtibatçıların dediyinə görə, onlar hələ son 18 ay ərzində qeydlərdə zəifliyin istismarının izlərini müəyyən etməyiblər. Eyni zamanda, indiyədək yalnız səthi yoxlama aparılıb və gələcəkdə daha dərin auditin aparılması nəzərdə tutulur.

Layihələrinizi yoxlamaq üçün Gemfile.lock faylında əməliyyatların tarixini təhlil etmək tövsiyə olunur; zərərli fəaliyyət adın və versiyanın saxlanması və ya platformanın dəyişdirilməsi ilə dəyişikliklərin olması ilə ifadə edilir (məsələn, gemname olduqda -1.2.3 paketi gemname-1.2.3-java-ya yenilənir). Davamlı inteqrasiya sistemlərində və ya layihələri dərc edərkən gizli paketlərin dəyişdirilməsindən qorunmaq üçün müvəqqəti həll yolu olaraq, tərtibatçılara asılılıqları düzəltmək üçün Bundler-dən “-dondurulmuş” və ya “-yerləşdirmə” seçimləri ilə istifadə etmək tövsiyə olunur.

Mənbə: opennet.ru

Добавить комментарий