Compartir vía


Inicio rápido: Carga de imágenes de firmware en el análisis de firmware mediante Azure PowerShell

En este artículo se explica cómo utilizar Azure PowerShell para cargar imágenes de firmware en el análisis de firmware.

Análisis de firmware es una herramienta que analiza las imágenes de firmware y proporciona una comprensión de las vulnerabilidades de seguridad en las imágenes de firmware.

Requisitos previos

En esta guía de inicio rápido se da por supuesto un conocimiento básico del análisis de firmware. Para más información, consulte Análisis de firmware para generadores de dispositivos. Para obtener una lista de los sistemas de archivos compatibles, consulte Preguntas más frecuentes acerca del Análisis de Firmware.

Preparar el entorno para Azure PowerShell

  1. Instale Azure PowerShell o Use Azure Cloud Shell.

  2. Inicie sesión en Azure PowerShell mediante la ejecución del comando Connect-AzAccount. Omita este paso si usa Cloud Shell.

  3. Si es la primera vez que utiliza Azure PowerShell para el análisis de Firmware, instale la extensión:

    Find-Module -Name Az.FirmwareAnalysis | Install-Module
    
  4. Incorporación de la suscripción para usar el análisis de firmware.

  5. Ejecute Set-AzContext para establecer la suscripción que se usará en la sesión actual. Seleccione la suscripción en la que desea cargar las imágenes de firmware.

Cargar una imagen de firmware en el área de trabajo

  1. Cree una imagen de firmware que se va a cargar. Inserte el nombre del grupo de recursos, el nombre del área de trabajo y los detalles adicionales sobre la imagen de firmware que quiera incluir en los parámetros respectivos, como Description, FileName, Vendor, Model o Version.

    New-AzFirmwareAnalysisFirmware -ResourceGroupName myResourceGroup -WorkspaceName default -Description 'sample description' -FileName file -Vendor vendor -Model model -Version version
    

La salida de este comando incluye una propiedad Name, que es el id. de firmware. Guarde este id. para el siguiente comando.

  1. Genere una dirección URL de SAS que usará en el siguiente paso para enviar la imagen de firmware a Azure Storage. Reemplace sampleFirmwareID por el id. de firmware que guardó del paso anterior. Puede almacenar la dirección URL de SAS en una variable para facilitar el acceso a los comandos futuros:

    $sasUrl = New-AzFirmwareAnalysisWorkspaceUploadUrl -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default
    
  2. Use el siguiente script para cargar la imagen de firmware en Azure Storage. Reemplace "pathToFile" por la ruta de acceso a la imagen de firmware en el equipo local. Encierre la ruta de acceso entre comillas.

    $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
    

Este es un flujo de trabajo de ejemplo de un extremo a otro de cómo podría usar los comandos de Azure PowerShell para crear y cargar una imagen de firmware. Reemplace los valores de las variables establecidas al principio para reflejar el entorno.

$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

Recuperar los resultados del análisis de firmware

Para recuperar los resultados del análisis de firmware, debe asegurarse de que el estado del análisis sea "Listo". Reemplace sampleFirmwareID por el id. de firmware, myResourceGroup por el nombre del grupo de recursos y default por el nombre del área de trabajo:

Get-AzFirmwareAnalysisFirmware -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default

Busque el campo "estado" para mostrar "Listo" y, a continuación, ejecute los comandos respectivos para recuperar los resultados del análisis de firmware.

Si desea automatizar el proceso de comprobación del estado del análisis, puede usar el siguiente script para comprobar el estado del recurso periódicamente hasta que llegue a "Listo". Puede establecer la variable $timeoutInSeconds en función del tamaño de la imagen: las imágenes más grandes pueden tardar más tiempo en analizarse, por lo que puede ajustar esta variable según sus necesidades.

$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

El siguiente comando recupera el SBOM en la imagen de firmware. Reemplace cada argumento por el valor adecuado para el grupo de recursos, la suscripción, el nombre del área de trabajo y el id. de firmware.

Get-AzFirmwareAnalysisSbomComponent -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default

Puntos débiles

El siguiente comando recupera los CVE que se encuentran en la imagen de firmware. Reemplace cada argumento por el valor adecuado para el grupo de recursos, la suscripción, el nombre del área de trabajo y el id. de firmware.

Get-AzFirmwareAnalysisCve -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default 

Protección binaria

El comando siguiente recupera los resultados del análisis sobre la protección binaria en la imagen de firmware. Reemplace cada argumento por el valor adecuado para el grupo de recursos, la suscripción, el nombre del área de trabajo y el id. de firmware.

Get-AzFirmwareAnalysisBinaryHardening -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default 

Valores hash de contraseñas

El comando siguiente recupera los hash de contraseña en la imagen de firmware. Reemplace cada argumento por el valor adecuado para el grupo de recursos, la suscripción, el nombre del área de trabajo y el id. de firmware.

Get-AzFirmwareAnalysisPasswordHash -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default 

Certificados

El siguiente comando recupera los certificados criptográficos vulnerables que se encontraron en la imagen de firmware. Reemplace cada argumento por el valor adecuado para el grupo de recursos, la suscripción, el nombre del área de trabajo y el id. de firmware.

Get-AzFirmwareAnalysisCryptoCertificate -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default 

Claves

El comando siguiente recupera las claves criptográficas vulnerables que se encontraron en la imagen de firmware. Reemplace cada argumento por el valor adecuado para el grupo de recursos, la suscripción, el nombre del área de trabajo y el id. de firmware.

Get-AzFirmwareAnalysisCryptoKey -FirmwareId sampleFirmwareID -ResourceGroupName myResourceGroup -WorkspaceName default