Szybki start: przekazywanie obrazów oprogramowania układowego do analizy oprogramowania układowego przy użyciu interfejsu wiersza polecenia platformy Azure

W tym artykule wyjaśniono, jak korzystać z interfejsu wiersza polecenia platformy Azure do przesyłania obrazów firmware do usługi analizy firmware.

Analiza oprogramowania układowego to narzędzie, które analizuje obrazy oprogramowania układowego i zapewnia zrozumienie luk w zabezpieczeniach na obrazach oprogramowania układowego.

Wymagania wstępne

Ten przewodnik zakłada podstawową wiedzę na temat analizy oprogramowania układowego. Aby uzyskać więcej informacji, zobacz Analiza oprogramowania układowego dla konstruktorów urządzeń. Aby uzyskać listę obsługiwanych systemów plików, zobacz Często zadawane pytania dotyczące analizy oprogramowania układowego.

Przygotuj środowisko dla Azure CLI

  • Zainstaluj interfejs wiersza polecenia Azure, aby uruchamiać polecenia CLI lokalnie. Jeśli korzystasz z systemu Windows lub macOS, rozważ uruchomienie interfejsu wiersza polecenia platformy Azure w kontenerze Docker. Aby uzyskać więcej informacji, zobacz Jak uruchomić interfejs wiersza polecenia platformy Azure w kontenerze platformy Docker.

  • Zaloguj się do interfejsu wiersza polecenia platformy Azure za pomocą polecenia az login. Wykonaj kroki wyświetlane w terminalu, aby zakończyć proces uwierzytelniania. Aby uzyskać inne opcje logowania, zobacz Logowanie się przy użyciu interfejsu wiersza polecenia platformy Azure.

  • Gdy pojawi się monit, zainstaluj rozszerzenie Azure CLI przy pierwszym użyciu. Aby uzyskać więcej informacji na temat rozszerzeń, zobacz Korzystanie z rozszerzeń w interfejsie wiersza polecenia platformy Azure.

    • Zainstaluj rozszerzenie analizy oprogramowania układowego, uruchamiając następujące polecenie:
      az extension add --name firmwareanalysis
      
  • Aby znaleźć zainstalowaną wersję i biblioteki zależne, uruchom polecenie az version. Aby przeprowadzić uaktualnienie do najnowszej wersji, uruchom polecenie az upgrade.

  • Wdróż swoją subskrypcję do usługi analizy oprogramowania układowego.

  • Wybierz odpowiedni identyfikator subskrypcji, do której chcesz przesłać obrazy oprogramowania układowego, za pomocą polecenia az account set.

Prześlij obraz oprogramowania układowego do obszaru roboczego

  1. Wygeneruj identyfikator GUID do użycia jako unikatowy identyfikator oprogramowania układowego. Przykład:

    python -c "import uuid; print(uuid.uuid4())"
    

Użyj danych wyjściowych polecenia jako identyfikatora oprogramowania układowego w kolejnych przykładach

  1. Utwórz obraz oprogramowania układowego do przesłania. Wstaw nazwę grupy zasobów, identyfikator subskrypcji i nazwę obszaru roboczego do odpowiednich parametrów.

    az firmwareanalysis firmware create --resource-group myResourceGroup --subscription 123e4567-e89b-12d3-a456-426614174000 --workspace-name default --firmware-id {firmware ID from command above} --vendor {vendor name} --model {model name} --version {version number}
    

Wynik działania tego polecenia zawiera właściwość name, która jest identyfikatorem oprogramowania układowego. Zapisz ten identyfikator dla następnego polecenia.

  1. Wygeneruj adres URL SAS, którego użyjesz w następnym kroku, aby wysłać obraz oprogramowania układowego do usługi Azure Storage. Zastąp sampleFirmwareID identyfikatorem oprogramowania układowego zapisanym w poprzednim kroku. Adres URL SAS można zapisać w zmiennej, aby ułatwić dostęp na potrzeby przyszłych poleceń:

    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
    
  2. Przekaż obraz oprogramowania układowego do usługi Azure Storage. Zastąp element pathToFile ścieżką do obrazu oprogramowania układowego na komputerze lokalnym.

    az storage blob upload -f "pathToFile" --blob-url %sasURL%
    

Oto przykładowy przepływ pracy, w jaki sposób można użyć tych poleceń do utworzenia i przekazania obrazu oprogramowania układowego. Aby dowiedzieć się więcej na temat używania zmiennych w poleceniach interfejsu wiersza polecenia, odwiedź stronę How to use variables in Azure CLI commands (Jak używać zmiennych w poleceniach interfejsu wiersza polecenia platformy Azure):

set filePath="/path/to/image"
set resourceGroup="myResourceGroup"
set subscription="123e4567-e89b-12d3-a456-426614174000"
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% --subscription %subscription% --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% --subscription %subscription% --workspace-name %workspace% --firmware-id %FWID% --query "url"') do set URL=%i

az storage blob upload -f %filePath% --blob-url %URL%

Pobieranie wyników analizy oprogramowania układowego

Aby pobrać wyniki analizy oprogramowania układowego, upewnij się, że stan analizy to "Gotowe":

az firmwareanalysis firmware show --firmware-id sampleFirmwareID --resource-group myResourceGroup --subscription 123e4567-e89b-12d3-a456-426614174000 --workspace-name default

Wyszukaj pole "status", aby wyświetlić komunikat "Gotowe", a następnie uruchom następujące polecenia, aby pobrać wyniki analizy oprogramowania układowego.

Jeśli chcesz zautomatyzować proces sprawdzania stanu analizy, możesz użyć az resource wait polecenia .

