Краткое руководство. Отправка образов встроенного ПО в анализ встроенного ПО с помощью Azure PowerShell
В этой статье объясняется, как использовать Azure PowerShell для отправки образов встроенного ПО в анализ встроенного ПО.
Анализ встроенного ПО — это средство, которое анализирует образы встроенного ПО и обеспечивает понимание уязвимостей безопасности в образах встроенного ПО.
Необходимые компоненты
В этом кратком руководстве предполагается базовое понимание анализа встроенного ПО. Дополнительные сведения см. в разделе "Анализ встроенного ПО для построителей устройств". Список поддерживаемых файловых систем см. в разделе Часто задаваемые вопросы о анализе встроенного ПО.
Подготовка среды для Azure PowerShell
Установите Azure PowerShell или используйте Azure Cloud Shell.
Войдите в Azure PowerShell, выполнив команду Connect-AzAccount. Пропустите этот шаг, если вы используете Cloud Shell.
Если это первое использование Azure PowerShell для анализа встроенного ПО, установите расширение:
Find-Module -Name Az.FirmwareAnalysis | Install-Module
Подключение подписки к анализу встроенного ПО.
Запустите Set-AzContext , чтобы задать подписку для использования в текущем сеансе. Выберите подписку, в которой вы хотите отправить образы встроенного ПО.
Отправка образа встроенного ПО в рабочую область
Создайте образ встроенного ПО для отправки. Вставьте имя группы ресурсов, имя рабочей области и дополнительные сведения о образе встроенного ПО, который вы хотите включить в соответствующие параметры, например
Description
, ,Model
FileName
Vendor
или .Version
New-AzFirmwareAnalysisFirmware -ResourceGroupName myResourceGroup -WorkspaceName default -Description 'sample description' -FileName file -Vendor vendor -Model model -Version version
Выходные данные этой команды включают свойство, которое является идентификатором Name
встроенного ПО. Сохраните этот идентификатор для следующей команды.
Создайте URL-адрес SAS, который будет использоваться на следующем шаге для отправки образа встроенного ПО в служба хранилища Azure. Замените
sampleFirmwareID
идентификатор встроенного ПО, сохраненный на предыдущем шаге. URL-адрес SAS можно хранить в переменной, чтобы упростить доступ для будущих команд:$sasUrl = New-AzFirmwareAnalysisWorkspaceUploadUrl -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default
Используйте следующий сценарий для отправки образа встроенного ПО в служба хранилища Azure. Замените "
pathToFile
" путем к изображению встроенного ПО на локальном компьютере. Переключите путь в кавычки.$uri = [System.Uri] $sasURL.Url $storageAccountName = $uri.DnsSafeHost.Split(".")[0] $container = $uri.LocalPath.Substring(1) $containerName, $blob = $container -split '/', 2 $sasToken = $uri.Query $filePath = 'pathToFile' $storageContext = New-AzStorageContext -StorageAccountName $storageAccountName -SasToken $sasToken Set-AzStorageBlobContent -File $filePath -Container $containerName -Context $storageContext -Blob $blob -Force
Ниже приведен пример рабочего процесса из комплексного способа использования команд Azure PowerShell для создания и отправки образа встроенного ПО. Замените значения переменных, заданных в начале, чтобы отразить среду.
$filePath='/path/to/image'
$resourceGroup='myResourceGroup'
$workspace='default'
$fileName='file1'
$vendor='vendor1'
$model='model'
$version='test'
$FWID = (New-AzFirmwareAnalysisFirmware -ResourceGroupName $resourceGroup -WorkspaceName $workspace -FileName $fileName -Vendor $vendor -Model $model -Version $version).Name
$sasUrl = New-AzFirmwareAnalysisWorkspaceUploadUrl -FirmwareId $FWID -ResourceGroupName $resourceGroup -WorkspaceName $workspace
$uri = [System.Uri] $sasURL.Url
$storageAccountName = $uri.DnsSafeHost.Split(".")[0]
$container = $uri.LocalPath.Substring(1)
$containerName, $blob = $container -split '/', 2
$sasToken = $uri.Query
$storageContext = New-AzStorageContext -StorageAccountName $storageAccountName -SasToken $sasToken
Set-AzStorageBlobContent -File $filePath -Container $containerName -Context $storageContext -Blob $blob -Force
Получение результатов анализа встроенного ПО
Чтобы получить результаты анализа встроенного ПО, необходимо убедиться, что состояние анализа готово. Замените sampleFirmwareID
идентификатор встроенного ПО, myResourceGroup
именем группы ресурсов и default
именем рабочей области:
Get-AzFirmwareAnalysisFirmware -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default
Найдите поле "Состояние", чтобы отобразить "Готово", а затем выполните соответствующие команды, чтобы получить результаты анализа встроенного ПО.
Если вы хотите автоматизировать процесс проверки состояния анализа, можно использовать следующий сценарий, чтобы периодически проверять состояние ресурса до тех пор, пока не достигнет значения "Готово". Переменная может быть задана $timeoutInSeconds
в зависимости от размера изображения. Более крупные изображения могут занять больше времени для анализа, поэтому настройте эту переменную в соответствии с вашими потребностями.
$ID = Get-AzFirmwareAnalysisFirmware -ResourceGroupName $resourceGroup -WorkspaceName default -FirmwareId $FWID | Select-Object -ExpandProperty Id
Write-Host "Successfully created a firmware image, recognized in Azure by this resource id: $ID."
$timeoutInSeconds = 10800
$startTime = Get-Date
while ($true) {
$resource = Get-AzResource -ResourceId $ID
$status = $resource.Properties.Status
if ($status -eq 'ready') {
Write-Host "Firmware analysis completed with status: $status"
break
}
$elapsedTime = (Get-Date) - $startTime
if ($elapsedTime.TotalSeconds -ge $timeoutInSeconds) {
Write-Host "Timeout reached. Firmware analysis status: $status"
break
}
Start-Sleep -Seconds 10
}
SBOM
Следующая команда извлекает SBOM в образе встроенного ПО. Замените каждый аргумент соответствующим значением для группы ресурсов, подписки, имени рабочей области и идентификатора встроенного ПО.
Get-AzFirmwareAnalysisSbomComponent -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default
Недостатки
Следующая команда извлекает CVEs, найденные в образе встроенного ПО. Замените каждый аргумент соответствующим значением для группы ресурсов, подписки, имени рабочей области и идентификатора встроенного ПО.
Get-AzFirmwareAnalysisCve -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default
Двоичное ужесточение
Следующая команда извлекает результаты анализа на двоичное ужесточение в образе встроенного ПО. Замените каждый аргумент соответствующим значением для группы ресурсов, подписки, имени рабочей области и идентификатора встроенного ПО.
Get-AzFirmwareAnalysisBinaryHardening -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default
Синхронизация хэшей паролей
Следующая команда извлекает хэши паролей в образе встроенного ПО. Замените каждый аргумент соответствующим значением для группы ресурсов, подписки, имени рабочей области и идентификатора встроенного ПО.
Get-AzFirmwareAnalysisPasswordHash -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default
Сертификаты
Следующая команда извлекает уязвимые сертификаты шифрования, найденные в образе встроенного ПО. Замените каждый аргумент соответствующим значением для группы ресурсов, подписки, имени рабочей области и идентификатора встроенного ПО.
Get-AzFirmwareAnalysisCryptoCertificate -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default
Ключи
Следующая команда извлекает уязвимые ключи шифрования, найденные в образе встроенного ПО. Замените каждый аргумент соответствующим значением для группы ресурсов, подписки, имени рабочей области и идентификатора встроенного ПО.
Get-AzFirmwareAnalysisCryptoKey -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default