Guida introduttiva: Caricare immagini del firmware nell'analisi del firmware con Azure PowerShell
Questo articolo illustra come usare Azure PowerShell per caricare immagini del firmware nell'analisi del firmware.
L'analisi del firmware è uno strumento che analizza le immagini del firmware e fornisce informazioni sulle vulnerabilità di sicurezza nelle immagini del firmware.
Prerequisiti
Questa guida introduttiva presuppone una conoscenza di base dell'analisi del firmware. Per altre informazioni, vedere Analisi del firmware per i costruttori di dispositivi Per un elenco dei file system supportati, vedere Domande frequenti sull'analisi del firmware.
Preparare l'ambiente per Azure PowerShell
Accedere ad Azure PowerShell eseguendo il comando Connect-AzAccount. Ignorare questo passaggio se si usa Cloud Shell.
Se si tratta del primo uso di Azure PowerShell per l'analisi del firmware, installare l'estensione :
Find-Module -Name Az.FirmwareAnalysis | Install-Module
Eseguire l'onboarding della sottoscrizione nell'analisi del firmware.
Eseguire Set-AzContext per impostare la sottoscrizione da usare nella sessione corrente. Selezionare la sottoscrizione in cui si vogliono caricare le immagini del firmware.
Caricare un'immagine del firmware nell'area di lavoro
Creare un'immagine del firmware da caricare. Inserire il nome del gruppo di risorse, il nome dell'area di lavoro e eventuali dettagli aggiuntivi sull'immagine del firmware da includere nei rispettivi parametri, ad esempio
Description
,FileName
Vendor
,Model
, oVersion
.New-AzFirmwareAnalysisFirmware -ResourceGroupName myResourceGroup -WorkspaceName default -Description 'sample description' -FileName file -Vendor vendor -Model model -Version version
L'output di questo comando include una Name
proprietà, ovvero l'ID firmware. Salvare questo ID per il comando successivo.
Generare un URL di firma di accesso condiviso che verrà usato nel passaggio successivo per inviare l'immagine del firmware a Archiviazione di Azure. Sostituire
sampleFirmwareID
con l'ID firmware salvato dal passaggio precedente. È possibile archiviare l'URL della firma di accesso condiviso in una variabile per semplificare l'accesso ai comandi futuri:$sasUrl = New-AzFirmwareAnalysisWorkspaceUploadUrl -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default
Usare lo script seguente per caricare l'immagine del firmware in Archiviazione di Azure. Sostituire '
pathToFile
' con il percorso dell'immagine del firmware nel computer locale. Eseguire il wrapping del percorso tra virgolette.$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
Di seguito è riportato un flusso di lavoro di esempio dalla fine alla fine del modo in cui è possibile usare i comandi di Azure PowerShell per creare e caricare un'immagine del firmware. Sostituire i valori per le variabili impostate all'inizio per riflettere l'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
Recuperare i risultati dell'analisi del firmware
Per recuperare i risultati dell'analisi del firmware, è necessario assicurarsi che lo stato dell'analisi sia "Pronto". Sostituire sampleFirmwareID
con l'ID firmware, myResourceGroup
con il nome del gruppo di risorse e default
con il nome dell'area di lavoro:
Get-AzFirmwareAnalysisFirmware -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default
Cercare il campo "status" per visualizzare "Ready", quindi eseguire i rispettivi comandi per recuperare i risultati dell'analisi del firmware.
Se si vuole automatizzare il processo di controllo dello stato dell'analisi, è possibile usare lo script seguente per controllare periodicamente lo stato della risorsa fino a quando non raggiunge "Pronto". È possibile impostare la $timeoutInSeconds
variabile in base alle dimensioni dell'immagine. Le immagini più grandi potrebbero richiedere più tempo per l'analisi, quindi modificare questa variabile in base alle esigenze.
$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
Il comando seguente recupera lo SBOM nell'immagine del firmware. Sostituire ogni argomento con il valore appropriato per il gruppo di risorse, la sottoscrizione, il nome dell'area di lavoro e l'ID firmware.
Get-AzFirmwareAnalysisSbomComponent -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default
Punti di debolezza
Il comando seguente recupera le CVE trovate nell'immagine del firmware. Sostituire ogni argomento con il valore appropriato per il gruppo di risorse, la sottoscrizione, il nome dell'area di lavoro e l'ID firmware.
Get-AzFirmwareAnalysisCve -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default
Protezione avanzata binaria
Il comando seguente recupera i risultati dell'analisi sulla protezione avanzata binaria nell'immagine del firmware. Sostituire ogni argomento con il valore appropriato per il gruppo di risorse, la sottoscrizione, il nome dell'area di lavoro e l'ID firmware.
Get-AzFirmwareAnalysisBinaryHardening -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default
Hash delle password
Il comando seguente recupera gli hash delle password nell'immagine del firmware. Sostituire ogni argomento con il valore appropriato per il gruppo di risorse, la sottoscrizione, il nome dell'area di lavoro e l'ID firmware.
Get-AzFirmwareAnalysisPasswordHash -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default
Certificati
Il comando seguente recupera i certificati di crittografia vulnerabili trovati nell'immagine del firmware. Sostituire ogni argomento con il valore appropriato per il gruppo di risorse, la sottoscrizione, il nome dell'area di lavoro e l'ID firmware.
Get-AzFirmwareAnalysisCryptoCertificate -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default
Chiavi
Il comando seguente recupera le chiavi di crittografia vulnerabili trovate nell'immagine del firmware. Sostituire ogni argomento con il valore appropriato per il gruppo di risorse, la sottoscrizione, il nome dell'area di lavoro e l'ID firmware.
Get-AzFirmwareAnalysisCryptoKey -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default