Polecenie az resource wait ma parametr --timeout, określający czas w sekundach, po upływie którego analiza zakończy się, jeśli wartość „status” nie osiągnie stanu „Ready” przed upływem limitu czasu. Domyślny limit czasu to 3600, czyli jedna godzina. Analizowanie dużych obrazów może trwać dłużej, więc można ustawić limit czasu przy użyciu parametru --timeout zgodnie z potrzebami. Oto przykład użycia az resource wait polecenia z parametrem --timeout w celu zautomatyzowania sprawdzania stanu analizy, przy założeniu, że utworzono już oprogramowanie układowe i zapisano identyfikator oprogramowania układowego w zmiennej o nazwie $FWID:

set resourceGroup="myResourceGroup"
set subscription="123e4567-e89b-12d3-a456-426614174000"
set workspace="default"
set FWID="yourFirmwareID"

for /f "tokens=*" %i in ('az firmwareanalysis firmware show --resource-group %resourceGroup% --subscription %subscription% --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%

Po potwierdzeniu, że stan analizy to "Gotowe", możesz uruchomić polecenia, aby ściągnąć wyniki.

Podsumowanie oprogramowania sprzętowego

Następujące polecenie pobiera ogólne podsumowanie wyników analizy oprogramowania układowego. Zastąp każdy argument odpowiednią wartością dla grupy zasobów, subskrypcji, nazwy obszaru roboczego i identyfikatora oprogramowania układowego.

az firmwareanalysis firmware summary --resource-group myResourceGroup --subscription 123e4567-e89b-12d3-a456-426614174000 --workspace-name default --firmware-id sampleFirmwareID --name Firmware

SBOM

Poniższe polecenie pobiera SBOM z obrazu oprogramowania układowego. Zastąp każdy argument odpowiednią wartością dla grupy zasobów, subskrypcji, nazwy obszaru roboczego i identyfikatora oprogramowania układowego.

az firmwareanalysis firmware sbom-component --resource-group myResourceGroup --subscription 123e4567-e89b-12d3-a456-426614174000 --workspace-name default --firmware-id sampleFirmwareID

Wady

Następujące polecenie pobiera identyfikatory CVE znalezione w obrazie Twojego oprogramowania układowego. Zastąp każdy argument odpowiednią wartością dla grupy zasobów, subskrypcji, nazwy obszaru roboczego i identyfikatora firmware.

az firmwareanalysis firmware cve --resource-group myResourceGroup --subscription 123e4567-e89b-12d3-a456-426614174000 --workspace-name default --firmware-id sampleFirmwareID

Aby uzyskać podsumowanie CVEs, uruchom następujące polecenie:

az firmwareanalysis firmware summary --resource-group myResourceGroup --subscription 123e4567-e89b-12d3-a456-426614174000 --workspace-name default --firmware-id sampleFirmwareID --name CVE

Wzmacnianie zabezpieczeń binarnych

Poniższe polecenie pobiera wyniki analizy dotyczącej utwardzania plików binarnych w obrazie oprogramowania układowego. Zastąp każdy argument odpowiednimi wartościami dla grupy zasobów, subskrypcji, nazwy obszaru roboczego i identyfikatora firmware’u.

az firmwareanalysis firmware binary-hardening --resource-group myResourceGroup --subscription 123e4567-e89b-12d3-a456-426614174000 --workspace-name default --firmware-id sampleFirmwareID

Aby uzyskać podsumowanie wyników wzmacniania zabezpieczeń binarnych, uruchom następujące polecenie:

az firmwareanalysis firmware summary --resource-group myResourceGroup --subscription 123e4567-e89b-12d3-a456-426614174000 --workspace-name default --firmware-id sampleFirmwareID --name BinaryHardening

Skróty haseł

Poniższe polecenie wyodrębnia skróty haseł z obrazu oprogramowania układowego. Zastąp każdy argument wartością odpowiednią dla grupy zasobów, subskrypcji, nazwy obszaru roboczego i identyfikatora oprogramowania układowego.

az firmwareanalysis firmware password-hash --resource-group myResourceGroup --subscription 123e4567-e89b-12d3-a456-426614174000 --workspace-name default --firmware-id sampleFirmwareID

Certyfikaty

Następujące polecenie pobiera podatne certyfikaty kryptograficzne znalezione w obrazie oprogramowania układowego. Zastąp każdy argument odpowiednią wartością dla grupy zasobów, subskrypcji, nazwy obszaru roboczego i identyfikatora oprogramowania sprzętowego.

az firmwareanalysis firmware crypto-certificate --resource-group myResourceGroup --subscription 123e4567-e89b-12d3-a456-426614174000 --workspace-name default --firmware-id sampleFirmwareID

Aby uzyskać podsumowanie certyfikatów, uruchom następujące polecenie:

az firmwareanalysis firmware summary --resource-group myResourceGroup --subscription 123e4567-e89b-12d3-a456-426614174000 --workspace-name default --firmware-id sampleFirmwareID --name CryptoCertificate

Klucze

Następujące polecenie pobiera wrażliwe klucze kryptograficzne, które zostały znalezione na obrazie oprogramowania układowego. Zastąp każdy argument odpowiednią wartością dla grupy zasobów, subskrypcji, nazwy obszaru roboczego i identyfikatora firmware.

az firmwareanalysis firmware crypto-key --resource-group myResourceGroup --subscription 123e4567-e89b-12d3-a456-426614174000 --workspace-name default --firmware-id sampleFirmwareID

Aby uzyskać podsumowanie kluczy, uruchom następujące polecenie:

az firmwareanalysis firmware summary --resource-group myResourceGroup --subscription 123e4567-e89b-12d3-a456-426614174000 --workspace-name default --firmware-id sampleFirmwareID --name CryptoKey