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


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

Azure DevOps Services

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

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

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

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

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

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

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

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

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

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

    npm audit fix
    

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

Примечание.

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

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

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>
    

    A screenshot showing the npm audit task in a classic pipeline.