Разработчики RubyGems заявили, что большинство атак на цепочку поставок используют узкий временной промежуток после взлома учётной записи, чтобы опубликовать вредоносный пакет. В связи с этим Bundler 4.0.13 вводит фильтр cooldown для новых пакетов, чтобы ограничить их инсталляции в течение нескольких дней после публикации.

Функция является необязательной и дополняет, а не заменяет существующие средства защиты, такие как обязательная двухфакторная аутентификация и доверенная публикация.
Cooldown считывает временную метку created_at для каждой версии, которую теперь предоставляет индекс v2 на rubygems.org. Версия, источник которой не раскрывает created_at, например, старые серверы гемов, исторические записи до перехода на v2 или частные реестры, всё ещё использующие формат v1, рассматривается как находящаяся за пределами временного окна и остаётся доступной.
Cooldown входит в состав Bundler 4.0.13. Тем, кто использует более раннюю версию, нужно обновить её и зафиксировать в файле блокировки, чтобы всё работало согласованно:
$ gem update --system # or: gem install bundler -v 4.0.13$ bundle update --bundler=4.0.13
Затем требуется установить небольшое ограничение по времени для исходного кода в Gemfile. Это правильная настройка для большинства команд: она фиксируется вместе с кодом, поэтому каждый разработчик и запуск CI обеспечивают один и тот же временной интервал без дополнительной настройки.
source "https://rubygems.org", cooldown: 7gem "rails"gem "puma"
Поскольку Cooldown не установлен по умолчанию, проект без него продолжает разрешать самые новые версии.
Помимо ключевого слова per-source, параметр cooldown применяет одно значение ко всем источникам, в рамках проекта, глобально или через окружение:
$ bundle config set cooldown 7 # stored in .bundle/config for this project$ bundle config set --global cooldown 7 # applies to every project for this user$ BUNDLE_COOLDOWN=7 bundle install # no lockfile yet, e.g. a fresh CI checkout$ BUNDLE_COOLDOWN=7 bundle update # re-resolve when a lockfile already exists
Для одноразового запуска нужно ввести --cooldown для install, update, add или outdated:
$ bundle install --cooldown 7$ bundle update --cooldown 7$ bundle add rails --cooldown 7$ bundle outdated --cooldown 7
Если присутствует более одного из этих параметров, они разрешаются в фиксированном порядке приоритета: флаг командной строки > параметр конфигурации > per-source cooldown: в Gemfile. Флаг --cooldown переопределяет параметр cooldown (конфигурация пакета или BUNDLE_COOLDOWN), который, в свою очередь, переопределяет cooldown для источника. Значение всегда является неотрицательным целым числом дней; строка, число с плавающей запятой, отрицательное число или массив отклоняются с ошибкой InvalidOption.
Поскольку флаг и настройка применяются единообразно ко всем источникам, ключевое слово per-source используется, когда политика различается в зависимости от реестра, например, для охлаждения общедоступных гемов при доверии внутреннему реестру:
source "https://rubygems.org", cooldown: 7source "https://gems.internal.example.com", cooldown: 0 do gem "internal-tool"end
Команда --cooldown N в командной строке переопределяет все источники для этого запуска, включая тот, который освобождён от ограничений.
Передача значения 0 отключает период охлаждения. Это наиболее важно, когда появляется исправление для активно используемой уязвимости нулевого дня или сообщение об уязвимости указывает на необходимость немедленного обновления. В этих случаях значение --cooldown 0 позволяет получить свежий релиз, не снимая политику ограничений для всех остальных:
$ bundle install --cooldown 0$ BUNDLE_COOLDOWN=0 bundle update rails # ignore any configured cooldown this time
bundle outdated учитывает задержку. Он аннотирует версии, которые новее, но всё ещё находятся в пределах временного окна, указывая количество дней, оставшихся до того, как их можно будет исправить.
$ bundle outdated --cooldown 7Gem Current Latest Requested Groupsaws-partitions 1.1251.0 1.1256.0 (cooldown 3d) = 1.1251.0 default
Реестр также теперь проверяет содержимое гемов во время отправки и проверяет авторизацию на Have I Been Pwned, чтобы скомпрометированные пароли не могли быть использованы повторно. Специальная команда проводит сканирование уязвимостей с помощью ИИ для наиболее важных гемов при поддержке Alpha Omega и Anthropic.
Ранее в GitHub сообщили, что хакеры, взломавшие 3800 внутренних репозиториев платформы, получили доступ к ним через вредоносную версию расширения Nx Console для VS Code. Она была скомпрометирована за неделю до этого в результате атаки на цепочку поставок npm от TanStack.
Между тем исследователи кибербезопасности обнаружили более 30 пакетов npm из пространства имен Red Hat ‘@redhat-cloud-services’, которые были скомпрометированы в результате атаки на цепочку поставок. В ходе неё хакеры распространили новый вариант вредоносного ПО Shai-Hulud «Miasma», предназначенного для кражи учётных данных.
ссылка на оригинал статьи https://habr.com/ru/articles/1045258/