Логотип

GitHub объявляет об изменениях в системе безопасности npm для защиты от атак на цепочки поставок

GitHub объявляет об изменениях в системе безопасности npm для защиты от атак на цепочки поставок

Компания GitHub объявила, что в npm версии 12, выход которой ожидается в следующем месяце, будет внесено несколько изменений, направленных на повышение безопасности и предотвращение атак на цепочки поставок с использованием команд, запускаемых с помощью команды «npm install».

npm install — это команда, используемая для загрузки и установки зависимостей проекта, а также для запуска любых скриптов, связанных с установкой, определенных в пакетах.

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

Основная идея объявления заключается в том, что выполнение кода и использование источников зависимостей, не входящих в реестр, которые в настоящее время запускаются автоматически при установке npm, теперь будут требовать явного подтверждения, а не будут считаться доверенными по умолчанию.

В частности, GitHub объявил о следующих изменениях:

  1. Начиная с версии 12, команда npm install не будет запускать сценарии preinstall, install или postinstall для зависимостей, если они не были явно одобрены. Это также относится к сборкам нативных модулей, запускаемым с помощью node-gyp, и сценариям подготовки из Git, локальных файлов и связанных зависимостей.
  2. Команда npm install больше не будет извлекать зависимости из репозиториев Git, как прямых, так и транзитивных, если это не разрешено явно. По словам представителей GitHub, это устраняет возможность выполнения кода, при которой файл .npmrc зависимости от Git мог изменить используемый исполняемый файл Git, даже если сценарии установки были отключены.
  3. Зависимости, установленные с удаленных URL-адресов, например из архивов HTTPS, больше не будут разрешаться, если это не разрешено явно. Это касается как прямых, так и косвенных зависимостей.
Читать  Apple выпустила скрытое обновление безопасности: устранена уязвимость WebKit

 

Эти изменения могут значительно снизить количество атак на цепочки поставок за счет отмены автоматического выполнения скриптов установки зависимостей, автоматического разрешения зависимостей на основе Git и автоматического разрешения зависимостей от удаленных URL-адресов.

Новые настройки по умолчанию могли нарушить работу нескольких методов атак, использованных в недавних атаках на цепочки поставок.

Сюда входят вредоносные кампании по предварительной установке/последующей установке с использованием eslint-config-prettier, пакеты Picasso от Toptal, десятки npm-пакетов, крадущих данные, а также злоупотребление зависимостями Git, задокументированное в атаках Shai-Hulud.

Проекты, в которых любое из этих действий используется для корректной работы, должны быть явно одобрены перед обновлением до npm v12.

GitHub рекомендует разработчикам подготовиться к обновлению, установив npm версии 11.16.0 или новее, которая выдает предупреждения обо всех действиях, которые не будут работать в версии 12.

Это позволит разработчикам, выполняющим обычную процедуру установки, просмотреть эти предупреждения и выявить зависимости или рабочие процессы, которые потребуют явного одобрения перед обновлением.

После обновления до версии 12 автоматически продолжат работать только те скрипты и источники зависимостей, которые были одобрены явно.

Для разработчиков открыта дискуссия в сообществе, где они могут поделиться своими предложениями по поводу предстоящих изменений.

Редактор: AndreyEx

Рейтинг: 5 (1 голос)

Важно: Данная статья носит информационный характер. Автор не несёт ответственности за возможные сбои или ошибки, возникшие при использовании описанного программного обеспечения.

Если статья понравилась, то поделитесь ей в социальных сетях:

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

17 + одиннадцать =

Это может быть вам интересно


Спасибо!

Теперь редакторы в курсе.

Прокрутить страницу до начала