Verificando o binário do firmware OpenWrt

A internet atual é um ambiente de alta ameaça. Em particular, ataques à cadeia de suprimentos, nos quais um invasor compromete o processo de download de software e atualizações, são frequentes. Portanto, é importante verificar completamente qualquer software que você baixar antes de instalá-lo e usá-lo.

Fazer isso para o OpenWrt requer a compreensão da organização do servidor web que fornece os binários que você instala. Usando a versão 21.02.0 para o x86-64 como exemplo, a estrutura é:

A chave de assinatura 21.02.0 verifica a assinatura no arquivo sha256sums.asc. A assinatura no arquivo sha256sums.asc verifica a integridade do arquivo sha256sums. O hash SHA256 no arquivo sha256sums verifica a integridade dos arquivos individuais no diretório 64. O mesmo se aplica a todas as outras arquiteturas suportadas. Observe que as URLs acima são todas https: e não http: - alguns dos links relevantes em https://openwrt.org são http:, mas se você encontrar um, deve alterá-lo para https: antes de usar a URL. Conexões http: são vulneráveis ​​a interceptação e corrupção.

Para verificar completamente um arquivo de firmware, é necessário baixar:

  • O próprio arquivo de firmware
  • O arquivo shasums
  • O arquivo sha256sums.asc
  • A chave de assinatura pública

As etapas são:

  • Verificar a assinatura do arquivo sha256sums.
  • Use o arquivo sha256sums para verificar o hash SHA256 do arquivo de firmware.

Se você assumir que não foi vítima de um ataque à cadeia de suprimentos e que ninguém comprometeu o site downloads.openwrt.org ou sua conexão com ele, é possível realizar uma verificação parcial omitindo a verificação de assinatura. Isso não é recomendado.

Se a verificação de assinatura falhar ou se os hashes SHA256 não corresponderem, não atualize o firmware baixado. Seu download pode estar corrompido e bloquear seu roteador, ou pode ser malware e expor sua rede a ransomware.

Para obter a chave GPG correta, consulte Chaves públicas e impressões digitais GPG do OpenWrt

Observe que as versões 23.05 são assinadas com a “Chave PGP para compilações de snapshots autônomas (obsoleta)”.

# Download files
cd /tmp
curl --progress-bar -o openwrt-21.02.0-x86-64-generic-squashfs-combined.img.gz \
    https://downloads.openwrt.org/releases/21.02.0/targets/x86/64/openwrt-21.02.0-x86-64-generic-squashfs-combined.img.gz
curl --progress-bar -o sha256sums \
    https://downloads.openwrt.org/releases/21.02.0/targets/x86/64/sha256sums
curl --progress-bar -o sha256sums.asc \
    https://downloads.openwrt.org/releases/21.02.0/targets/x86/64/sha256sums.asc
 
# Import GPG public key
gpg --receive-keys 88CA59E88F681580
 
# Check GPG public key fingerprint
gpg --fingerprint 88CA59E88F681580
 
# Verify GPG signature
gpg --status-fd 1 --with-fingerprint --verify sha256sums.asc sha256sums 2>&1 | grep -e Good
 
# Verify SHA256 checksums
sha256sum --ignore-missing -c sha256sums 2> /dev/null | grep -e OK

Para sistemas Linux, existe um script chamado download-check-artifact.sh que automatiza o processo. Certifique-se de especificar a URL usando HTTPS. Além disso, edite o script antes de executá-lo e substitua o descontinuado sks-keyservers.net por keyserver.ubuntu.com ou keys.openpgp.org ou pgp.mit.edu.

Aqui está uma gravação editada de uma sessão usando o script após adicionar a chave de assinatura pública ao chaveiro:

# download-check-artifact.sh https://downloads.openwrt.org/releases/21.02.0/targets/x86/64/openwrt-21.02.0-x86-64-generic-squashfs-combined.img.gz

1) Downloading image file
=========================
[progress bar]
2) Downloading checksum file
============================
[progress bar]
3) Downloading the GPG signature
================================
[progress bar]
4) Verifying GPG signature
==========================
gpg: Signature made Thu Sep  2 09:39:21 2021 MSK
gpg:                using RSA key 667205E379BAF348863A5C6688CA59E88F681580
gpg: Good signature from "OpenWrt Build System (PGP key for 21.02 release builds) <pgpsign-21.02@openwrt.org>" [ultimate]
Primary key fingerprint: 6672 05E3 79BA F348 863A  5C66 88CA 59E8 8F68 1580

