Краткое руководство. Отправка образов встроенного ПО в анализ встроенного ПО с помощью 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.
Отправка образа встроенного ПО в рабочую область
Создайте образ встроенного ПО для отправки. Вставьте имя группы ресурсов, идентификатор подписки и имя рабочей области в соответствующие параметры.
az firmwareanalysis firmware create --resource-group myResourceGroup --subscription 123e4567-e89b-12d3-a456-426614174000 --workspace-name default
Выходные данные этой команды включают свойство, которое является идентификатором name
встроенного ПО. Сохраните этот идентификатор для следующей команды.
Создайте 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
Отправьте образ встроенного ПО в служба хранилища 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