Guida introduttiva: Caricare immagini del firmware nell'analisi del firmware con l'interfaccia della riga di comando di Azure
Questo articolo illustra come usare l'interfaccia della riga di comando di Azure 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 l'interfaccia della riga di comando di Azure
Installare l'interfaccia della riga di comando di Azure per eseguire i comandi dell'interfaccia della riga di comando in locale. Per l'esecuzione in Windows o macOS, è consigliabile eseguire l'interfaccia della riga di comando di Azure in un contenitore Docker. Per altre informazioni, vedere Come eseguire l'interfaccia della riga di comando di Azure in un contenitore Docker.
Accedere all'interfaccia della riga di comando di Azure usando il comando az login. Seguire i passaggi visualizzati nel terminale per completare il processo di autenticazione. Per altre opzioni di accesso, vedere Accedere tramite l'interfaccia della riga di comando di Azure.
Quando richiesto, al primo utilizzo installare l'estensione dell'interfaccia della riga di comando di Azure. Per altre informazioni sulle estensioni, vedere Usare le estensioni con l'interfaccia della riga di comando di Azure.
- Installare l'estensione di analisi del firmware eseguendo il comando seguente:
az extension add --name firmwareanalysis
- Installare l'estensione di analisi del firmware eseguendo il comando seguente:
Per trovare la versione e le librerie dipendenti installate, eseguire il comando az version. Per eseguire l'aggiornamento alla versione più recente, eseguire il comando az upgrade.
Eseguire l'onboarding della sottoscrizione nell'analisi del firmware.
Selezionare l'ID sottoscrizione appropriato in cui si vuole caricare le immagini del firmware eseguendo il comando az account set.
Caricare un'immagine del firmware nell'area di lavoro
Creare un'immagine del firmware da caricare. Inserire il nome del gruppo di risorse, l'ID sottoscrizione e il nome dell'area di lavoro nei rispettivi parametri.
az firmwareanalysis firmware create --resource-group myResourceGroup --subscription 123e4567-e89b-12d3-a456-426614174000 --workspace-name default
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:set resourceGroup=myResourceGroup set subscription=123e4567-e89b-12d3-a456-426614174000 set workspace=default set firmwareID=sampleFirmwareID for /f "tokens=*" %i in ('az firmwareanalysis workspace generate-upload-url --resource-group %resourceGroup% --subscription %subscription% --workspace-name %workspace% --firmware-id %firmwareID% --query "url"') do set sasURL=%i
Caricare l'immagine del firmware in Archiviazione di Azure. Sostituire
pathToFile
con il percorso dell'immagine del firmware nel computer locale.az storage blob upload -f "pathToFile" --blob-url %sasURL%
Ecco un flusso di lavoro di esempio di come è possibile usare questi comandi per creare e caricare un'immagine del firmware. Per altre informazioni sull'uso delle variabili nei comandi dell'interfaccia della riga di comando, vedere Come usare le variabili nei comandi dell'interfaccia della riga di comando di Azure:
set filePath="/path/to/image"
set resourceGroup="myResourceGroup"
set workspace="default"
set fileName="file1"
set vendor="vendor1"
set model="model"
set version="test"
for /f "tokens=*" %i in ('az firmwareanalysis firmware create --resource-group %resourceGroup% --workspace-name %workspace% --file-name %fileName% --vendor %vendor% --model %model% --version %version% --query "name"') do set FWID=%i
for /f "tokens=*" %i in ('az firmwareanalysis workspace generate-upload-url --resource-group %resourceGroup% --workspace-name %workspace% --firmware-id %FWID% --query "url"') do set URL=%i
az storage blob upload -f %filePath% --blob-url %URL%
Recuperare i risultati dell'analisi del firmware
Per recuperare i risultati dell'analisi del firmware, è necessario assicurarsi che lo stato dell'analisi sia "Pronto":
az firmwareanalysis firmware show --firmware-id sampleFirmwareID --resource-group myResourceGroup --workspace-name default
Cercare il campo "status" per visualizzare "Ready", quindi eseguire i comandi seguenti per recuperare i risultati dell'analisi del firmware.
Se si vuole automatizzare il processo di controllo dello stato dell'analisi, è possibile usare il az resource wait
comando .
Il az resource wait
comando ha un --timeout
parametro, ovvero il tempo in secondi in cui l'analisi terminerà se "status" non raggiunge "Ready" entro l'intervallo di timeout. Il timeout predefinito è 3600, ovvero un'ora. Le immagini di grandi dimensioni possono richiedere più tempo per l'analisi, quindi è possibile impostare il timeout usando il --timeout
parametro in base alle proprie esigenze. Di seguito è riportato un esempio di come usare il comando con il az resource wait
--timeout
parametro per automatizzare il controllo dello stato dell'analisi, presupponendo che sia già stato creato un firmware e archiviato l'ID firmware in una variabile denominata $FWID
:
set resourceGroup="myResourceGroup"
set workspace="default"
set FWID="yourFirmwareID"
for /f "tokens=*" %i in ('az firmwareanalysis firmware show --resource-group %resourceGroup% --workspace-name %workspace% --firmware-id %FWID% --query "id"') do set ID=%i
echo Successfully created a firmware image with the firmware ID of %FWID%, recognized in Azure by this resource ID: %ID%.
for /f "tokens=*" %i in ('az resource wait --ids %ID% --custom "properties.status=='Ready'" --timeout 10800') do set WAIT=%i
for /f "tokens=*" %i in ('az resource show --ids %ID% --query "properties.status"') do set STATUS=%i
echo Firmware analysis completed with status: %STATUS%
Dopo aver confermato che lo stato dell'analisi è "Pronto", è possibile eseguire i comandi per eseguire il pull dei risultati.
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.
az firmwareanalysis firmware sbom-component --resource-group myResourceGroup --subscription 123e4567-e89b-12d3-a456-426614174000 --workspace-name default --firmware-id sampleFirmwareID
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.
az firmwareanalysis firmware cve --resource-group myResourceGroup --subscription 123e4567-e89b-12d3-a456-426614174000 --workspace-name default --firmware-id sampleFirmwareID
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.
az firmwareanalysis firmware binary-hardening --resource-group myResourceGroup --subscription 123e4567-e89b-12d3-a456-426614174000 --workspace-name default --firmware-id sampleFirmwareID
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.
az firmwareanalysis firmware password-hash --resource-group myResourceGroup --subscription 123e4567-e89b-12d3-a456-426614174000 --workspace-name default --firmware-id sampleFirmwareID
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.
az firmwareanalysis firmware crypto-certificate --resource-group myResourceGroup --subscription 123e4567-e89b-12d3-a456-426614174000 --workspace-name default --firmware-id sampleFirmwareID
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.
az firmwareanalysis firmware crypto-key --resource-group myResourceGroup --subscription 123e4567-e89b-12d3-a456-426614174000 --workspace-name default --firmware-id sampleFirmwareID