The OpenNET Project / Index page

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

В Ruby-библиотеке bootstrap-sass выявлен бэкдор

05.04.2019 09:14

В популярной Ruby-библиотеке bootstrap-sass (вариант Bootstrap 3 с поддержкой Sass), насчитывающей около 28 млн загрузок, выявлен бэкдор (CVE-2019-10842), позволяющий злоумышленникам выполнить свой код на серверах, на которых выполняются проекты, использующие bootstrap-sass. Бэкдор был добавлен в состав выпуска 3.2.0.3, опубликованного 26 марта в репозитории RubyGems. Проблема устранена в выпуске 3.2.0.4, предложенном 3 апреля.

Бэкдор был скрыто добавлен в файл lib/active-controller/middleware.rb, в котором появился код для вызова eval со значением, передаваемым через Cookie "___cfduid=". Для атаки достаточно было отправить запрос на сервер, выставив Cookie "___cfduid" и передав в качестве аргумента команды, закодированные в формате Base64. Имя Cookie "___cfduid" было выбрано для камуфлирования под Cookie "__cfduid", выставляемый CDN Cloudflare и отличающийся наличием двух символов подчёркивания вместо трёх.

Примечательно, что вредоносный код был опубликован только в финальном пакете, опубликованном в репозитории RubyGems, но не был внесён в исходные тексты в Git-репозитории. Исходный код библиотеки оставался корректным и не вызывал подозрения у разработчиков, что подчёркивает важность применения повторяемых сборок и внедрения процесса проверки соответствия публикуемых пакетов с эталонными исходными текстами. Судя по всему, атака была проведена через захват параметров учётной записи к RubyGems у одного из двух мэйнтейнеров библиотеки (официально утечка учётных данных пока не подтверждена).

Атаковавшие проявили осмотрительность и встроили бэкдор не в самую свежую ветку 3.4.x, последний выпуск которой насчитывает более 217 тысяч загрузок, а как обновление для прошлой ветки 3.2.x, рассчитывая на то, что корректирующее обновление зависимости не вызовет подозрений. По приблизительной оценке 1670 репозиториев на GitHub используют bootstrap-sass в качестве зависимости и связанные с этими репозиториями приложения потенциально могут быть скомпрометированы. Разработчикам рекомендуется проследить использование библиотеки bootstrap-sass среди косвенных зависимостей и проверить не было ли выполнено автоматическое обновление до версии с бэкдором. Судя по статистике RubyGems пакет с бэкдором был загружен около 1500 раз.

