AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / ubuntu / Perguntas / 1528418
Accepted
Håkon A. Hjortland
Håkon A. Hjortland
Asked: 2024-09-29 09:31:26 +0800 CST2024-09-29 09:31:26 +0800 CST 2024-09-29 09:31:26 +0800 CST

Como atualizar o firmware do Intel ME de forma segura?

  • 772

O firmware Intel ME (Management Engine) precisa ser atualizado de tempos em tempos. Infelizmente, a ferramenta de atualização geralmente é fornecida apenas como um executável do Windows. Algumas soluções alternativas pré-existentes para usuários do Linux são as seguintes:

  • Versões Linux da FWUpdLclferramenta de atualização estão disponíveis no fórum WinRAID , mas esta é uma fonte não oficial, então é difícil ter certeza absoluta sobre a segurança e adequação desses executáveis.
  • O Windows PE (Preinstallation Environment) pode ser iniciado a partir de um pen drive USB e o utilitário de atualização oficial pode ser executado dentro dele. O problema com isso é que o software proprietário terá acesso aos seus drives, à rede, etc., o que você pode não querer.

Existe alguma maneira de atualizar o firmware do Intel ME sem comprometer a segurança do meu computador?

updates
  • 1 1 respostas
  • 25 Views

1 respostas

  • Voted
  1. Best Answer
    Håkon A. Hjortland
    2024-09-29T09:31:26+08:002024-09-29T09:31:26+08:00

    Execute o WinPE em uma máquina virtual com passagem PCI

    Uma maneira de atualizar o firmware do Intel ME é executar o Windows PE (Preinstallation Environment) em uma máquina virtual e dar a ele acesso ao dispositivo Intel ME Interface (MEI / HECI) PCI no host. O firmware do Intel ME pode então ser atualizado de dentro deste ambiente.

    Características desta solução:

    • Usa um ISO oficial do Windows, não um CD ao vivo de algum lugar na internet
    • O software proprietário não terá acesso às suas unidades, à rede, etc., como aconteceria se fosse executado em bare metal.
    • A atualização do firmware é realizada dentro do seu sistema operacional Linux regular, ou seja, não há necessidade de inicializar a partir de um pen drive USB

    Aviso: O software proprietário terá acesso à Intel ME Interface (MEI / HECI). Não está claro que tipo de acesso isso dá ao sistema, mas poderia potencialmente dar acesso à RAM e a quaisquer unidades criptografadas em seus estados desbloqueados, já que esse é o nível de acesso que a Intel ME tem ao sistema. Então essa solução poderia ser potencialmente ainda menos segura do que executar a imagem do Windows em bare metal, já que as unidades não estariam em um estado desbloqueado nesse caso. Use por sua conta e risco. Esta passagem de um artigo da EFF pode ser relevante, no entanto: "O acesso AMT não é o mesmo que executar código ME arbitrário, então os invasores não podem acessar a memória do sistema diretamente; eles têm que usar o console, VNC ou imagens de inicialização do SO para atingir seus objetivos." Uma solução alternativa poderia ser inicializar o Ubuntu a partir de um pen drive USB e executar o WinPE em uma máquina virtual lá.

    A solução apresentada aqui foi testada em uma placa-mãe ASUS Pro WS W680-ACE com Ubuntu 24.04.

    Crie uma imagem do Windows PE

    Baixe os arquivos necessários

    • ISO oficial do Windows 11 (download gratuito)
    • Driver Intel ME Interface (MEI / HECI) para Windows para a placa-mãe específica
    • Ferramenta de atualização de firmware Intel ME para Windows para a placa-mãe específica

    Preparar arquivos (exemplo)

    mkdir overlay
    cp -ai motherboard/DRV_MEI_Intel_Corp_TP_W11_64_V2407.../Drivers/MEI/win10 overlay/driver-mei-win10
    cp -ai motherboard/MEUpdateTool_16.1.30.2307_TP overlay/
    

    Faça a imagem

    ./make-winpe
    

    Os diretórios pais da imagem precisam de configurações de permissão específicas para que o virt-manager possa acessar a imagem, então o script make-winpe cria um diretório /tmp/iso legível por todos e coloca a imagem lá.

    Execute a imagem em uma máquina virtual

    sudo apt install virt-manager
    virt-manager
    

    Configure uma máquina virtual no virt-manager:

    • Mídia de instalação: instalação manual
    • Habilitar armazenamento: Desligado
    • Personalizar configuração antes da instalação: Sim
    • Remova a NIC (não há necessidade de rede, então evite o risco de segurança)
    • Adicionar hardware: Armazenamento: /tmp/iso/winpe-intel-me.img, dispositivo de disco, USB, somente leitura
    • Adicionar hardware: dispositivo host PCI: controlador HECI
      • Leia mais sobre isso em PCI passthrough no virt-manager
    • Clique em "Iniciar instalação" ("Cancelar instalação" removerá a máquina virtual)

    Captura de tela do FWUpdLcl64.exe em execução no WinPE no virt-manager

    Captura de tela do FWUpdLcl64.exe em execução no WinPE no virt-manager

    Arquivos

    fazer-winpe

    Este script é baseado em https://wiki.archlinux.org/title/Windows_PE .

    #!/bin/bash
    set -e
    
    # Make a Windows PE (Preinstallation Environment) GPT + FAT32 image with firmware
    # update tools included.
    #
    # If the script crashes, use the following commands to clean up:
    # sudo umount /media/winimg /media/winpe /media/winpefat
    # sudo rmdir /media/winimg /media/winpe /media/winpefat
    # sudo losetup -l -a | grep -v /var/lib/snapd/
    # sudo losetup -d /dev/loopX
    # rm winpe.iso
    #
    # The script is based on <https://wiki.archlinux.org/title/Windows_PE>.
    
    ################################################################################
    # File locations
    win_iso='win11/Win11_22H2_EnglishInternational_x64v2.iso'
    overlay_dir='overlay'
    start_script='start_script.cmd'
    output_image='/tmp/iso/winpe-intel-me.img'
    ################################################################################
    
    if ! which -s mkwinpeimg mkisofs; then
      echo 'Please run the following command:' >&2
      echo 'sudo apt install wimtools genisoimage' >&2
      exit 1
    fi
    
    if [ "$output_image" != "${output_image#/tmp/iso/}" ]; then
      if [ ! -e /tmp/iso ]; then
        mkdir --mode=755 /tmp/iso
      fi
      if [ ! -d /tmp/iso -o "$(stat -c%U /tmp/iso)" != "$USER" ]; then
        echo '/tmp/iso must be a directory owned by user!' >&2
        exit 1
      fi
    fi
    
    rm -f -- "$output_image"
    if [ -e "$output_image" ]; then echo "Unable to remove $output_image!" >&2; exit 1; fi
    truncate --size=1G -- "$output_image"
    
    sudo mkdir /media/winimg
    sudo mkdir /media/winpe
    sudo mkdir /media/winpefat
    
    sudo mount --read-only -- "$win_iso" /media/winimg
    mkwinpeimg --iso --windows-dir=/media/winimg --overlay="$overlay_dir" \
      --start-script="$start_script" winpe.iso
    sudo mount --read-only winpe.iso /media/winpe
    
    loop="$(sudo losetup --find --show -- "$output_image")"
    if [ "$loop" = "${loop#/dev/loop}" ]; then echo 'Error creating loop device!' >&2; exit 1; fi
    sudo parted "$loop" \
      mklabel gpt \
      mkpart fat32 0% 100% \
      set 1 boot on \
      set 1 esp on
    sudo mkfs.fat -F 32 "${loop}p1"
    sudo mount -o uid="$USER" "${loop}p1" /media/winpefat
    
    cp -a /media/winpe/* /media/winpefat/
    cp -a /media/winimg/efi /media/winpefat/
    
    sudo umount /media/winimg
    sudo umount /media/winpe
    sudo umount /media/winpefat
    sudo losetup --detach "$loop"
    rm -f -- winpe.iso
    
    sudo rmdir /media/winimg
    sudo rmdir /media/winpe
    sudo rmdir /media/winpefat
    
    echo
    echo 'The UEFI-bootable WinPE image can be found here:'
    printf '%s\n' "$output_image"
    

    start_script.cmd

    @echo Loading Intel ME Interface (MEI / HECI) driver:
    @drvload \driver-mei-win10\heci.inf
    
    @echo.
    @echo ------------------------------------------------------------------------------
    @type \README.txt
    @echo ------------------------------------------------------------------------------
    @echo.
    
    @cd \MEUpdateTool*\FW
    @echo Type "exit" to shut down the computer.
    @echo.
    @cmd /k
    
    @REM Shut down the computer
    @wpeutil shutdown
    

    Converta o arquivo para o formato DOS (CRLF):

    unix2dos start_script.cmd
    

    sobreposição/README.txt

    To display the contents of this file:
    type \README.txt
    
    To show help, show current/new firmware version, update the Intel ME firmware:
    cd \MEUpdateTool*\FW
    FWUpdLcl64.exe -h
    FWUpdLcl64.exe -fwver
    FWUpdLcl64.exe -fwver ME.bin
    FWUpdLcl64.exe -f ME.bin
    

    Converta o arquivo para o formato DOS (CRLF):

    unix2dos overlay/README.txt
    
    • 0

relate perguntas

  • Como posso fazer com que o Ubuntu verifique se há atualizações com menos frequência?

  • Como habilito as atualizações automáticas?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Existe um comando para listar todos os usuários? Também para adicionar, excluir, modificar usuários, no terminal?

    • 9 respostas
  • Marko Smith

    Como excluir um diretório não vazio no Terminal?

    • 4 respostas
  • Marko Smith

    Como descompactar um arquivo zip do Terminal?

    • 9 respostas
  • Marko Smith

    Como instalo um arquivo .deb por meio da linha de comando?

    • 11 respostas
  • Marko Smith

    Como instalo um arquivo .tar.gz (ou .tar.bz2)?

    • 14 respostas
  • Marko Smith

    Como listar todos os pacotes instalados

    • 24 respostas
  • Martin Hope
    Flimm Como posso usar o docker sem sudo? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    led-Zepp Como faço para salvar a saída do terminal em um arquivo? 2014-02-15 11:49:07 +0800 CST
  • Martin Hope
    ubuntu-nerd Como descompactar um arquivo zip do Terminal? 2011-12-11 20:37:54 +0800 CST
  • Martin Hope
    TheXed Como instalo um arquivo .deb por meio da linha de comando? 2011-05-07 09:40:28 +0800 CST
  • Martin Hope
    Ivan Como listar todos os pacotes instalados 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    David Barry Como determino o tamanho total de um diretório (pasta) na linha de comando? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher "Os seguintes pacotes foram retidos:" Por que e como resolvo isso? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford Como os PPAs podem ser removidos? 2010-07-30 01:09:42 +0800 CST

Hot tag

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve