The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Уязвимость в RubyGems.org, позволяющая подменить чужие пакеты

09.05.2022 09:31

В репозитории пакетов RubyGems.org выявлена критическая уязвимость (CVE-2022-29176), позволяющая без наличия должных полномочий подменить некоторые чужие пакеты в репозитории путём инициирования изъятия (yank) легитимного пакета и загрузки вместо него другого файла с тем же именем и номером версии.

Для успешной эксплуатации уязвимости необходимо выполнение трёх условий:

  • Атака может быть совершена только на пакеты, в имени которых используется символ дефиса.
  • Атакующий должен иметь возможность разместить gem-пакет с частью имени до символа дефиса. Например, если атака производится на пакет "rails-html-sanitizer", атакующий должен разместить в репозитории собственный пакет "rails-html".
  • Пакет, на который совершается атака, должен быть создан в последние 30 дней или не обновляться в течение 100 дней.

Уязвимость вызвана ошибкой в обработчике действия "yank", трактующего часть имени после дефиса как название платформы, что позволяло инициировать удаление чужих пакетов, совпадающих в части имени до символа дефиса. В частности, в коде обработчика операции "yank" для поиска пакетов использовался вызов 'find_by!(full_name: "#{rubygem.name}-#{slug}")', при том, что параметр "slug" передавался владельцем пакета для определения удаляемой версии. Владелец пакета "rails-html" вместо версии "1.2.3" мог указать "sanitizer-1.2.3", что привело бы к применению операции к чужому пакету "rails-html-sanitizer-1.2.3".

Проблема была выявлена исследователем безопасности в рамках действующей на HackerOne программы выплаты вознаграждений за поиск проблем с безопасностью в известных открытых проектах. Проблема устранена в RubyGems.org 5 мая и по заявлению разработчиков они пока не выявили следов эксплуатации уязвимости в логах за последние 18 месяцев. При этом пока проведён лишь поверхностный аудит и в дальнейшем планируется проведение более глубокой проверки.