5) Verifying SHA256 checksum
============================
openwrt-21.02.0-x86-64-generic-squashfs-combined.img.gz: OK

Verification done!
==================
Firmware image placed in '~/Downloads/OpenWrt/openwrt-21.02.0-x86-64-generic-squashfs-combined.img.gz'.

Cleaning up.

Se o script retornar um código de erro, verifique o código-fonte para obter uma explicação da causa do erro.

Veja também: Verificando a assinatura GPG

As somas de verificação são armazenadas na visualização de pastas da página do servidor de download. Obtenha-as seguindo estes passos:

  1. Remova tudo o que estiver após a última / e abra a URL no seu navegador, por exemplo, https://downloads.openwrt.org/releases/21.02.0/targets/x86/64/
  2. Encontre o arquivo que você baixou. A string na coluna sha256sum é a soma de verificação, por exemplo, c41212b58775686ad5ed38904c0798899e6b664e9856c48831f1efce85f09824

Software para verificar somas de verificação:

  • As versões mais recentes do Windows possuem uma ferramenta integrada para calcular somas de verificação sha256, chamada certutil, mas ela não possui uma interface gráfica de usuário, então teremos que usar a linha de comando para interagir com ela.
  • Versões mais antigas do Windows precisam baixar uma ferramenta sha256, por exemplo, Utilitário de Verificação de Soma MD5 e SHA (a versão gratuita).

Para usar o certutil integrado:

  1. Clique no ícone do Windows, digite “cmd” e pressione Enter.
  2. Execute (assumindo que você baixou o arquivo para a pasta Downloads):
    certutil -hashfile "%USERPROFILE%\Downloads\openwrt-file-name-here" sha256
  3. Isso imprimirá um checksum como este (nome do arquivo seguido por uma string com letras e números),
    SHA256-Hash do arquivo C:\Usuários\NOME DE USUÁRIO\Downloads\openwrt-21.02.0-x86-64-generic-squashfs-combined.img.gz:
    c4 12 12 b5 87 75 68 6a d5 ed 38 90 4c 07 98 89 9e 6b 66 4e 98 56 c4 88 31 f1 ef ce 85 f0 98 24
  4. Remova os espaços da saída deste checksum, por exemplo: Usando a função replace no bloco de notas:
    c41212b58775686ad5ed38904c0798899e6b664e9856c48831f1efce85f09824
  5. Verifique se a string de checksum sem espaços em branco corresponde àquela que você encontra no campo sha256sums na página de download que você acessou seguindo as instruções acima.

Veja também: Verificando a assinatura GPG

As somas de verificação são armazenadas na visualização de pastas da página do servidor de download. Obtenha-as seguindo estes passos:

  1. Remova tudo após a última / e abra a URL no seu navegador, por exemplo, https://downloads.openwrt.org/releases/21.02.0/targets/x86/64/
  2. Encontre o arquivo que você baixou. A string na coluna sha256sum é a soma de verificação, por exemplo, c41212b58775686ad5ed38904c0798899e6b664e9856c48831f1efce85f09824

O Mac possui uma ferramenta integrada para verificar somas sha256, mas não possui interface gráfica, então teremos que usar o Terminal para interagir com ela.

  1. Clique no ícone do Finder no Dock.
  2. Clique em Aplicativos na lista de Favoritos.
  3. Encontre a pasta Utilitários e clique para abri-la.
  4. Localize o Terminal e clique duas vezes no ícone para abrir o programa.
  5. Localize o Terminal e clique duas vezes no ícone para abrir o programa. - Abra uma janela de terminal e execute (supondo que você baixou o arquivo na área de trabalho):
    shasum -a 256 ./Desktop/file-name-here
  6. Ele exibirá algo assim (string com letras e números seguidos do nome do arquivo):
    c41212b58775686ad5ed38904c0798899e6b664e9856c48831f1efce85f09824
    openwrt-21.02.0-x86-64-generic-squashfs-combined.img.gz
  7. Verifique se a string de soma de verificação corresponde à que você encontra no campo sha256sums na página de download que você acessou seguindo as instruções acima.
This website uses cookies. By using the website, you agree with storing cookies on your computer. Also you acknowledge that you have read and understand our Privacy Policy. If you do not agree leave the website.More information about cookies
  • Last modified: 2025/07/08 00:18
  • by marcomangini