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


Краткое руководство. Отправка образов встроенного ПО в анализ встроенного ПО с помощью Azure CLI

В этой статье объясняется, как использовать Azure CLI для отправки образов встроенного ПО в анализ встроенного ПО.

Анализ встроенного ПО — это средство, которое анализирует образы встроенного ПО и обеспечивает понимание уязвимостей безопасности в образах встроенного ПО.

Необходимые компоненты

В этом кратком руководстве предполагается базовое понимание анализа встроенного ПО. Дополнительные сведения см. в разделе "Анализ встроенного ПО для построителей устройств". Список поддерживаемых файловых систем см. в разделе Часто задаваемые вопросы о анализе встроенного ПО.

Подготовка среды к работе с Azure CLI

  • Установите Azure CLI для локального выполнения команд CLI. Если вы работаете в Windows или macOS, Azure CLI можно запустить в контейнере Docker. Дополнительные сведения см. в статье Как запустить Azure CLI в контейнере Docker.

  • Выполните вход в Azure CLI с помощью команды az login. Выполните действия, отображаемые в терминале, чтобы завершить процесс проверки подлинности. Сведения о других возможностях, доступных при входе, см. в статье Вход с помощью Azure CLI.

  • Установите расширение Azure CLI при первом использовании, когда появится соответствующий запрос. Дополнительные сведения о расширениях см. в статье Использование расширений с Azure CLI.

    • Установите расширение анализа встроенного ПО, выполнив следующую команду:
      az extension add --name firmwareanalysis
      
  • Чтобы найти установленную версию и зависимые библиотеки, выполните команду az version. Чтобы обновить до последней версии, выполните команду az upgrade.

  • Подключение подписки к анализу встроенного ПО.

  • Выберите соответствующий идентификатор подписки, где вы хотите отправить образы встроенного ПО, выполнив команду az account set.

Отправка образа встроенного ПО в рабочую область

  1. Создайте образ встроенного ПО для отправки. Вставьте имя группы ресурсов, идентификатор подписки и имя рабочей области в соответствующие параметры.

    az firmwareanalysis firmware create --resource-group myResourceGroup --subscription 123e4567-e89b-12d3-a456-426614174000 --workspace-name default
    

Выходные данные этой команды включают свойство, которое является идентификатором name встроенного ПО. Сохраните этот идентификатор для следующей команды.

  1. Создайте URL-адрес SAS, который будет использоваться на следующем шаге для отправки образа встроенного ПО в служба хранилища Azure. Замените sampleFirmwareID идентификатор встроенного ПО, сохраненный на предыдущем шаге. URL-адрес SAS можно хранить в переменной, чтобы упростить доступ для будущих команд:

    set resourceGroup=myResourceGroup
    set subscription=123e4567-e89b-12d3-a456-426614174000
    set workspace=default
    set firmwareID=sampleFirmwareID
    
    for /f "tokens=*" %i in ('az firmwareanalysis workspace generate-upload-url --resource-group %resourceGroup% --subscription %subscription% --workspace-name %workspace% --firmware-id %firmwareID% --query "url"') do set sasURL=%i
    
  2. Отправьте образ встроенного ПО в служба хранилища Azure. Замените pathToFile путь к изображению встроенного ПО на локальном компьютере.

    az storage blob upload -f "pathToFile" --blob-url %sasURL%
    

Ниже приведен пример рабочего процесса использования этих команд для создания и отправки образа встроенного ПО. Дополнительные сведения об использовании переменных в командах CLI см. в статье "Использование переменных в командах Azure CLI".

set filePath="/path/to/image"
set resourceGroup="myResourceGroup"
set workspace="default"

set fileName="file1"
set vendor="vendor1"
set model="model"
set version="test"

for /f "tokens=*" %i in ('az firmwareanalysis firmware create --resource-group %resourceGroup% --workspace-name %workspace% --file-name %fileName% --vendor %vendor% --model %model% --version %version% --query "name"') do set FWID=%i

for /f "tokens=*" %i in ('az firmwareanalysis workspace generate-upload-url --resource-group %resourceGroup% --workspace-name %workspace% --firmware-id %FWID% --query "url"') do set URL=%i

