GitHub запустил npm-файрвол, блокирующий вредоносные пакеты до установки

· Безопасность
GitHub открыл публичную предварительную версию пакетного файрвола для npm. Он проверяет зависимости по набору политик и не пропускает подозрительные пакеты на этапе установки.

cover.svg

GitHub объявил о запуске пакетного файрвола, который должен останавливать подозрительные npm-пакеты ещё на этапе установки. По словам компании, файрвол «проверяет как запросы метаданных, так и загрузку пакетов на признаки вредоносной активности, выступая политическим шлюзом в момент установки».

Пока поддерживается только npm. Функция доступна в публичной предварительной версии всем клиентам GitHub Enterprise Cloud, включая вариант с размещением данных в выбранном регионе.

Как это работает

Файрвол располагается между конечными точками или внутренними реестрами и вышестоящими репозиториями пакетов. Задача — защититься от атак, при которых система заражается в момент установки пакета. Риск особенно высок, когда ИИ-агенты и CI-раннеры устанавливают зависимости автоматически, без явного разрешения пользователя, чтобы выполнить задачу или собрать проект.

Предполагается, что агенты для написания кода и CI/CD-хосты будут отправлять запросы через файрвол, а не напрямую в публичные реестры. Файрвол сверяет загрузки с заданными политиками и блокирует те, что им не соответствуют.

Администраторы могут настроить следующие правила:

  • блокировка известного вредоносного ПО — по активным предупреждениям в GitHub Advisory Database;
  • блокировка по серьёзности уязвимостей в запрошенной версии пакета; по умолчанию установка запрещается только при критических уязвимостях, но можно выбрать уровни «высокий и выше», «средний и выше» или «любой»;
  • блокировка понижения аттестаций — загрузка останавливается, если у запрошенной версии нет SLSA-аттестации, в отличие от прежних версий;
  • блокировка новых установочных скриптов, запускаемых через хуки preinstall и postinstall, которые могут использоваться для кражи конфиденциальных данных;
  • период ожидания — запрет на установку версий моложе заданного возраста: от 1 до 365 дней, по умолчанию 1 день; значение 0 отключает правило.

Если файрвол ошибочно заблокировал нужный пакет, пользователь может запросить исключение — его одобряют администраторы организации и специалисты по безопасности.

Отрасль берёт паузу

Параллельно Rust 1.100, выход которого запланирован на 12 ноября 2026 года, получит настраиваемый минимальный возраст публикации крейтов. Параметр global-min-publish-age в cargo/config.toml задаёт его в днях или неделях; если параметр не указан, по умолчанию действует семидневная пауза.

За последний год похожие периоды ожидания появились в npm, Python, Visual Studio Code, Ruby, Bun, pnpm и Yarn. Они затрудняют атаки, при которых злоумышленник захватывает аккаунт мейнтейнера и публикует отравленную версию популярного пакета, рассчитывая на её быстрое распространение.

В компании Socket отмечают и обратную сторону: легитимным исправлениям тоже приходится ждать, если разработчики не сделают исключение. Кроме того, вредоносный код с возрастом безвредным не становится: незамеченный релиз может просто пережить период ожидания. Ценность подхода в том, что исследователи, мейнтейнеры и реестры выигрывают время, чтобы среагировать до того, как очередное обновление зависимостей разнесёт атаку дальше.


Источник: The Hacker News

Комментарии

Войдите, чтобы комментировать.

  • Пока нет комментариев.