Для проверки своих проектов рекомендуется проанализировать историю операций в файле Gemfile.lock, вредоносная активность выражается в наличии изменений с сохранением имени и версии или сменой платформы (например, когда пакет gemname-1.2.3 обновлён до gemname-1.2.3-java). В качестве обходного метода защиты от скрытой подмены пакетов в системах непрерывной интеграции или при публикации проектов разработчикам рекомендовано использовать Bundler с опциями "--frozen" или "--deployment" для фиксации зависимостей.

  1. Главная ссылка к новости (https://greg.molnar.io/blog/ru...)
  2. OpenNews: В RubyGems выявлено 724 вредоносных пакета
  3. OpenNews: В RubyGems устранено 7 уязвимостей
  4. OpenNews: В RubyGems выявлена удалённо эксплуатируемая уязвимость
  5. OpenNews: В RubyGems устранена уязвимость, позволявшая подменять файлы в репозитории
  6. OpenNews: Rubygems.org подвергся взлому
Лицензия: CC-BY
Тип: Проблемы безопасности
Короткая ссылка: https://opennet.ru/57155-rubygems
Ключевые слова: rubygems
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (66) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 09:59, 09/05/2022 Скрыто модератором [﹢﹢﹢] [ · · · ]
  • +4 +/
     
     
  • 2.2, Онаним (?), 10:01, 09/05/2022 Скрыто модератором
  • +2 +/
     

  • 1.6, анонимоузе (?), 10:21, 09/05/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Дефис же, потому что "-". Тире "—".
     
     
  • 2.70, Аноним (70), 21:40, 09/05/2022 [^] [^^] [^^^] [ответить]  
  • –2 +/
    en-тире: –
    em-тире: —
    двойное em-тире: ⸺
    тройное em-тире: ⸻

    Учите TeX, лапти )

     

  • 1.7, Sergey (??), 10:22, 09/05/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Итерсно а как поможет фрозен если уже прилетел. Насколько я помню фрозен морозит автоматом то что уже прилитело.
     
     
  • 2.36, YetAnotherOnanym (ok), 16:41, 09/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Предполагается, что это фича для тех, кто проводит хоть какую-то минимальную проверку стороннего кода. Нужные фичи есть, не тормозит, не глючит, не крашится, зловреда не выявлено - можно зафризить, залочить, прибить гвоздями и больше на проверки время не тратить.
     

  • 1.9, КО (?), 10:35, 09/05/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Продолжайте класть яйца в одну корзину
     
     
  • 2.23, Аноним (23), 14:28, 09/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > яйца в одну корзину

    Ну почему в одну... есть же хруст.

     
     
  • 3.76, Аноним (76), 15:15, 15/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Хруст яиц необратим.
     

  • 1.10, Аноним (10), 10:56, 09/05/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Кстати, почему в питоне такого не находили до сих пор, или я пропустил? Существуют ли какие-то объективные причины?
     
     
  • 2.24, Онанистмус (?), 14:31, 09/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    ИМХО такое было со всеми более менее популярными репозиториями пакетов. С PyPI тоже такое было. Если такого не было значит все еще впереди )
    https://www.developer.com/languages/python-pypi-vulnerabilities/#:~:text=Durin

     

  • 1.11, Аноним (11), 11:36, 09/05/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Зато Ruby - безопасный язык. Переходите с Си на Ruby.
     
     
  • 2.13, Аноним (13), 11:52, 09/05/2022 [^] [^^] [^^^] [ответить]  
  • +4 +/
    вот же, ну что вы прицепились к Си:)
    интерпретатор вашего Ruby где-то на треть написан на Сях:)
     
  • 2.14, Аноним (-), 11:59, 09/05/2022 [^] [^^] [^^^] [ответить]  
  • –3 +/
    черное это белое . для зомбей  - си один из САМЫХ БЕЗОПАСНЫХ языков если кто не в курсе. например руст даже не упоминается в списке. из зомбоящика вам навязали что если обезьяне дать гранату то она еще и пол дома разрушит, а то что ее надо обучать и окультуривать нигде и никто не говорит, потому для обезьяны будут только спешные шляпы и сарафаны, и если она будет тянуться к технологиям - бить палкой и заставлять носить смешной сарафан.
     
     
  • 3.15, Аноним (15), 12:09, 09/05/2022 [^] [^^] [^^^] [ответить]  
  • +6 +/
    Если вы на сях пишете так же, как на русском, то за цивилизацию страшно.
     
     
  • 4.18, Fracta1L (ok), 12:14, 09/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    К счастью, в русском языке не принято жонглировать указателями, да и буфера переполнять любили только русские классики.
     
  • 4.22, Аноним (-), 14:21, 09/05/2022 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > Если вы на сях пишете так же, как на русском, то за цивилизацию страшно.

    На заметочку. Иногда вы вы..тесь грамацией перед людьми которые из стран где русский запрещен впринципе. Лично приходилось наблюдать понты кто во сколько лет убил своего первого русского. Фильтруйте свой помет товарищи. Подобными вы..нами вы настраиваете только против себя и это может закончиться очень и очень несмешно. Ведь процент реальных вражеских тролей обычно невелик, это ведь
    все мы сами делаем.

     
     
  • 5.39, Аноним (39), 17:08, 09/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Кого настраивают, ботофермыили могилизированных?
     
  • 5.65, Аноним (15), 21:09, 09/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    ЯННП
     
  • 3.16, Аноним (13), 12:11, 09/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    увы, беда в том, что нет такой книги которая бы одновременно 1) учила "современному" языку Си, и 2) как безопасно писать на нем код: как обрабатывать ошибки, как тестировать и тд и тп 3) как писать многопоточные программы и всё что с этим связано.
    по крайней мере я не знаю такую книгу, даже на английском:(
    если кто-то знает, то поделитесь названием сего чуда:)
    Все только могут с умным видом советовать книгу K&R:) которая увы не подходит по второму пункту! (про 3-й пункт я вообще молчу)
     
     
  • 4.17, Аноним (13), 12:13, 09/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Я это к тому, что а потом дико удивляются что в программах на Си столько дырок:) что же эти великие гуру не напишут книгу, о том как надо писать код на Си?) а то, только и могут что жаловаться!
     
     
  • 5.19, Аноним (-), 13:22, 09/05/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    сколько еще книг разряда "вода мокрая и вот почему" нехватает ?
     
     
  • 6.27, Аноним (13), 14:51, 09/05/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    ну вот очередной умник нарисовался! Вместо того чтобы предложить что-то конкреиное по делу (книгу в данном случае) - он тупо язвит!
     
     
  • 7.30, Аноним (-), 15:51, 09/05/2022 [^] [^^] [^^^] [ответить]  
  • –2 +/
    ты же не говоришь о своем уровне знаний.

    ну навскидку дай ответ не думая на вопрос, в чем разница между:

    char str[] = "string";
    char *str = "string";
    char *str = strdup("string");

    дальше я скажу что дочитать

     
     
  • 8.34, Аноним (34), 16:31, 09/05/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Очевидно разница в том где будет произведено выделение памяти под строку string... текст свёрнут, показать
     
     
  • 9.35, Аноним (-), 16:34, 09/05/2022 [^] [^^] [^^^] [ответить]  
  • –3 +/
    с таким ответом - начинать с доброго старого К R и не выеп ться на форумах про ... текст свёрнут, показать
     
     
  • 10.59, Аноним (13), 19:19, 09/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    хотите получить определенный ответ, потрудитесь сперва сформулировать вопрос дол... текст свёрнут, показать
     
  • 8.37, YetAnotherOnanym (ok), 16:59, 09/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Оптимизатор можете там отвечать как угодно, а разница будет такая, какую я сочт... текст свёрнут, показать
     
     
  • 9.38, Аноним (-), 17:07, 09/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    тоже самое, начинать с К R ... текст свёрнут, показать
     
     
  • 10.43, YetAnotherOnanym (ok), 18:27, 09/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Доооо, гордый выпускничок, поучи меня ... текст свёрнут, показать
     
     
  • 11.45, Аноним (-), 18:34, 09/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    вопрос простейший хак интервью со мной не пройдет ... текст свёрнут, показать
     
  • 9.46, Аноним (46), 18:34, 09/05/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Если ты не можешь определить разницу то как ты определишь нужную, монетку кинешь... текст свёрнут, показать
     
     
  • 10.50, Аноним (-), 18:41, 09/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Не подсказывай ниже второй турик на оценку знаний, прям туда пиши раз понял ... текст свёрнут, показать
     
  • 8.51, Аноним (-), 18:47, 09/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    В том, что у тебя во втором случае у тебя не-const указатель на литерал, попытка... текст свёрнут, показать
     
     
  • 9.56, Аноним (-), 19:04, 09/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Какие сутра спьяну может быть стандарт D пиши свой вопрос ниже, можно со станда... текст свёрнут, показать
     
  • 8.67, Аноним (-), 21:22, 09/05/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    та я ваших керниганов с ритчами вертел а по факту кроме одного анона которому... текст свёрнут, показать
     
  • 7.32, Аноним (-), 15:55, 09/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    И еще задай мне вопрос по сям такой какой считаешь самым глубоким для себя.
     
     
  • 8.57, Аноним (13), 19:04, 09/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Ну вот вам типичный Сишный подводный камень assert sizeof int 4 предп... текст свёрнут, показать
     
     
  • 9.60, Аноним (-), 19:19, 09/05/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    банальные константы, ответ на которые даже мой парень знает, а он обычный курьер... текст свёрнут, показать
     
     
  • 10.62, Аноним (13), 19:42, 09/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Лучше научитесь грамотно формулировать свои вопросы, чтобы вас понимали другие л... текст свёрнут, показать
     
  • 10.63, Аноним (13), 20:56, 09/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Кстати, мне вот просто любопытно Мне так и надо было ответить на ваш гениальный... текст свёрнут, показать
     
     
  • 11.64, Аноним (-), 21:05, 09/05/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    K R - константы, все написано... текст свёрнут, показать
     
     
  • 12.66, Аноним (13), 21:12, 09/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Всё с вами понятно Вы сами не в курсе о чем говорите Только язвите и всяческ... текст свёрнут, показать
     
     
  • 13.68, Аноним (-), 21:33, 09/05/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    да запросто - сидя на 64х битном процессоре, скопировал код задачки про 32х битн... текст свёрнут, показать
     
     
  • 14.71, Аноним (13), 21:42, 09/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Я окончательно удостоверился, что вы вообще не разбираетесь в данном вопросе, ес... текст свёрнут, показать
     
  • 13.69, Аноним (-), 21:39, 09/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    прошу прощения, не один - а два анона знали ответ ... текст свёрнут, показать
     
  • 4.26, Аноним (46), 14:48, 09/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    А где тогда такая книга для раста?
     
     
  • 5.54, Аноним (-), 18:59, 09/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > А где тогда такая книга для раста?

    А где Воен Против Раста тут раст углядел?


     
  • 4.77, Анончик (?), 03:30, 18/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    https://www.manning.com/books/modern-c
    не совсем новая, но для современного подойдет.
     

  • 1.12, ip1982 (ok), 11:47, 09/05/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    RubyGerms
     
  • 1.21, Аноним (21), 13:38, 09/05/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    конкурент у npm
     
  • 1.29, Смузихлёб (ok), 15:43, 09/05/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +6 +/
    > Ruby

    Не ради холивара, а ради интереса. Сейчас кто-то использует этот язык для новых проектов? Или это (как java) уже давно исключительно поддержка legacy?

     
     
  • 2.33, Аноним (-), 16:01, 09/05/2022 [^] [^^] [^^^] [ответить]  
  • –5 +/
    ява легаси ? танегоните пожалуйста. ява это когда надо что-то больше хеловорлда. если хочется поспорить - поспорьте с китайским айти ;)
     
     
  • 3.47, Смузихлёб (ok), 18:35, 09/05/2022 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Много ты стартапов знаешь на java? И что там по вакансиям для джунов? А то сплошные миддлы да сеньоры с опытом 5+ лет, в отличии от того же питона или пэхэпэ, где берут вообще чуть ли не без знаний 😉 А ведь именно наличие джуновских вакансий говорит о том, что язык скорее жив, чем мёртв.
     
     
  • 4.52, Аноним (-), 18:55, 09/05/2022 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Я больше про технологии и один из крутых "стартапов" как по мне запила группа али. А о том как делать бабки на "джунах" не надо мне рассказывать, эта схема умирает и к техническим тонкастям не имеет никакого отношения, ммм было круче в сто раз, какой там язык был ?
     
     
  • 5.58, Смузихлёб (ok), 19:13, 09/05/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Я больше про технологии

    Какие? Что там с UTF8? 🤣

     
     
  • 6.61, Аноним (-), 19:31, 09/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    ощущаю рождение шутки про иероглифы и кракозябры. проблемы кодировок, прохладный ветерок девяностых бррр
     
  • 2.41, Аноним (46), 18:22, 09/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Нет.
     
  • 2.74, Аноним (-), 10:32, 10/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    NASA Langley Research Center использует Ruby для проведения моделирования.
     

  • 1.42, Аноним (42), 18:23, 09/05/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Ну как, использовать языки программирования без пакетных менеджеров, вендорить и замораживать зависимости всё еще немодно?
     
     
  • 2.44, Аноним (46), 18:32, 09/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Нет даже плюсовые проекты заставляют искать зависимости самому, а не кладут их рядом с собой.
     
     
  • 3.53, Аноним (42), 18:56, 09/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Это создает опасность, что репозиторий зависимости будет удален или заражен или ... большой текст свёрнут, показать
     
     
  • 4.72, Аноним (-), 04:52, 10/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Да, по тем же самым причинам следует отказаться от модели распространения линуксов, с их центральными репозиториями. Модель LFS получше будет.
     

  • 1.49, Аноним (49), 18:36, 09/05/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Ох бэкдоры посыпались...
     
     
  • 2.55, Аноним (23), 19:02, 09/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Сейчас как только видишь где-то крэйты - сразу обходишь стороной продукт.
     
     
  • 3.75, Аноним (75), 14:05, 10/05/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Все эти пакетные менеджеры как общественный туалет: зайдя туда лучше ничего не трогать.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Спонсоры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2022 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру