Те откриха уязвимост в RubyGems.org, която позволяваше да се замени пакетите

Наскоро новината съобщи това Беше идентифицирана критична уязвимост в хранилището на пакети rubygems.org (уязвимостта вече е каталогизирана под CVE-2022-29176), което позволява без надлежно разрешение, заменят пакетите на други хора в хранилището, като издърпате легитимен пакет и на негово място качите друг файл със същото име и номер на версията.

Споменава се, че уязвимостта се дължи на грешка в манипулатора на действие "yank"., който третира частта от името след тирето като име на платформата, което направи възможно инициирането на премахването на външни пакети, които съответстват на частта от името до знака за тире.

По-специално в кода на контролера на операцията „дърпане“, обаждането 'find_by!(full_name: "#{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 за намиране на проблеми със сигурността в известни проекти с отворен код.

Проблемът поправен в RubyGems.org на 5 май и според разработчиците, все още не са идентифицирали следи от експлоатация на уязвимостта в регистрационните файлове за последните 18 месеца. В същото време до момента е извършен само повърхностен одит и се планира по-задълбочен одит в бъдеще.

Към момента смятаме, че тази уязвимост не е използвана.

RubyGems.org изпраща имейл до всички собственици на скъпоценни камъни, когато версията на скъпоценен камък бъде пусната или премахната. Не сме получили имейли за поддръжка от собственици на скъпоценни камъни, в които се посочва, че техният скъпоценен камък е бил добиван без разрешение.

Одит на промените в скъпоценни камъни през последните 18 месеца не откри примери за злонамерено използване на тази уязвимост. По-нататъшният одит за евентуално използване на този експлойт не откри екземпляр на този експлойт да бъде използван за превземане на скъпоценен камък без разрешение в историята на RubyGems. Не можем да гарантираме, че никога не се е случвало, но не изглежда вероятно.

За да проверите вашите проекти, се препоръчва да анализирате историята на операциите във файла Gemfile.lock Злонамерената активност се изразява в наличието на промени със същото име и версия или промяна на платформата (например, когато пакет xxx-1.2.3 1.2.3 е актуализиран до xxx-XNUMX-xxx).

Като решение срещу подправяне на скрити пакети в системи за непрекъсната интеграция или при публикуване на проекти, Препоръчва се на разработчиците да използват Bundler с опциите „–замразен“ или „–разгръщане“ за потвърждаване на зависимостите.

И накрая, ако се интересувате да научите повече за това, можете да проверите подробностите в следваща връзка.


Бъдете първите, които коментират

Оставете вашия коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *

*

*

  1. Отговорен за данните: Мигел Анхел Гатон
  2. Предназначение на данните: Контрол на СПАМ, управление на коментари.
  3. Легитимация: Вашето съгласие
  4. Съобщаване на данните: Данните няма да бъдат съобщени на трети страни, освен по законово задължение.
  5. Съхранение на данни: База данни, хоствана от Occentus Networks (ЕС)
  6. Права: По всяко време можете да ограничите, възстановите и изтриете информацията си.