GitHub объявил о новом поведении инструмента автоматического обновления зависимостей Dependabot: теперь перед созданием pull request для обновления версий пакетов по умолчанию устанавливается трехдневная задержка. Это изменение призвано снизить риск попадания вредоносного кода в проекты через свежевыпущенные версии пакетов, которые еще не прошли проверку сообществом.
Предпосылки: атака на npm в сентябре 2025 года
В сентябре 2025 года злоумышленник с помощью фишинга получил доступ к учетной записи одного из мейнтейнеров npm и опубликовал вредоносные версии пакетов chalk, debug и около десятка других пакетов, которые в сумме загружаются более 2 миллиардов раз в неделю. Вредоносный код перезаписывал адреса криптовалютных кошельков в браузерных приложениях. Отравленные версии были доступны около двух часов, после чего сообщество обнаружило их, и npm удалил пакеты.
Как отмечает GitHub, двух часов достаточно, чтобы автоматический инструмент обновления увидел новую версию, открыл pull request и предложил команде разработчиков включить ее в проект. Именно этот сценарий лежит в основе растущей доли атак на цепочки поставок: вредоносный код попадает в новый релиз, публикуется в публичном реестре и в течение минут оказывается в сборочных конвейерах, прежде чем человек или сканер успевают его проверить.
Как работает задержка
Теперь Dependabot по умолчанию ждет не менее трех дней после публикации релиза, прежде чем открыть pull request с обновлением версии. Это касается как обновлений, связанных с безопасностью, так и обычных версионных обновлений. Настройка задержки (cooldown) по-прежнему управляется через файл dependabot.yml, поэтому пользователи могут выбрать другой параметр, подходящий для их проекта.
Данные из GitHub Advisory Database
GitHub приводит статистику из собственной базы данных уязвимостей GitHub Advisory Database. За год, закончившийся в мае 2026 года, база опубликовала более 6500 предупреждений о вредоносных пакетах npm, что примерно на 300 больше, чем годом ранее. Это составляет около 18 новых вредоносных пакетов npm в день. Задержка позволяет избежать попадания в этот начальный период и дает возможность релизу накопить некоторую проверку перед тем, как он достигнет разработчика.
Почему три дня
Анализ 21 широко известного инцидента в цепочках поставок с 2018 по 2026 год показал, что вредоносные версии популярных пакетов (например, axios, Solana web3.js, ua-parser-js, Ledger Connect Kit) были удалены в течение нескольких часов после публикации. Трехдневная задержка, по мнению GitHub, позволяет отсеять большинство таких короткоживущих публикаций до того, как кто-либо их установит.
Три дня как значение по умолчанию выбраны для баланса: это время выходит за рамки окна, в котором происходит большинство атак, но не задерживает обновления зависимостей дольше необходимого. Другие участники сообщества также используют трехдневную задержку, поэтому новое поведение Dependabot согласуется с практикой разработчиков при переходе между инструментами.
Ограничения и дополнительные меры
GitHub подчеркивает, что задержка эффективна только против быстрых атак, когда вредоносный пакет публикуется, распространяется и быстро обнаруживается. Она не защищает от долгосрочных угроз: закладок, оставленных в релизах и неактивных до поры, саботажа со стороны мейнтейнера или компрометации сборочной системы. Поэтому задержка должна быть лишь одним из слоев защиты.
Дополнительные рекомендуемые меры включают: фиксацию зависимостей с помощью lock-файлов, отключение скриптов установки в CI, ограничение токенов в сборочных конвейерах и проверку обновлений перед слиянием.
Что это значит
Введение задержки — это прагматичный шаг, который снижает один из наиболее распространенных векторов атак на цепочки поставок. Однако он не является панацеей и должен дополняться другими практиками безопасности. Изменение включено по умолчанию, но оставляет пользователям возможность гибкой настройки.

Комментарии · 0
Войдите, чтобы участвовать в обсуждении.