Compartilhar via


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

  1. Instale o Azure PowerShell ou use o Azure Cloud Shell.

  2. Entre no Azure PowerShell executando o comando Connect-AzAccount. Ignore essa etapa se você estiver usando o Cloud Shell.

  3. 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
    
  4. Integre sua assinatura à Análise de Firmware.

  5. 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

  1. 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 ou Version.

    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.

  1. 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
    
  2. 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