az storage blob upload -f %filePath% --blob-url %URL%

Получение результатов анализа встроенного ПО

Чтобы получить результаты анализа встроенного ПО, необходимо убедиться, что состояние анализа готово:

az firmwareanalysis firmware show --firmware-id sampleFirmwareID --resource-group myResourceGroup --workspace-name default

Найдите поле "Состояние", чтобы отобразить "Готово", а затем выполните следующие команды, чтобы получить результаты анализа встроенного ПО.

Если вы хотите автоматизировать процесс проверки состояния анализа, можно использовать az resource wait команду.

Команда az resource wait имеет --timeout параметр, который является временем в секундах, что анализ завершится, если состояние не достигает "Готово" в течение интервала времени ожидания. Время ожидания по умолчанию — 3600, что составляет один час. Большие изображения могут занять больше времени для анализа, поэтому можно задать время ожидания с помощью --timeout параметра в соответствии с вашими потребностями. Ниже приведен пример использования az resource wait команды с --timeout параметром для автоматизации проверки состояния анализа, если вы уже создали встроенное ПО и сохранили идентификатор встроенного ПО в переменной с именем $FWID:

set resourceGroup="myResourceGroup"
set workspace="default"
set FWID="yourFirmwareID"

for /f "tokens=*" %i in ('az firmwareanalysis firmware show --resource-group %resourceGroup% --workspace-name %workspace% --firmware-id %FWID% --query "id"') do set ID=%i

echo Successfully created a firmware image with the firmware ID of %FWID%, recognized in Azure by this resource ID: %ID%.

for /f "tokens=*" %i in ('az resource wait --ids %ID% --custom "properties.status=='Ready'" --timeout 10800') do set WAIT=%i

for /f "tokens=*" %i in ('az resource show --ids %ID% --query "properties.status"') do set STATUS=%i

echo Firmware analysis completed with status: %STATUS%

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

SBOM

Следующая команда извлекает SBOM в образе встроенного ПО. Замените каждый аргумент соответствующим значением для группы ресурсов, подписки, имени рабочей области и идентификатора встроенного ПО.

az firmwareanalysis firmware sbom-component --resource-group myResourceGroup --subscription 123e4567-e89b-12d3-a456-426614174000 --workspace-name default --firmware-id sampleFirmwareID

Недостатки

Следующая команда извлекает CVEs, найденные в образе встроенного ПО. Замените каждый аргумент соответствующим значением для группы ресурсов, подписки, имени рабочей области и идентификатора встроенного ПО.

az firmwareanalysis firmware cve --resource-group myResourceGroup --subscription 123e4567-e89b-12d3-a456-426614174000 --workspace-name default --firmware-id sampleFirmwareID

Двоичное ужесточение

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

az firmwareanalysis firmware binary-hardening --resource-group myResourceGroup --subscription 123e4567-e89b-12d3-a456-426614174000 --workspace-name default --firmware-id sampleFirmwareID

Синхронизация хэшей паролей

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

az firmwareanalysis firmware password-hash --resource-group myResourceGroup --subscription 123e4567-e89b-12d3-a456-426614174000 --workspace-name default --firmware-id sampleFirmwareID

Сертификаты

Следующая команда извлекает уязвимые сертификаты шифрования, найденные в образе встроенного ПО. Замените каждый аргумент соответствующим значением для группы ресурсов, подписки, имени рабочей области и идентификатора встроенного ПО.

az firmwareanalysis firmware crypto-certificate --resource-group myResourceGroup --subscription 123e4567-e89b-12d3-a456-426614174000 --workspace-name default --firmware-id sampleFirmwareID

Ключи

Следующая команда извлекает уязвимые ключи шифрования, найденные в образе встроенного ПО. Замените каждый аргумент соответствующим значением для группы ресурсов, подписки, имени рабочей области и идентификатора встроенного ПО.

az firmwareanalysis firmware crypto-key --resource-group myResourceGroup --subscription 123e4567-e89b-12d3-a456-426614174000 --workspace-name default --firmware-id sampleFirmwareID