Table of Contents

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:

As etapas são:

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.

Linux

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.

Windows

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:

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.

macOS

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.