Partilhar via


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

Este artigo explica como usar a CLI do Azure 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.

Prepare o seu ambiente para o CLI do Azure

  • Instale a CLI do Azure para executar comandos da CLI localmente. Se estiver a utilizar o Windows ou macOS, considere executar a CLI do Azure num contentor Docker. Para obter mais informações, consulte Como executar a CLI do Azure em um contêiner do Docker.

  • Entre na CLI do Azure usando o comando az login . Siga os passos apresentados no seu terminal para concluir o processo de autenticação. Para outras opções de entrada, consulte Entrar com a CLI do Azure.

  • Quando solicitado, instale a extensão da CLI do Azure na primeira utilização. Para obter mais informações sobre as extensões, veja Utilizar extensões com o CLI do Azure.

    • Instale a extensão Defender for IoT Firmware Analysis executando o seguinte comando:
      az extension add --name firmwareanalysis
      
  • Para localizar a versão e as bibliotecas dependentes instaladas, execute o comando az version. Para atualizar para a versão mais recente, execute o comando az upgrade.

  • Integre sua assinatura do Defender for IoT Firmware Analysis.

  • Selecione o ID de assinatura apropriado onde você gostaria de carregar suas imagens de firmware executando o comando az account set.

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, a ID da assinatura e o nome do espaço de trabalho nos respetivos parâmetros.

    az firmwareanalysis firmware create --resource-group myResourceGroup --subscription 123e4567-e89b-12d3-a456-426614174000 --workspace-name default
    

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 = $(az firmwareanalysis workspace generate-upload-url --resource-group myResourceGroup --subscription 123e4567-e89b-12d3-a456-426614174000 --workspace-name default --firmware-id sampleFirmwareID --query "url")
    
  2. Carregue sua imagem de firmware no Armazenamento do Azure. Substitua pathToFile pelo caminho para a imagem do firmware na máquina local.

    az storage blob upload -f pathToFile --blob-url $sasURL
    

Aqui está um exemplo de fluxo de trabalho de como você pode usar esses comandos para criar e carregar uma imagem de firmware. Para saber mais sobre como usar variáveis em comandos da CLI, visite Como usar variáveis nos comandos da CLI do Azure:

$filePath='/path/to/image'
$resourceGroup='myResourceGroup'
$workspace='default'

$fileName='file1'
$vendor='vendor1'
$model='model'
$version='test'

$FWID=$(az firmwareanalysis firmware create --resource-group $resourceGroup --workspace-name $workspace --file-name $fileName --vendor $vendor --model $model --version $version --query "name")

$URL=$(az firmwareanalysis workspace generate-upload-url --resource-group $resourceGroup --workspace-name $workspace --firmware-id $FWID --query "url")

$OUTPUT=(az storage blob upload -f $filePath --blob-url $URL)

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":

az firmwareanalysis firmware show --firmware-id sampleFirmwareID --resource-group myResourceGroup --workspace-name default

Procure o campo "status" para exibir "Ready" e execute os seguintes 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, você pode usar o az resource wait comando.

O az resource wait comando tem um --timeout parâmetro, que é o tempo em segundos que a análise terminará se "status" não atingir "Ready" dentro do período de tempo limite. O tempo limite padrão é 3600, que é de uma hora. Imagens grandes podem levar mais tempo para serem analisadas, então você pode definir o tempo limite usando o parâmetro de --timeout acordo com suas necessidades. Aqui está um exemplo de como você pode usar o az resource wait comando com o parâmetro para automatizar a --timeout verificação do status da sua análise, supondo que você já tenha criado um firmware e armazenado o ID do firmware em uma variável chamada $FWID:

$ID=$(az firmwareanalysis firmware show --resource-group $resourceGroup --workspace-name $workspace --firmware-id $FWID --query "id")

Write-Host (‘Successfully created a firmware image with the firmware ID of ‘ + $FWID + ‘, recognized in Azure by this resource ID: ‘ + $ID + ‘.’)

$WAIT=$(az resource wait --ids $ID --custom "properties.status=='Ready'" --timeout 10800) 

$STATUS=$(az resource show --ids $ID --query 'properties.status')

Write-Host ('Firmware analysis completed with status: ' + $STATUS)

Depois de confirmar que o status da análise é "Pronto", você pode executar comandos para extrair os resultados.

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

az firmwareanalysis firmware sbom-component --resource-group myResourceGroup --subscription 123e4567-e89b-12d3-a456-426614174000 --workspace-name default --firmware-id sampleFirmwareID

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.

az firmwareanalysis firmware cve --resource-group myResourceGroup --subscription 123e4567-e89b-12d3-a456-426614174000 --workspace-name default --firmware-id sampleFirmwareID

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.

az firmwareanalysis firmware binary-hardening --resource-group myResourceGroup --subscription 123e4567-e89b-12d3-a456-426614174000 --workspace-name default --firmware-id sampleFirmwareID

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.

az firmwareanalysis firmware password-hash --resource-group myResourceGroup --subscription 123e4567-e89b-12d3-a456-426614174000 --workspace-name default --firmware-id sampleFirmwareID

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.

az firmwareanalysis firmware crypto-certificate --resource-group myResourceGroup --subscription 123e4567-e89b-12d3-a456-426614174000 --workspace-name default --firmware-id sampleFirmwareID

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.

az firmwareanalysis firmware crypto-key --resource-group myResourceGroup --subscription 123e4567-e89b-12d3-a456-426614174000 --workspace-name default --firmware-id sampleFirmwareID