Schnellstart: Hochladen von Firmwareimages in die Firmwareanalyse mit Azure PowerShell
Dieser Artikel erklärt, wie Sie Azure PowerShell verwenden, um Firmwareimages für die Firmwareanalyse hochzuladen.
Die Firmwareanalyse ist ein Tool, das Firmwareimages analysiert und ein Verständnis von Sicherheitsrisiken in den Firmwareimages vermittelt.
Voraussetzungen
In diesem Schnellstart wird ein grundlegendes Verständnis der Firmwareanalyse vorausgesetzt. Weitere Informationen finden Sie unter Firmwareanalyse für Geräteentwickler. Eine Liste der unterstützten Dateisysteme finden Sie unter Häufig gestellte Fragen zur Firmwareanalyse.
Bereiten Sie Ihre Umgebung für Azure PowerShell vor
Installieren Sie Azure PowerShell oder verwenden Sie Azure Cloud Shell.
Melden Sie sich bei Azure PowerShell an, indem Sie den Befehl Connect-AzAccount ausführen. Überspringen Sie diesen Schritt, wenn Sie Cloud Shell verwenden.
Wenn Sie die Azure PowerShell der Firmwareanalyse zum ersten Mal verwenden, installieren Sie die Erweiterung:
Find-Module -Name Az.FirmwareAnalysis | Install-Module
Integrieren Sie Ihr Abonnement in die Firmwareanalyse.
Führen Sie Set-AzContext aus, um Ihr Abonnement zur Verwendung in der aktuellen Sitzung festzulegen. Wählen Sie das Abonnement, in das Sie Ihre Firmware-Images hochladen möchten.
Hochladen eines Firmwareimages in den Arbeitsbereich
Erstellen Sie ein Firmwareimage, das hochgeladen werden soll. Fügen Sie den Namen Ihrer Ressourcengruppe, den Namen Ihres Arbeitsbereichs und alle zusätzlichen Details zu Ihrem Firmware-Image ein, die Sie in die entsprechenden Parameter aufnehmen möchten, wie z.B. ein
Description
,FileName
,Vendor
,Model
, oderVersion
.New-AzFirmwareAnalysisFirmware -ResourceGroupName myResourceGroup -WorkspaceName default -Description 'sample description' -FileName file -Vendor vendor -Model model -Version version
Die Ausgabe dieses Befehls enthält die Eigenschaft Name
, die Ihre Firmware-ID enthält. Speichern Sie diese ID für den nächsten Befehl.
Generieren Sie eine SAS-URL, die Sie im nächsten Schritt verwenden werden, um Ihr Firmware-Image an Azure Storage zu senden. Ersetzen Sie
sampleFirmwareID
durch die Firmware-ID, die Sie im vorherigen Schritt gespeichert haben. Sie können die SAS-URL in einer Variablen speichern, um bei zukünftigen Befehlen leichter darauf zugreifen zu können:$sasUrl = New-AzFirmwareAnalysisWorkspaceUploadUrl -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default
Verwenden Sie das folgende Skript, um Ihr Firmware-Image auf Azure Storage hochzuladen. Ersetzen Sie '
pathToFile
' durch den Pfad zu Ihrem Firmware-Image auf Ihrem lokalen Rechner. Schließen Sie den Pfad in Anführungszeichen ein.$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
Hier sehen Sie einen End-to-End-Beispielworkflow, wie Sie die Azure PowerShell-Befehle zum Erstellen und Hochladen eines Firmware-Images verwenden können. Ersetzen Sie die Werte für die zu Beginn gesetzten Variablen, um Ihre Umgebung widerzuspiegeln.
$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
Abrufen von Firmwareanalyseergebnissen
Um die Ergebnisse der Firmware-Analyse abzurufen, müssen Sie sicherstellen, dass der Status der Analyse auf "Bereit" steht. Ersetzen Sie sampleFirmwareID
durch Ihre Firmware-ID, myResourceGroup
durch den Namen Ihrer Ressourcengruppe und default
durch Ihren Arbeitsbereichsname:
Get-AzFirmwareAnalysisFirmware -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default
Achten Sie darauf, dass im Feld "Status" "Bereit" angezeigt wird, und führen Sie dann die entsprechenden Befehle aus, um die Ergebnisse der Firmware-Analyse abzurufen.
Wenn Sie den Prozess der Überprüfung des Analysestatus automatisieren möchten, können Sie das folgende Skript verwenden, um den Ressourcenstatus regelmäßig zu überprüfen, bis er "Bereit" erreicht. Sie können die $timeoutInSeconds
Variable in Abhängigkeit von der Größe Ihres Bildes einstellen – bei größeren Bildern kann die Analyse länger dauern, also passen Sie diese Variable entsprechend Ihren Bedürfnissen an.
$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
Mit dem folgenden Befehl wird das SBOM in Ihrem Firmwareimage abgerufen. Ersetzen Sie die einzelnen Argumente durch den entsprechenden Wert für Ihre Ressourcengruppe, Ihr Abonnement, den Arbeitsbereichsnamen und die Firmware-ID.
Get-AzFirmwareAnalysisSbomComponent -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default
Schwächen
Der folgende Befehl ruft die in Ihrem Firmware-Image gefundenen CVEs ab. Ersetzen Sie die einzelnen Argumente durch den entsprechenden Wert für Ihre Ressourcengruppe, Ihr Abonnement, den Arbeitsbereichsnamen und die Firmware-ID.
Get-AzFirmwareAnalysisCve -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default
Binäre Härtung
Der folgende Befehl ruft Analyseergebnisse zur binären Härtung in Ihrem Firmwareimage ab. Ersetzen Sie die einzelnen Argumente durch den entsprechenden Wert für Ihre Ressourcengruppe, Ihr Abonnement, den Arbeitsbereichsnamen und die Firmware-ID.
Get-AzFirmwareAnalysisBinaryHardening -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default
Kennworthashes
Mit dem folgenden Befehl werden Kennworthashes in Ihrem Firmwareimage abgerufen. Ersetzen Sie die einzelnen Argumente durch den entsprechenden Wert für Ihre Ressourcengruppe, Ihr Abonnement, den Arbeitsbereichsnamen und die Firmware-ID.
Get-AzFirmwareAnalysisPasswordHash -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default
Zertifikate
Mit dem folgenden Befehl werden anfällige Kryptozertifikate abgerufen, die in Ihrem Firmwareimage gefunden wurden. Ersetzen Sie die einzelnen Argumente durch den entsprechenden Wert für Ihre Ressourcengruppe, Ihr Abonnement, den Arbeitsbereichsnamen und die Firmware-ID.
Get-AzFirmwareAnalysisCryptoCertificate -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default
Tasten
Der folgende Befehl ruft anfällige Kryptoschlüssel ab, die in Ihrem Firmwareimage gefunden wurden. Ersetzen Sie die einzelnen Argumente durch den entsprechenden Wert für Ihre Ressourcengruppe, Ihr Abonnement, den Arbeitsbereichsnamen und die Firmware-ID.
Get-AzFirmwareAnalysisCryptoKey -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default