Информация о возможном бэкдоре была опубликована в системе отслеживания ошибок спустя несколько часов после размещения проблемного выпуска 3.2.0.3, после чего примерно через час мэйнтейнеры удалили проблемный выпуск из RubyGems и поменяли пароли для входа, но не учли, что удалённые версии ещё несколько дней могут оставаться доступными на зеркалах. 3 апреля был дополнительно сформирован выпуск 3.2.0.4, полностью аналогичный версии 3.2.0.2, который позволял избавиться от версии с бэкдором без перехода на новую ветку 3.4.

  1. Главная ссылка к новости (https://snyk.io/blog/malicious...)
  2. OpenNews: Бэкдор в зависимости к event-stream, популярной библиотеке для Node.js
  3. OpenNews: В RubyGems выявлена удалённо эксплуатируемая уязвимость
  4. OpenNews: В RubyGems устранена уязвимость, позволявшая подменять файлы в репозитории
  5. OpenNews: Особенность отображения проектов на GitHub создала видимость внедрения бэкдора в ядро Linux
  6. OpenNews: На GitHub выявлено 73 репозитория с бэкдорами
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/50462-ruby
Ключевые слова: ruby, gem, backdoor
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (32) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, n1rdeks (ok), 10:27, 05/04/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +9 +/
    Ну вот опЯть
     
  • 1.2, borbacuca (ok), 10:46, 05/04/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    нда небыло никогда....
     
  • 1.3, Нанобот (ok), 10:48, 05/04/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +17 +/
    если между публикацией протрояненого обновления и его удалением прошло всего 2-3 часа, то это очень даже хороший показыватель...а ведь могли бы заметить через 2-3 недели
     
     
  • 2.19, commiethebeastie (ok), 16:11, 05/04/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Ну это же не npm :D
     

  • 1.4, Аноним (4), 10:58, 05/04/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    >Атаковавшие проявили осмотрительность и встроили бэкдор не в самую свежую ветку 3.4.x, последний выпуск которой насчитывает более 217 тысяч загрузок, а как обновление для прошлой ветки 3.2.x  

    возможно дело не в осмотрительности, а в том что они хотели взломать какой-то конкретный проект, использующий эту версию

     
  • 1.6, Аноним (6), 11:04, 05/04/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –9 +/
    Имя напоминает червя SASSer, я бы не стал такой либой пользоваться
     
     
  • 2.34, axredneck (?), 00:29, 06/04/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Слова "git", "gimp", "cron", "grub" итд. тоже похожи на названия каких-то стремных малварей.
     
     
  • 3.38, Владимир (??), 10:34, 08/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Или стихи Маяковского:
    Били копыта,
    Пели будто:
    - Git.
    Grub.
    Cron.
    Gimp.-
     

  • 1.7, Аноним (7), 11:09, 05/04/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Примечательно, что вредоносный код был опубликован только в финальном пакете, опубликованном в репозитории RubyGems, но не был внесён в исходные тексты в Git-репозитории.

    Не понял ? Они что хотят что в RubyGems нет с гита заливается ?
    Офигеть ... И как они тогда проверяют на соответсвие сорцам ссылку на которые они дают на своем сайте ?

    Мда ....

     
     
  • 2.11, GentooBoy (ok), 11:17, 05/04/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Точно также как и везде, с чего оно должно с гита заливаться? Нужно сформировать пакет потом залить в репу. Так у всех. Ну то есть вообще у всех.  Другое дело что ты можешь поставить  build server и делать это автоматически.
     
     
  • 3.18, хм (?), 15:17, 05/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Packagist например просто трекает git-репозиторий и версия пакета там - это тег или ветка в гите. Так что подобное там вроде невозможно.
     
  • 3.32, anonymous (??), 21:40, 05/04/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Хз где это так - также где и везде.

    Вот к примеру koji ты берешь spec и патчи кладешь на githab потом команда koji собирай. Он стягивает спек и патчи с гита и потом сырцы по указанию со спека и собирает пакет и кладет его в bodhi для теста. (fedora сборка рпм)

    Хз как в дебиане - но поди также.

    Я вообще удивлен что у них туда гемы грузят отдельно от сырцов.

     

  • 1.8, Аноним (8), 11:13, 05/04/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Полон опасностей "программирую на css/sass/html/js/ts"-мирок.
     
     
  • 2.15, хотел спросить (?), 12:47, 05/04/2019 [^] [^^] [^^^] [ответить]  
  • –2 +/
    да везде хватает подводных камней
    в системном программировании их даже больше
    разница только в том что в "мирке" мало не веб-макак
     
     
  • 3.24, Аноним (24), 17:55, 05/04/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Расскажи нам.
     
     
  • 4.33, Аноним (33), 23:09, 05/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Так в соседних новостях же...
    https://www.opennet.ru/opennews/art.shtml?num=50466
    https://www.opennet.ru/opennews/art.shtml?num=50463
     

  • 1.12, Аноним (12), 11:25, 05/04/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    А я всегда говорю, что бутстрап то ещё ненужно, и вот подтверждение!
     
     
  • 2.36, mishaor (ok), 16:54, 07/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    ту же самую Bulma можно поставить, и сайт покрасивее будет, и лишнего JS не требует.
     

  • 1.13, Анонимс (?), 11:50, 05/04/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > пакет с бэкдором был загружен около 1500 раз

    Ферма из 1500 узлов, интересно, это сколько же можно было намайнить битков и эфира?

     
     
  • 2.14, имя (?), 12:44, 05/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    сейчас уже что-то другое майнят, биткоин вроде и вовсе не выгоден для майнинга, даже при "халявных" ресурсах
     
  • 2.27, Марк Шаттлворт (?), 19:06, 05/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Нисколько
     

  • 1.17, Аноним (17), 14:20, 05/04/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Я читал комменты и думал это только возможно в npm, а вот оно как оказывается.
     
     
  • 2.21, Попугай Кеша (?), 17:09, 05/04/2019 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Тут модно хейтить npm
     
     
  • 3.25, tsifra (?), 18:09, 05/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    и php :)
     
  • 2.28, Марк Шаттлворт (?), 19:08, 05/04/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Если по комментам ориентироваться, то можно на другие сайты не ходить - тут есть эксперты во всем и всегда тебе помогут с тем где ты неправ
     

  • 1.20, Аноним (20), 16:43, 05/04/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    bootstraps-ass

    бггггггг

     
  • 1.22, Аноним (22), 17:14, 05/04/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Примечательно, что вредоносный код был опубликован только в финальном пакете, опубликованном в репозитории RubyGems, но не был внесён в исходные тексты в Git-репозитории.

    Получается пакеты в репозитории RubyGems собираются не из репозиториев с исходным кодом, а загружаются уже собранные? Очень странное решение авторов RubyGems.

     
     
  • 2.37, mishaor (ok), 16:58, 07/04/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Так все (PyPI, NPM) делают.
     

  • 1.26, user90 (?), 19:03, 05/04/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –4 +/
    Так руби-кодеры, они это ккк.. веб-макаки жи?
     
  • 1.29, J.L. (?), 19:37, 05/04/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > Информация о возможном бэкдоре была опубликована в системе отслеживания ошибок спустя несколько часов после размещения проблемного выпуска 3.2.0.3, после чего примерно через час мэйнтейнеры удалили проблемный выпуск из RubyGems и поменяли пароли для входа, но не учли, что удалённые версии ещё несколько дней могут оставаться доступными на зеркалах. 3 апреля был дополнительно сформирован выпуск 3.2.0.4, полностью аналогичный версии 3.2.0.2, который позволял избавиться от версии с бэкдором без перехода на новую ветку 3.4.

    круты, всем хотя бы так оперативно действовать

     
     
  • 2.31, Онаним (?), 20:26, 05/04/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Удивительно. Я уж думал тех, кто делает код ревью зависимостей, вообще не осталось.
     

  • 1.30, Онаним (?), 20:24, 05/04/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    This bug bootstraps ass...
     

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



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

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