Guia de início rápido: carregar imagens de firmware para o Defender for IoT Firmware Analysis usando o Azure PowerShell

Este artigo explica como usar o Azure PowerShell para carregar imagens de firmware no Defender for IoT Firmware Analysis.

O Defender for IoT Firmware Analysis é uma ferramenta que analisa imagens de firmware e fornece uma compreensão das vulnerabilidades de segurança nas imagens de firmware.

Pré-requisitos

Este guia de início rápido pressupõe uma compreensão básica da Análise de Firmware do Defender for IoT. Para obter mais informações, consulte Análise de firmware para construtores de dispositivos. Para obter uma lista dos sistemas de arquivos suportados, consulte Perguntas freqüentes sobre a análise de firmware do Defender for IoT.

Preparar seu ambiente para o Azure PowerShell

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

  • Entre no Azure PowerShell executando o comando Connect-AzAccount. Ignore esta etapa se estiver usando o Cloud Shell.

  • Se este for seu primeiro uso do Azure PowerShell do Defender for IoT Firmware Analysis, instale a extensão:

    Find-Module -Name Az.FirmwareAnalysis | Install-Module
    
  • Integre sua assinatura do Defender for IoT Firmware Analysis.

  • Execute Set-AzContext para definir sua assinatura para usar na sessão atual. Selecione a subscrição onde pretende carregar as suas imagens de firmware.

Carregar uma imagem de firmware para a área de trabalho

  1. Crie uma imagem de firmware para ser carregada. Insira o nome do grupo de recursos, o nome do espaço de trabalho e quaisquer detalhes adicionais sobre a imagem do firmware que você gostaria de incluir nos respetivos parâmetros, como um Description, FileName, Vendor, Modelou Version.

    New-AzFirmwareAnalysisFirmware -ResourceGroupName myResourceGroup -WorkspaceName default -Description 'sample description' -FileName file -Vendor vendor -Model model -Version version
    

A saída deste comando inclui uma Name propriedade, que é o seu 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 pelo ID de 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 a imagem do firmware na máquina local. Envolva 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, você deve certificar-se de que o status da análise é "Pronto". Substitua sampleFirmwareID pelo ID do firmware, myResourceGroup pelo nome do grupo de recursos e default pelo nome do espaço de trabalho:

Get-AzFirmwareAnalysisFirmware -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default

Procure o campo "status" para exibir "Ready" e, em seguida, execute os respetivos comandos para recuperar os resultados da análise de firmware.

Se você gostaria de automatizar o processo de verificação do status da sua análise, você pode usar o script a seguir para verificar o status do recurso periodicamente até que ele atinja "Pronto". Você pode definir a $timeoutInSeconds variável dependendo do tamanho da sua imagem - imagens maiores podem levar mais tempo para analisar, então 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
}

$ 80 M

O comando a seguir recupera a SBOM na imagem do firmware. Substitua cada argumento pelo valor apropriado para seu grupo de recursos, assinatura, nome do espaço de trabalho e ID de firmware.

Get-AzFirmwareAnalysisSbomComponent -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default

Desvantagens

O comando a seguir recupera CVEs encontrados na imagem do firmware. Substitua cada argumento pelo valor apropriado para seu grupo de recursos, assinatura, nome do espaço de trabalho e ID de firmware.

Get-AzFirmwareAnalysisCve -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default 

Endurecimento binário

O comando a seguir recupera os resultados da análise sobre proteção binária na imagem do firmware. Substitua cada argumento pelo valor apropriado para seu grupo de recursos, assinatura, nome do espaço de trabalho e ID de firmware.

Get-AzFirmwareAnalysisBinaryHardening -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default 

Hashes de palavras-passe

O comando a seguir recupera hashes de senha na imagem do firmware. Substitua cada argumento pelo valor apropriado para seu grupo de recursos, assinatura, nome do espaço de trabalho e ID de firmware.

Get-AzFirmwareAnalysisPasswordHash -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default 

Certificados

O comando a seguir recupera certificados de criptografia vulneráveis que foram encontrados na imagem do firmware. Substitua cada argumento pelo valor apropriado para seu grupo de recursos, assinatura, nome do espaço de trabalho e ID de firmware.

Get-AzFirmwareAnalysisCryptoCertificate -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default 

Chaves

O comando a seguir recupera chaves de criptografia vulneráveis que foram encontradas na imagem do firmware. Substitua cada argumento pelo valor apropriado para seu grupo de recursos, assinatura, nome do espaço de trabalho e ID de firmware.

Get-AzFirmwareAnalysisCryptoKey -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default