Поделиться через


Использование аудита npm для обнаружения и устранения уязвимостей пакетов

Azure DevOps Services

Команда npm audit проводит тщательное сканирование вашего проекта, идентифицирует потенциальные уязвимости безопасности и создает подробный отчет, выделяющий все обнаруженные проблемы. Проведение аудита безопасности является важным шагом в распознавании и устранении уязвимостей в зависимостях проекта. Команда npm audit fix автоматически устраняет обнаруженные уязвимости, обновляя небезопасные версии пакетов до последних безопасных версий. Устранение этих уязвимостей имеет решающее значение для предотвращения потенциальных проблем, таких как потеря данных, нарушения службы и несанкционированный доступ к конфиденциальной информации.

Предупреждение

Выполнение команды npm audit передаст имена всех пакетов, указанных в ваших package.json, в общедоступный реестр.

Локальное выполнение аудита npm

npm audit можно выполнять локально, без необходимости аутентификации в вашем фиде. Это позволяет проверять проект на наличие уязвимостей и получать подробный отчет об обнаруженных проблемах безопасности и их серьезности.

Если вы хотите устранить обнаруженные уязвимости, можно запустить npm audit fix, но для этого необходимо пройти проверку подлинности с помощью веб-канала. Эта команда обновляет небезопасные версии пакетов до последних доступных безопасных выпусков.

Когда вы запускаете npm audit fix, это не только обновляет package.json и package-lock.json локального проекта, но и синхронизирует эти изменения с соответствующим фидом Azure Artifacts. Новейшие защищенные версии пакетов будут автоматически доступны в вашей ленте.

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

  1. Выполните следующую команду в каталоге проекта, чтобы выполнить аудит npm:

    npm audit
    
  2. Если вы хотите попытаться обновить до неуязвимых версий пакетов, убедитесь, что вы сначала подключены к вашей ленте, а затем выполните следующую команду в каталоге проекта:

    npm audit fix
    

После запуска команды npm audit fix, обязательно тщательно протестируйте приложение, чтобы убедиться, что обновления не вызывают поломок. Если для исправления требуется крупное обновление версии, рекомендуется просмотреть заметки выпуска пакета на предмет потенциальных критических изменений. Помните, что в то время как частный пакет с общедоступными уязвимыми зависимостями получает оповещения об уязвимостях, он не будет получать исправления через исправление аудита npm.

Примечание.

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

Запустите npm audit из вашего конвейера

Azure Pipelines в настоящее время не поддерживает проверку npm. Если вы пытаетесь использовать обычную команду аудита npm в конвейере, она завершится ошибкой. Вместо этого выполните аудита npm с помощью аргумента --registry и укажите исходный URL-адрес веб-канала.

  1. Войдите в организацию Azure DevOps и перейдите к проекту.

  2. Выберите Пайплайны, выберите ваш пайплайн, затем выберите Изменить, чтобы изменить его.

  3. В определении конвейера выберите знак +, чтобы добавить новую задачу.

  4. Найдите задачу npm, а затем выберите Добавить, чтобы добавить ее в конвейер.

  5. Введите отображаемое имя для задачи и выберите настраиваемый из раскрывающегося меню "Команда" .

  6. Вставьте вашу настраиваемую команду в текстовое поле с командой и аргументами.

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

      audit --registry=<FEED_SOURCE_URL>
      
    2. Если вы хотите выполнить обновление до незащищенных версий пакетов, используйте следующую команду. Замените заполнитель исходным URL-адресом веб-канала:

    audit fix --registry=<FEED_SOURCE_URL>
    

    Снимок экрана: задача аудита npm в классическом конвейере.