Condividi tramite


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

  1. Installare Azure PowerShell o usare Azure Cloud Shell.

  2. Accedere ad Azure PowerShell eseguendo il comando Connect-AzAccount. Ignorare questo passaggio se si usa Cloud Shell.

  3. Se si tratta del primo uso di Azure PowerShell per l'analisi del firmware, installare l'estensione :

    Find-Module -Name Az.FirmwareAnalysis | Install-Module
    
  4. Eseguire l'onboarding della sottoscrizione nell'analisi del firmware.

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

  1. 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, FileNameVendor, Model, o Version.

    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.

  1. 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
    
  2. 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