GitHub заставил Dependabot ждать три дня перед обновлением зависимостей

GitHub добавил в Dependabot механизм так называемого «охлаждения» — cooldown. Теперь бот не бросается устанавливать свежий пакет сразу после его публикации, а выжидает минимум три дня. Задумка простая: за это время большинство отравленных версий успевают всплыть и получить бан от мейнтейнеров или площадки распространения.
Настраивается всё через привычный конфигурационный файл dependabot.yml, где появился параметр cooldown. Разработчики могут подогнать длительность паузы под свой проект — кому-то хватит трёх дней по умолчанию, кто-то захочет растянуть окно ожидания подольше, особенно если проект тянет зависимости из не самых проверенных источников.
Важная деталь: пауза касается только обычных обновлений версий — тех, что поддерживают проект в актуальном состоянии. Security-патчи она не трогает вообще. Если Dependabot видит уязвимость, он всё равно моментально шлёт алерт и открывает pull request с исправленной версией без всякой задержки. Логика понятна — тянуть с закрытием дырки в безопасности ради гипотетической защиты от другой атаки было бы странно.
Почему именно три дня, а не неделя или сутки? В GitHub это называют «зоной Голдилокс» — не слишком коротко, не слишком долго. В компании прямо написали: «Три дня как значение по умолчанию балансируют между двумя целями: этого времени достаточно, чтобы выйти за окно, в котором происходит большинство подобных атак, и при этом зависимости не тормозятся дольше необходимого».
Проблема, которую пытаются решить, известна давно. Злоумышленники подменяют популярный пакет на троянизированную версию, публикуют её в реестре, и десятки, а то и сотни проектов вниз по цепочке успевают её подтянуть автоматическими обновлениями. Потом вредоносную версию убирают из реестра — но дело уже сделано, заражённый код разошёлся куда шире, чем если бы обновления шли не мгновенно.
При этом в GitHub честно признают ограниченность метода. Цитата из их же материалов: «Cooldown создан под конкретный паттерн — вредоносная версия публикуется, распространяется и быстро обнаруживается. Он почти бесполезен против атак с более длинной игрой, включая закладки в релизах, оставленные в спящем режиме, саботаж мейнтейнера и компрометацию систем сборки». То есть если атакующий терпелив и не спешит активировать вредоносный код, трёхдневная пауза его не остановит.
Именно поэтому GitHub называет cooldown лишь одним слоем защиты, а не решением проблемы целиком. Дополнительно рекомендуют фиксировать зависимости через lock-файлы, отключать выполнение install-скриптов в CI, ограничивать права токенов в пайплайнах сборки и всё-таки просматривать обновления перед мержем, а не доверять автоматике полностью.
Похожие механизмы за последний год появились и в других экосистемах — практика явно назрела. Cooldown-паузы уже внедрили в Visual Studio Code от Microsoft, в Ruby, в Bun, а также в менеджерах пакетов npm, pnpm и Yarn. Индустрия постепенно приходит к общему пониманию: мгновенное подхватывание новых версий — не всегда добро, особенно для инфраструктурного кода, от которого зависят тысячи проектов.
Параллельно движется и Python Package Index — команда PyPI готовит собственную меру защиты. Планируется блокировать мейнтейнерам возможность добавлять новые файлы в уже опубликованный релиз пакета через 14 дней после публикации. Цель формулируется так: «Эта мера призвана помешать атакующим, скомпрометировавшим токены публикации или workflow-процессы, отравлять старые, доверенные релизы». Механизм отличается от cooldown в GitHub, но бьёт по смежной проблеме — попыткам незаметно подменить содержимое релиза, который уже прошёл проверку временем.
GitHub, к слову, с 2018 года принадлежит Microsoft, и Dependabot — это встроенный в платформу инструмент автоматического управления зависимостями, который изначально появился как отдельный сервис задолго до покупки Microsoft самой платформы GitHub.


Новое на сайте

Ссылка