Dela via


Snabbstart: Ladda upp avbildningar av inbyggd programvara till Defender for IoT Firmware Analysis med Azure CLI

Den här artikeln beskriver hur du använder Azure CLI för att ladda upp avbildningar av inbyggd programvara till Defender for IoT Firmware Analysis.

Defender for IoT Firmware Analysis är ett verktyg som analyserar bilder av inbyggd programvara och ger en förståelse för säkerhetsrisker i avbildningarna av inbyggd programvara.

Förutsättningar

Den här snabbstarten förutsätter en grundläggande förståelse av Defender for IoT Firmware Analysis. Mer information finns i Analys av inbyggd programvara för enhetsbyggare. En lista över de filsystem som stöds finns i Vanliga frågor och svar om Defender för analys av inbyggd IoT-programvara.

Förbereda din miljö för Azure CLI

  • Installera Azure CLI för att köra CLI-kommandon lokalt. Om du kör i Windows eller macOS kan du köra Azure CLI i en Docker-container. Mer information finns i Så här kör du Azure CLI i en Docker-container.

  • Logga in på Azure CLI med kommandot az login . Följ stegen som visas i terminalen för att slutföra autentiseringsprocessen. Andra inloggningsalternativ finns i Logga in med Azure CLI.

  • När du uppmanas att installera Azure CLI-tillägget vid första användningen. Mer information om tillägg finns i Använda tillägg med Azure CLI.

    • Installera tillägget Defender for IoT Firmware Analysis genom att köra följande kommando:
      az extension add --name firmwareanalysis
      
  • Kör kommandot az version för att hitta den version och de beroende bibliotek som är installerade. Om du vill uppgradera till den senaste versionen kör du kommandot az upgrade.

  • Registrera din prenumeration på Defender for IoT Firmware Analysis.

  • Välj lämpligt prenumerations-ID där du vill ladda upp dina avbildningar av inbyggd programvara genom att köra kommandot az account set.

Ladda upp en avbildning av inbyggd programvara till arbetsytan

  1. Skapa en avbildning av inbyggd programvara som ska laddas upp. Infoga resursgruppens namn, prenumerations-ID och arbetsytans namn i respektive parametrar.

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

Utdata från det här kommandot innehåller en name egenskap, som är ditt ID för inbyggd programvara. Spara det här ID:t för nästa kommando.

  1. Generera en SAS-URL som du använder i nästa steg för att skicka avbildningen av den inbyggda programvaran till Azure Storage. Ersätt sampleFirmwareID med det ID för inbyggd programvara som du sparade från föregående steg. Du kan lagra SAS-URL:en i en variabel för enklare åtkomst för framtida kommandon:

    $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. Ladda upp avbildningen av den inbyggda programvaran till Azure Storage. Ersätt pathToFile med sökvägen till avbildningen av den inbyggda programvaran på den lokala datorn.

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

Här är ett exempel på ett arbetsflöde för hur du kan använda dessa kommandon för att skapa och ladda upp en avbildning av inbyggd programvara. Mer information om hur du använder variabler i CLI-kommandon finns i Använda variabler i Azure CLI-kommandon:

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

Hämta resultat för analys av inbyggd programvara

Om du vill hämta resultat från analys av inbyggd programvara måste du se till att analysens status är "Klar":

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

Leta efter fältet "status" för att visa "Klar" och kör sedan följande kommandon för att hämta analysresultatet för den inbyggda programvaran.

Om du vill automatisera processen med att kontrollera analysens status kan du använda az resource wait kommandot .

Kommandot az resource wait har en --timeout parameter, vilket är den tid i sekunder som analysen slutar om "status" inte når "Klar" inom tidsgränsen. Standardtimeouten är 3600, vilket är en timme. Det kan ta längre tid att analysera stora bilder, så du kan ange tidsgränsen med hjälp av parametern --timeout efter dina behov. Här är ett exempel på hur du kan använda az resource wait kommandot med parametern --timeout för att automatisera kontrollen av analysens status, förutsatt att du redan har skapat en inbyggd programvara och lagrat firmware-ID:t i en variabel med namnet $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)

När du har bekräftat att analysstatusen är "Klar" kan du köra kommandon för att hämta resultatet.

SBOM

Följande kommando hämtar SBOM i avbildningen av den inbyggda programvaran. Ersätt varje argument med lämpligt värde för resursgruppen, prenumerationen, arbetsytans namn och ID för inbyggd programvara.

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

Svagheter

Följande kommando hämtar CVE:er som finns i avbildningen av den inbyggda programvaran. Ersätt varje argument med lämpligt värde för resursgruppen, prenumerationen, arbetsytans namn och ID för inbyggd programvara.

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

Binär härdning

Följande kommando hämtar analysresultat vid binär härdning i din avbildning av inbyggd programvara. Ersätt varje argument med lämpligt värde för resursgruppen, prenumerationen, arbetsytans namn och ID för inbyggd programvara.

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

Lösenordshashvärden

Följande kommando hämtar lösenordshashvärden i avbildningen av den inbyggda programvaran. Ersätt varje argument med lämpligt värde för resursgruppen, prenumerationen, arbetsytans namn och ID för inbyggd programvara.

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

Certifikat

Följande kommando hämtar sårbara kryptocertifikat som hittades i avbildningen av den inbyggda programvaran. Ersätt varje argument med lämpligt värde för resursgruppen, prenumerationen, arbetsytans namn och ID för inbyggd programvara.

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

Nycklar

Följande kommando hämtar sårbara kryptonycklar som hittades i avbildningen av den inbyggda programvaran. Ersätt varje argument med lämpligt värde för resursgruppen, prenumerationen, arbetsytans namn och ID för inbyggd programvara.

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