Início Rápido: carregar imagens de firmware na Análise de Firmware usando o Azure PowerShell
Esse artigo explica como usar o Azure PowerShell para carregar imagens de firmware na análise do Firmware.
Análise de Firmware é uma ferramenta que analisa imagens de firmware e fornece um entendimento das vulnerabilidades de segurança nas imagens de firmware.
Pré-requisitos
Este início rápido pressupõe uma compreensão básica da análise de Firmware. Para obter mais informações, confira nossas Análise de firmware para criadores de dispositivos. Para obter uma lista dos sistemas de arquivos com suporte, confira Perguntas frequentes sobre a Análise de Firmware.
Prepare seu ambiente para o Azure PowerShell
Entre no Azure PowerShell executando o comando Connect-AzAccount. Ignore essa etapa se você estiver usando o Cloud Shell.
Se esse for seu primeiro uso da Análise de Firmware do Azure PowerShell, instale a extensão:
Find-Module -Name Az.FirmwareAnalysis | Install-Module
Integre sua assinatura à Análise de Firmware.
Execute Set-AzContext para definir sua assinatura a ser usada na sessão atual. Selecione a assinatura na qual você deseja carregar suas imagens de firmware.
Carregue uma imagem de firmware no workspace
Crie uma imagem de firmware a ser carregada. Insira o nome do grupo de recursos, o nome do workspace e os detalhes adicionais sobre sua imagem de firmware que você gostaria de incluir nos respectivos parâmetros, como um
Description
,FileName
,Vendor
,Model
ouVersion
.New-AzFirmwareAnalysisFirmware -ResourceGroupName myResourceGroup -WorkspaceName default -Description 'sample description' -FileName file -Vendor vendor -Model model -Version version
A saída desse comando inclui uma propriedade Name
, que é sua ID de firmware. Salve essa ID para o próximo comando.
Gere uma URL SAS que você usará na próxima etapa para enviar sua imagem de firmware para o Armazenamento do Azure. Substitua
sampleFirmwareID
pela ID do firmware que você salvou da etapa anterior. Você pode armazenar a URL SAS em uma variável para facilitar o acesso a comandos futuros:$sasUrl = New-AzFirmwareAnalysisWorkspaceUploadUrl -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default
Use o script a seguir para carregar sua imagem de firmware no Armazenamento do Azure. Substitua '
pathToFile
' pelo caminho para sua imagem de firmware no computador local. Encapsule o caminho entre aspas.$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
Aqui está um exemplo de fluxo de trabalho de ponta a ponta de como você pode usar os comandos do Azure PowerShell para criar e carregar uma imagem de firmware. Substitua os valores das variáveis definidas no início para refletir seu ambiente.
$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
Recuperar resultados da análise de firmware
Para recuperar os resultados da análise de firmware, verifique se o status da análise está como "Pronto". Substitua sampleFirmwareID
pela ID do firmware, myResourceGroup
pelo nome do grupo de recursos e default
pelo nome do workspace:
Get-AzFirmwareAnalysisFirmware -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default
Procure o campo "status" para visualizar "Pronto" e execute os respectivos comandos para recuperar os resultados da análise de firmware.
Se você quiser automatizar o processo de verificação do status da sua análise, poderá usar o script a seguir para verificar o status do recurso periodicamente até chegar a "Pronto". Você pode definir a variável $timeoutInSeconds
dependendo do tamanho da imagem– imagens maiores podem levar mais tempo para serem analisadas, portanto, ajuste essa variável de acordo com suas necessidades.
$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
O comando a seguir recupera o SBOM na sua imagem de firmware. Substitua cada argumento pelo valor apropriado no seu grupo de recursos, assinatura, nome do espaço de trabalho e ID do firmware.
Get-AzFirmwareAnalysisSbomComponent -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default
Pontos fracos
O comando a seguir recupera os CVEs encontrados na sua imagem de firmware. Substitua cada argumento pelo valor apropriado no seu grupo de recursos, assinatura, nome do espaço de trabalho e ID do firmware.
Get-AzFirmwareAnalysisCve -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default
Proteção binária
O comando a seguir recupera os resultados da análise sobre a proteção binária na sua imagem de firmware. Substitua cada argumento pelo valor apropriado no seu grupo de recursos, assinatura, nome do espaço de trabalho e ID do firmware.
Get-AzFirmwareAnalysisBinaryHardening -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default
Hashes de senha
O comando a seguir recupera os códigos hash da senha na sua imagem de firmware. Substitua cada argumento pelo valor apropriado no seu grupo de recursos, assinatura, nome do espaço de trabalho e ID do firmware.
Get-AzFirmwareAnalysisPasswordHash -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default
Certificados
O comando a seguir recupera os certificados criptográficos vulneráveis que foram encontrados na imagem do firmware. Substitua cada argumento pelo valor apropriado no seu grupo de recursos, assinatura, nome do espaço de trabalho e ID do firmware.
Get-AzFirmwareAnalysisCryptoCertificate -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default
Teclas
O comando a seguir recupera as chaves criptográficas vulneráveis que foram encontradas na sua imagem de firmware. Substitua cada argumento pelo valor apropriado no seu grupo de recursos, assinatura, nome do espaço de trabalho e ID do firmware.
Get-AzFirmwareAnalysisCryptoKey -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default